Node.js学習ノート(三)
35860 ワード
1 nodemonツールを使用してWebサーバを自動的に再起動する
1.1 nodemonの役割:現在のプロジェクト、ファイルの変化をリアルタイムで傍受することができる.ファイルの変化を傍受すると、nodemonツールは自動的にwebサーバを再起動し、最新のコードを有効にします.プログラマーが手動でサーバーを再起動する悩みを免れた.
1.2どのようにインストールするか:npm i nodemon-gグローバルインストールを実行すればよい.1.3使用方法:
2ノードでWebプロジェクトを開発するフレームワーク-express
定義(Expressとは何か):高速なウェブサイト開発フレームワークで、オリジナルのhttpモジュールをカプセル化し、より便利に使用できます.APIはより人間的です.
2.1 expressフレームワークの特徴 Nodeに基づく.jsプラットフォーム上にはhttpモジュールがさらにカプセル化されており、より使いやすく、より友好的なAPI が提供されています. Expressを使用してWebサイトを作成すると、オリジナルのhttpモジュールを使用するよりも便利です. Expressは、オリジナルhttpモジュールのメソッドを上書きするのではなく、オリジナルメソッドに基づいて、より友好的なパッケージを作成し、ユーザーがより良い を体験できるようにしました.
2.2 expressフレームワークのインストールと基本的な使用インストール: 基本的なexpressサーバの作成:
2.3 expressでのショートカット res.send() res.sendFile() 注意:res.sendFile()はブラウザに静的ページを送信できます.
2.4 expressを使用する.static()静的リソースの迅速な管理
2.5 expressフレームワークのテンプレートエンジンの動的ページのレンダリングを設定する ejsテンプレートエンジン をインストール注意、テンプレートページの接尾辞名は、省略して書かないことができます!
2.6 expressでart-templateを構成する
2.7 expressフレームワークで提供されたルートを使用して要求を配布するルーティングとは何か:ルーティングは対応関係である. バックエンドルーティングとは、フロントエンドが要求するURLアドレスは、いずれもバックエンドの処理関数に対応しなければならない.このURLアドレスと処理関数との対応関係をバックエンドルーティングと呼ぶ. ルーティングモジュール を定義する.ルーティングモジュール を使用する.
2.8 Expressフレームワークにおけるミドルウェアの概念ミドルウェア とは
定義:ミドルウェアは処理関数です.ただし、この関数は比較的特殊で、req,res,nextの3つのパラメータが含まれています.
注意:ミドルウェアメソッドの3つのパラメータ: req:リクエストオブジェクト; res:応答オブジェクト; next:next()は、次のミドルウェアメソッドを呼び出すことを示すように呼び出され得る. Expressフレームワークにおけるミドルウェアの5種類の分類 アプリケーションレベルのミドルウェア:appにマウントされたミドルウェアapp.get(‘URLアドレス’,(req,res,next)=>{}); ルーティングレベルのミドルウェア:routerオブジェクトにマウントされたミドルウェアrouter.get(‘urlアドレス’,(req,res,next)=>{}) エラーレベルのミドルウェア:コールバック関数には、4つのパラメータappがあります.use((err, req, res, next)=>{}) 唯一内蔵ミドルウェア:express.static() サードパーティミドルウェア:expressフレームワークではなく、プログラマが手動でインストールして使用する必要があるミドルウェア.body-parser解析postフォームデータ
2.9 Expressでのデータベース操作 MySqlデータベース環境 の構成 mysqlサードパーティモジュールの紹介と基本構成 mysqlサードパーティモジュールを使用してCRUD を実現クエリー 新規 修正 削除
モジュールロードメカニズムキャッシュから優先的にロード .モジュールが初めてrequireされると、モジュール内のコードが実行され、同じモジュールが2回目にロードされると、キャッシュから優先的に検索され、このようなモジュールがあるかどうかを確認します! の利点:モジュールのロード速度を向上させる;モジュールを毎回再実行してロードする必要はありません. コアモジュールのロードメカニズム キャッシュを検索します. キャッシュにない場合は、コアモジュールをロードします. ユーザモジュールのロードメカニズム キャッシュを検索します. キャッシュにない場合、ユーザモジュールのロードを試みる. ユーザモジュールのロード時に接尾辞名を省略すると、まず、指定する名前に厳格に従って検索し、次に、接尾辞名をロードしようとする.jsのファイルがない場合.jsのファイルは、ロードしようとします.jsonの最後のファイルがない場合.jsonのファイルは、ロードしようとします.Nodeの最後のファイル検索ルール:index->index.js -> index.json -> index.node サードパーティモジュールのロードメカニズム【了解】 プロジェクトルートディレクトリでnode_を検索するmodulesフォルダ node_modulesフォルダの下で、モジュール関連フォルダ を検索対応するフォルダの下でpackageを検索します.jsonのファイル packageを検索します.jsonファイルのmainプロパティ(モジュールのエントリファイルを指定) mainプロパティが見つかった場合、mainプロパティで指定されたファイルパスが存在する場合、指定されたファイルモジュール をロードしようとします.にmain属性がない、またはmain属性に対応するファイルが存在しない、またはpackageがない.json、indexを順次ロードしようとします.js,index.json,index.node; index関連のファイルがない場合、またはモジュール対応フォルダが指定されていない場合、または現在のプロジェクトルートディレクトリにnode_がありません.modulesフォルダでは、前の階層のディレクトリにnode_を検索します.modules、検索ルールは同じです! 最後に、プロジェクトが存在するディスクのディスクルートディレクトリに対応するモジュールが見つからない場合は、エラー:cannot find module***
1.1 nodemonの役割:現在のプロジェクト、ファイルの変化をリアルタイムで傍受することができる.ファイルの変化を傍受すると、nodemonツールは自動的にwebサーバを再起動し、最新のコードを有効にします.プログラマーが手動でサーバーを再起動する悩みを免れた.
1.2どのようにインストールするか:npm i nodemon-gグローバルインストールを実行すればよい.1.3使用方法:
nodemon .\01-express art-template.js
2ノードでWebプロジェクトを開発するフレームワーク-express
定義(Expressとは何か):高速なウェブサイト開発フレームワークで、オリジナルのhttpモジュールをカプセル化し、より便利に使用できます.APIはより人間的です.
2.1 expressフレームワークの特徴
2.2 expressフレームワークのインストールと基本的な使用
npm i express -S
// expree
const express = require('express')
//
const app = express()
//
app.get('/',(req,res) => {
// res.end(' !') //end() http ,express
res.send(" !") //express
})
//
app.listen(3000,() => {
console.log('server running at http://127.0.0.1:3000')
})
2.3 expressでのショートカット
app.get('/',(req,res) => {
res.send('Ok') //
res.send({name:'cc',age:16}) // {"name":"cc","age":16} json
res.send([' ',' ',' ']) // [" "," "," "]
res.send(new Buffer('123')) //
})
app.get('/',(req,res) => {
// :
// res.sendFile(path.join(__dirname,'./public/index.html'))
// :
res.sendFile('./public/index.html',{root:__dirname})
})
app.get('/movie',(req,res) => {
res.sendFile('./public/movie.html',{root:__dirname})
})
app.get('/about',(req,res) => {
res.sendFile('./public/about.html',{root:__dirname})
})
2.4 expressを使用する.static()静的リソースの迅速な管理
app.use(express.static('./public'))
// app.use()
// express.static() , , express ;
app.use('/page',express.static('./public'))
// /page:
2.5 expressフレームワークのテンプレートエンジンの動的ページのレンダリングを設定する
npm i ejs -S
// app.set('view engine', )
app.set('view engine','ejs')
// app.set('views',' ')
app.set('views','./ejs_pages') //
app.get('/',(req,res) => {
// res.render,
res.render('index.ejs',{name:'cc',age:16,hobby:[' ',' ',' ']})
})
2.6 expressでart-templateを構成する
cnpm i art-template express-art-template -S
const artTemplate = require('express-art-template')
// : art-template express-art-template
// 1. app.engine ( ,artTemplate)
//
app.engine('html',artTemplate)
// 2 app.set('view engine',' ')
app.set('view engine','html')
// 3
app.set('views','./art-pages')
app.get('/',(req,res) => {
res.render('index.html',{name:'cc',age:16,hobby:[' ',' ',' ']})
})
2.7 expressフレームワークで提供されたルートを使用して要求を配布する
// 1. router.js
const express = require('express')
//
const router = express.Router()
router.get('/', (req, res)=>{})
router.get('/movie', (req, res)=>{})
router.get('/about', (req, res)=>{})
//
module.exports = router
//
const router = require('./router.js')
// app.use()
app.use(router)
2.8 Expressフレームワークにおけるミドルウェアの概念
定義:ミドルウェアは処理関数です.ただし、この関数は比較的特殊で、req,res,nextの3つのパラメータが含まれています.
注意:ミドルウェアメソッドの3つのパラメータ:
const querystring = require('querystring');
//
app.use((req,res,next) => {
let dataStr = ''
// , req data
// data ,
req.on('data',chunk => {
dataStr += chunk
})
// req end ,
req.on('end',() => {
// console.log(dataStr) //username=cc&userage=12
// username=ls&password=123 ,
// { username: 'ls', password: 123 }
// querystring.parse() URL dataStr 。
const obj = querystring.parse(dataStr)
req.body = obj
// : , next(),
next()
})
})
// get
app.get('/',(req,res) => {
res.sendFile('./11- index.html',{root:__dirname})
})
// post
app.post('/postdata',(req,res) => {
res.send(req.body) //{"username":"cc","userage":"123"}
})
2.9 Expressでのデータベース操作
npm i mysq
// 1. mysql
const mysql = require('mysql')
// 2. mysql
const conn = mysql.createConnection({
host:'localhost',
user:'root',
password:'root',
database:'express-mysql'
})
// conn.query('sql ', )
const sql ='SELECT * FROM `user` '
conn.query(sql,(err,result) => {
if(err) return console.log(' '+err.message)
console.log(result)
//[ RowDataPacket { id: 1, name: 'cc', age: 16, gender: 'girl' } ]
})
const user = {name:'zz',age:22,gender:'boy'}
const sql = "INSERT INTO `user` SET ?"
conn.query(sql,user,(err,result) => {
if(err) return console.log(' '+err.message)
console.log(result)
// OkPacket {
// fieldCount: 0,
// affectedRows: 1,
// insertId: 6,
// serverStatus: 2,
// warningCount: 0,
// message: '',
// protocol41: true,
// changedRows: 0
// }
})
const user ={id:6,name:'zz',age:18}
const sql = 'UPDATE `user` SET ? WHERE id = ?'
// sql ? , ,
conn.query(sql,[user,user.id],(err,result) => {
if(err) return console.log(" ")
console.log(result)
// OkPacket {
// fieldCount: 0,
// affectedRows: 1,
// insertId: 0,
// serverStatus: 2,
// warningCount: 0,
// message: '(Rows matched: 1 Changed: 1 Warnings: 0',
// protocol41: true,
// changedRows: 1
// }
})
const sql = 'DELETE FROM `user` WHERE id=?'
conn.query(sql, 1, (err, result) => {
if (err) return console.log(' !' + err.message)
console.log(result)
// OkPacket {
// fieldCount: 0,
// affectedRows: 1,
// insertId: 0,
// serverStatus: 2,
// warningCount: 0,
// message: '',
// protocol41: true,
// changedRows: 0
// }
})
モジュールロードメカニズム