Node.js,Express環境でAurelia.jsを動かしてみる–その3
Node.js,Express環境でAurelia.jsを動かしてみる–その1
Node.js,Express環境でAurelia.jsを動かしてみる–その2
その1とその2でAurelia.jsをローカル環境で実行し、本番用のバンドルファイルを作成するところまでやりました。
今回はNode.js
のWebアプリケーションフレームワークであるExpress
を実装してみたいと思います。
最終的にHerokuというクラウドアプリケーションプラットフォームにファイルをアップするのでその前提で説明します。
参考⇒heroku
Expressをインストール
Node.jsはインストール済の前提です。
参考⇒[Node.js]node.jsのインストールとnpmの使い方の簡単な説明
npm
でpackage.json
のdependencies
に追加します。
npm install express --save
Express application generator(今回は使用しません)
⇒Express application generator
ジェネレータを使用すると簡単にexpress
の設定が行えます。
今回は使用しませんが便利なので紹介だけしておきます。
サーバモジュールのインストール
Expressで使用する基本的なWeb機能用のモジュールをインストール。
npm install body-parser --save npm install cookie-parser --save npm install swig --save
- body-parser
- フォーム等データ受け渡し
- cookie-parser
- クッキー取り扱い
- swig
- テンプレートエンジン表示用
app.jsの設置
名前は何でもいいのですがサーバ起動するためのjsファイルを作成します。
下記今回作成したapp.js
全文
var express = require('express'); var path = require('path'); var cookieParser = require('cookie-parser'); var bodyParser = require('body-parser'); var swig = require('swig'); var app = express(); var allowCrossDomain = function(req, res, next) { res.header('Access-Control-Allow-Origin', '*'); res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE'); res.header('Access-Control-Allow-Headers', 'Content-Type'); next(); }; // view engine setup app.engine('html', swig.renderFile); app.set('view engine', 'html'); app.set('views', path.join(__dirname, 'views')); app.use(bodyParser.json()); app.use(bodyParser.urlencoded({ extended: false })); app.use(allowCrossDomain); app.use(cookieParser()); app.use(express.static(path.join(__dirname, '/'))); var routes = require('./routes/index'); app.use('/', routes); app.set('port', process.env.PORT || 5000); var server = app.listen(app.get('port'), function() { var host = server.address().address; var port = server.address().port; console.log('Example app listening at http://%s:%s', host, port); });
app.jsの簡単な解説
var express = require('express'); var path = require('path'); var cookieParser = require('cookie-parser'); var bodyParser = require('body-parser'); var swig = require('swig'); var app = express();
各モジュールを呼び出してexpress
実行環境にしています。
新しいモジュールでpathがありますがこれはnode.js
の「ファイルパスを扱うユーティリティ」になります。
var allowCrossDomain = function(req, res, next) { res.header('Access-Control-Allow-Origin', '*'); res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE'); res.header('Access-Control-Allow-Headers', 'Content-Type'); next(); };
CORS
の設定になります。
CORS
の参考⇒HTTP access control (CORS)|MDN
// view engine setup app.engine('html', swig.renderFile); app.set('view engine', 'html'); app.set('views', path.join(__dirname, 'views'));
テンプレートエンジンの設定です。ここではviews
フォルダにテンプレートがおかれることが指定されています。
app.use(bodyParser.json()); app.use(bodyParser.urlencoded({ extended: false })); app.use(allowCrossDomain); app.use(cookieParser()); app.use(express.static(path.join(__dirname, '/')));
app.use
を使用してミドルウェアの関数をマウントしています。
先ほど作成したCORS
の設定もここで呼び出しています。
staticファイル(jsとかCSSとかhtmlから呼び出すファイル)のファイルパスもこちらで指定できます。
今回はルートのままにしました。
var routes = require('./routes/index'); app.use('/', routes);
express
によるルーティングの設定です。
path
で指定されたindex.js
をモジュールとして読み込んでいます。(index.jsは後で作ります)
'/'
にアクセスがあった場合に呼び出されます。
app.set('port', process.env.PORT || 5000); var server = app.listen(app.get('port'), function() { var host = server.address().address; var port = server.address().port; console.log('Example app listening at http://%s:%s', host, port); });
サーバ設定です。
index.jsの設置
app.js
のroutes
で呼び出されているindex.js
を作成します。ただindex.html
が表示できれば良いので単純なものにします。
index.js
var express = require('express'); var router = express.Router(); /* GET home page. */ router.get('/', function(req, res, next) { res.render('index'); }); module.exports = router;
index.htmlを移動
app.js
で表示で使用するファイル置き場をviews
フォルダに指定したので、index.html
をviews
フォルダを作成し中に入れます。
gulpのpathも書き換える場合は下記のファイルのindexへのpathを書き換えます。
build/tasks/serve.js
gulp.task('serve', ['build'], function(done) { browserSync({ online: false, open: false, port: 9000, server: { baseDir: ['.'], index: "views/index.html", middleware: function(req, res, next) { res.setHeader('Access-Control-Allow-Origin', '*'); next(); } } }, done); });
起動
node app.js
コマンドラインから上記を実行するとサーバが立ち上がります。
ためしに下記アドレスにブラウザからアクセスしてみて、Aureliaが表示されれば完成です。
http://localhost:5000/
[…] Expressを使用してサーバを構築する […]