node.js 4日目ノート整理~
28042 ワード
Node.js 4日目教室ノート
インテリジェントポイント Express ファイルに基づいてCRUD を作成
復習する jQueryのeachとオリジナルのJavaScriptメソッドforEach 301と302の違い モジュールで単一のメンバーをエクスポートし、複数のメンバーをエクスポートする方法 複数回通過: 複数を導出してもよい: module.exportsとexportsの違い exportsはmoduleだけです.exportsの1つの引用で、目的はただ書き方を簡略化するためです 各モジュールの最終returnはmoduleである.exports
requireメソッドロードルール キャッシュから優先的にロード .コアモジュール パス形式のモジュール を示す.
サードパーティモジュール サードパーティモジュールの識別はサードパーティモジュールの名称(サードパーティモジュールとコアモジュールの名前が一致するはずがない) である. npm 開発者は、作成したフレームワーク、ライブラリをnpm上の に公開することができます.利用者は使用時にnpmで を簡単にダウンロードできる.
使用方法: node_modules node_modules/express node_modules/express/package.json node_modules/express/package.json main package.jsonかpackage.json mainが成立しない場合、予備オプションを検索します:index.js 上記の条件が成立しない場合は、前のレベルのディレクトリのnode_に進みます.modules上記のルールに従って を検索し続けます.現在のファイルモジュールが属するディスクルートディレクトリが見つからない場合は、 とエラーが発生します.
package.jsonパッケージ記述ファイル は製品の説明書 である. を保存するために使用される.ですので、各プロジェクトにpackageが1つしかないことをお勧めします.json(プロジェクトに格納されているルートディレクトリ) 同様に、依存項目情報を保存するために、サードパーティ製パッケージをインストールするたびに、
npm共通コマンド install uninstall
Express基本使用 Expressを使用して、以前のメッセージのこのケースを自分で改造します 1.コードを修正して自動的に再起動する
ここでは、サードパーティ製パッケージ、
次の操作を行います.
2.モジュールIDのファイル操作における相対パスは省略することができる. モジュールロード中、相対パスの./ は省略できませんファイル操作の相対パス ./data/a.txt現在のディレクトリ に対して data/a.txt現在のディレクトリ に対して/data/a.txt絶対パス、現在のファイルモジュールが存在するディスクルートディレクトリ c:/xx/xx...絶対パス
3.expressスタート
3.1インストール
3.2 hello world
3.3基本ルート要求方法 要求経路 要求処理関数 get:
post:
3.4静的サービス
4.expressでメッセージを書き直す
4.1 Expressでart-templateテンプレートエンジンを構成する
インストール:
構成:
次の操作を行います.
デフォルトのviewsビューレンダリングディレクトリを変更する場合は、次のコードを実行します.
4.2フォームPOSTリクエストボディデータをexpressで取得する方法
expressでは、フォームgetリクエストボディデータの取得には
インストール:
構成:
次の操作を行います. URL入力はいずれもget方式で要求 を送信する.
5.CURD-スタート初期化 テンプレート処理ルーティング設計 5.1ルーティング設計
リクエストメソッド
リクエストパス
getパラメータ
义齿
コメント
GET
/students
レンダリングトップページ
GET
/students/new
[レンダリング](Render)学生ページを追加する
POST
/studens/new
name、age、gender、hobbies
学生の追加要求の処理
GET
/students/edit
id
[レンダリング編集](Render Editing)ページ
POST
/studens/edit
id、name、age、gender、hobbies
編集要求の処理
GET
/students/delete
id
削除要求の処理
5.2ルーティングモジュールの抽出
router.js:
app.js:
5.3操作データを設計するAPIファイルモジュール
自分で作成したテンプレート処理テンプレート オープンスタティックリソース を構成する.単純ルーティング:/studentレンダリングページ ルーティング設計 抽出ルーティングモジュール 次の操作はすべてデータを処理する必要があるため、 をパッケージ化します.まずstudentを書きます.jsのファイル構造 すべての学生のリストAPI find を検索する findByid save updateByid deleteByid
具体的な機能を実現 ルーティングにより要求 を受ける.要求中のデータを受信する(get,post) res.query res.body
呼び出しデータ操作API処理データ は、動作結果に基づいてクライアントに応答 を送信する.
業務機能データ リスト 追加 編集 削除 ES 6のAPI find findIndex
ファイルパスの Expressでart-templateテンプレートエンジン を使用するように構成 Expressではbody-parser を使用するように構成されています. Expressにおける構成処理静的リソース CRUDケースにおけるルーティングモジュール の個別抽出
インテリジェントポイント
復習する
module.exports = xxx
exports.xxx = xxx
moudle.exports = { }
./xxx
../xxxx
/xxxx
/ここではディスクルートc:/xxx
var = require('npm install ')
can not find module xxx
dependencies
属性は、プロジェクトのサードパーティパケット依存情報npm init [--yes]
でpackageを生成できます.jsonファイル--save
オプションを追加します.ここでは、サードパーティ製パッケージ、
nodemon
を使用して、コードの変更が完了して自動的にサーバを再起動する問題を解決することができます.nodemon
はnodeに基づくものである.jsが開発したサードパーティコマンドラインツールは、独立してインストールする必要があります.//
npm install --global nodemon
次の操作を行います.
nodemon app.js
2.モジュールIDの
/
とファイル操作経路の/
私たちが使用しているすべてのファイル操作のAPIは非同期です.fs.readFile('data/a.txt', function (err, data) {
if (err) {
return console.log(' ')
}
console.log(data.toString())
})
:
Error: Cannot find module 'data/foo.js'
// require('data/foo.js')
// :
require('./data/foo.js')('hello')
fs.readFile('./data/a.txt', function (err, data) {
if (err) {
console.log(err)
return console.log(' ')
}
console.log(data.toString())
})
3.expressスタート
3.1インストール
npm install --save express
node ,
nodemon
npm install --global nodemon//( )
nodemon app.js
nodemon , , ,
3.2 hello world
var express = require('express')
var app = express()
app.get('/',function(req,res){
res.send('hello world')
})
app.listen(3000, function() {
console.log('express app is running ...')
})
3.3基本ルート
// GET ,
app.get('/',function(req,res){
res.send('hello world')
})
post:
// POST ,
app.post('/',function(req,res){
res.send('hello world')
})
3.4静的サービス
app.use(express.static('public'))
// public ===/public
app.use(express.static('files'))
// files ===/files
app.use('/public/', express.static('public'))
// /public/(public )===/public/xxx
app.use('/static/', express.static('public'))
// /static/(public )===/static/xxx
app.use('/static/', express.static(path.jion(_dirname, 'public')))
4.expressでメッセージを書き直す
4.1 Expressでart-templateテンプレートエンジンを構成する
インストール:
npm install --save art-template
npm install --save express-art-template
構成:
var express = require('express')
var app = express()
// :
app.engine('html',require('express-art-template'))
次の操作を行います.
app.get('/',function(req,res){
//express views ----
res.render('index.html',{
title:'hello world'
})
})
デフォルトのviewsビューレンダリングディレクトリを変更する場合は、次のコードを実行します.
// : views
app.set('views', )
4.2フォームPOSTリクエストボディデータをexpressで取得する方法
expressでは、フォームgetリクエストボディデータの取得には
req.query
が使用されますが、フォームpostリクエストボディデータを取得するAPIは内蔵されていません.ここでは、サードパーティ製パケット:body-parser
に依存できます.インストール:
npm install --save body-parser
構成:
var express = require('express')
//
var bodyParser = require('body-parser')
var app = express()
// body-parser
// , req :`body`
// req.body post
// :
`// parse application/x-www-form-urlencoded
app.use(bodyParser.urlencoded({ extended: false }))
// parse application/json
app.use(bodyParser.json())`
次の操作を行います.
app.use(function (req, res) {
res.setHeader('Content-Type', 'text/plain')
res.write('you posted:
')
// req.body post
res.end(JSON.stringify(req.body, null, 2))
})
5.CURD-スタート
リクエストメソッド
リクエストパス
getパラメータ
义齿
コメント
GET
/students
レンダリングトップページ
GET
/students/new
[レンダリング](Render)学生ページを追加する
POST
/studens/new
name、age、gender、hobbies
学生の追加要求の処理
GET
/students/edit
id
[レンダリング編集](Render Editing)ページ
POST
/studens/edit
id、name、age、gender、hobbies
編集要求の処理
GET
/students/delete
id
削除要求の処理
// utf8 utf8 ,
// , data.toString()
fs.readFile('./db.json', 'utf8', function(err,data){
if (err) {
return res.status(500).send('Server err')
}
res.render('index.html', {
students: JSON.parse(data).students
})
})
5.2ルーティングモジュールの抽出
router.js:
/**
* router.js
* :
*
* +
* ,
*
*
*/
var express = require('express')
// 1.
var router = express.Router()
// 2. router
router.get('/students/new', function (req, res) {
res.render('new.html')
})
router.post('/students/new', function (req, res) {
})
router.get('/students/edit', function (req, res) {
})
router.post('/students/edit', function (req, res) {
})
router.get('/students/delete', function (req, res) {
})
//3.
module.exports = router
app.js:
var router = require('./router')
//
app.user(router)
5.3操作データを設計するAPIファイルモジュール
/**
*
* @param {Function} callback
*/
exports.find = function(callback) {
}
/**
*
* @param {Object} student
* @param {Function} callback
*/
exports.save = function(student, callback) {
}
/**
*
*/
exports.updateById = function(student, callback) {
}
/**
*
*/
exports.deleteById = function(id, callback) {
}
自分で作成したテンプレート
student.js
/
およびモジュールIDの/