「[[.NET 開発基盤部会 Wiki>http://dotnetdevelopmentinfrastructure.osscons.jp]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。

-戻る
--[[JavaScript>JavaScript#yff1d559]]
--[[Node.js]]

*目次 [#n564ef54]
#contents

*概要 [#r706ebdd]
[[Node.js>#q9fc6e24]]向けの高速で最小限の Web フレームワーク

*インストール [#lf3a3e8d]
以下でインストール。
 npm install express --save

*素描 [#ff9964f0]
**HTMLを返す。 [#g3f9da8b]
***サーバを設定 [#f2032417]
-直下にserverディレクトリを作成
-その直下にserver.jsファイルを作成

 var express = require('express');
 var app = express();
 
 //ポートの指定
 app.set('port', process.env.PORT || 5000);
 
 //ルートパスの指定
 var clientPath = __dirname.replace("/server", "/client");
 app.use('/', express.static(clientPath));
 
 // URLがNOT FOUNDの際の処理
 //redirect NOT FOUND page
 //app.use(function(req, res, next){
 //  res.status(404);
 //  res.sendFile(clientPath + '/404.html');
 //});
 
 //エラーが発生した場合の指定
 app.use(function(err, req, res, next) {
     console.log(err.stack);
     res.status(500).send(err.message);
 });
 
 //指定したポートでリクエスト待機状態にする
 app.listen(app.get('port'), function () {
     console.log('server listening on port :' + app.get('port'));
 });

***コンテンツの配置 [#j272b303]
コンテンツを配置する。
 server/hoge.html

***サーバを実行 [#jd93902d]
以下でサーバを実行。
 node server/server.js
 server listening on port :5000

***サーバにアクセス [#j68cd65e]
以下でサーバにアクセス。
 http://localhost:5000/hoge.html

**JSONを返す。 [#dda1563f]

***サーバを設定 [#ka9548d8]
-直下にserverディレクトリを作成
-その直下にserver.jsファイルを作成

 // expressモジュールをロードし、インスタンス化してappに代入。
 var express = require("express");
 var app = express();
 
 // CORSを許可する
 app.use(function(req, res, next) {
     res.header("Access-Control-Allow-Origin", "*");
     res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
     next();
   });
 
 // listen()メソッドを実行して5000番ポートで待ち受け。
 var server = app.listen(5000, function(){
     console.log("Node.js is listening to PORT:" + server.address().port);
 });
 
 // *.json
 // http://localhost:5000/hoge1.json
 app.get("/hoge1.json", function(req, res, next){
     var fs = require('fs');
     var json = JSON.parse(fs.readFileSync('./server/hoge1.json', 'utf8'));
     res.json(json);
 });
 // http://localhost:5000/hoge2.json
 app.get("/hoge2.json", function(req, res, next){
     var fs = require('fs');
     var json = JSON.parse(fs.readFileSync('./server/hoge2.json', 'utf8'));
     res.json(json);
 });

***コンテンツの配置 [#qaa29edf]
コンテンツを配置する。
 server/hoge1.json
 server/hoge2.json

***サーバを実行 [#sa78fbc6]
以下でサーバを実行。
 node server/server.js
 server listening on port :5000

***サーバにアクセス [#b63f32ef]
以下でサーバにアクセス。
 http://localhost:5000/hoge1.json
 http://localhost:5000/hoge2.json

*Express Generator [#n0d467cb]
もうチョットちゃんとしたserver.js実装が欲しい...。~
...とソコで、「Express Generator」が使える。

**概要 [#x056a25c]
-Node.js のWeb/APサーバー機能を提供するExpressアプリの雛形を作成してくれる。
-Expressにはアドオンでフレームワーク機能を追加していく。

**参考 [#c89a74c6]
-express-generatorを利用する[express][node.js]~
https://noumenon-th.net/programming/2018/12/22/express-generator01/

-Qiita
--Express Generator を使った Node.js + Express.js の環境構築手順~
https://qiita.com/tsuyoshioshima/items/7a553c25f222333b9503
--node初心者がexpress-generatorで吐き出されたapp.jsを読んでみる~
https://qiita.com/mito_log/items/735f7079f99ec78ea7e6

*Deno [#td8cbc5f]

**既存の問題点 [#c257ba4b]
サーバーサイドのJavaScriptランタイムエンジンに関する深刻な不安を表明

-サーバーサイドのJavaScriptランタイムエンジンの問題点
--[[Promise (JavaScript)]]を使用せずに無数の開発者をコールバック地獄に陥れた。
--JavaScriptは非常に安全なサンドボックス環境を提供するが、~
サーバー側のセキュリティ保証を実装する機会を逃した。
--原始的なUIのGYPというモジュール・ビルド・システム。

**代替案のDeno [#m80dfb8d]

***概要 [#aa924e03]
V8 JavaScriptエンジン上の安全なTypeScriptランタイムである~
Denoという新しいプロダクトを代替案として提供しようとしている。~
プロトタイプモードであり、実際の作業にまだ使用すべきではない。

***特徴 [#vba26172]
-静的型チェックのためTypeScriptを使用。
-モジュールシステムは大幅に簡素化。

-セキュリティ
--ネットワークやディスクへのアクセス許可を選択できる。
--システムコールはメッセージの受け渡しによって行われる。

-カジュアルなプロジェクトから高度に構造化されたプログラムに及ぶ。

**参考 [#pb4b2011]
-Node.js Creator Blasts Node.js, Offers a Secure TypeScript-Based Alternative - The New Stack~
https://thenewstack.io/node-js-creator-blasts-node-js-offers-a-secure-typescript-based-alternative/

-Deno: Node.jsのオリジナルの作者によるセキュアなV8 TypeScriptランタイム~
https://www.infoq.com/jp/news/2019/01/deno-v8-typescript/

-Node.jsの次にDenoを使いたい - No Regrets in Bathing~
http://hashrock.hatenablog.com/entry/2018/12/04/004504

-Deno について知っていることと、今後への期待 v1811 - Qiita~
https://qiita.com/euxn23/items/f3b45e3c093e448acf9b

*参考 [#od285c14]
-JavaScriptの記事一覧~
https://noumenon-th.net/programming/javascript/
--express-generatorを利用する[express][node.js]
--EJSテンプレートエンジンを利用する[Express]
--クエリーパラメーターによる送信[express][query]
--express-sessionでセッションを利用する[Express][node.js]
--express-validatorでバリデーションを行う[node.js]
--mysqlを利用する[express][node.js]

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS