nodejs第三者モジュールexpressフレーム
7462 ワード
Express
Expressフレームは、Node.jsプラットフォームに基づいて、高速、開放、極めて簡単なウェブ開発フレーム を有する. express公式サイト express中国語ネット スタートをきるインストール: . を設定する.
-- パラメータは、文字列、配列、オブジェクト、Bufferとすることができます.
-- 注意:一回しか使えません. である.
登録ルート 1 3 を処理することである.
-- 注意:pathで始まる要求アドレスであれば、米国で処理することができます.
-- 注意:任意の要求タイプを処理できます.
-- 注意:pathパラメータは省略できます.標準値は
静的サーバを実現 -- 例:URLは「example.com/users?sort=desc」であり、pathは「 静的資源を処理する静的資源:図、CSS、JavaScriptファイルなど はどう処理しますか?express.static()方法を使用して、静的リソースを管理する .注意: を呼び出すことができます.は、 を取得する.目的:ルーティングを独立したルーティングモジュールにパッケージ化することは、コードのパッケージ化とモジュール化に有利である.
Expressフレーム
npm i express
// express
var express = require('express')
// express , express
var app = express()
//
app.get('/', function (req, res) {
res.send('Hello World!')
})
//
app.listen(3000, function () {
console.log(' ')
})
APIの説明express()
:Expressアプリケーションを作成し、戻ります.すなわち、ap app.get()
:1つのGETタイプのルーティングを登録する――注意:ルーティングが登録されている限り、すべての要求は処理される(構成されていない要求パス、応答404)res.send()
:データをクライアントに送信し、自動的にContent-Type -- パラメータは、文字列、配列、オブジェクト、Bufferとすることができます.
-- 注意:一回しか使えません.
req
およびres
:httpモジュールの役割と同じで、拡張された要求および応答オブジェクト登録ルート
app.METHOD
:例えば、ap.get/ap.post/ap.delete/ap.patch app.use(path, callback)
のより重要な役割はミドルウェア-- 注意:pathで始まる要求アドレスであれば、米国で処理することができます.
-- 注意:任意の要求タイプを処理できます.
-- 注意:pathパラメータは省略できます.標準値は
/
です.静的サーバを実現
req.path
:要求経路/users
」を表しています.res.sendFile()
express.static()
は何回も// web
app.use(express.static('web'))
// :app.use('/', express.static('web'))
//
// http://localhost:3000/anoceanofsky.jpg
// ,express web , anoceanofsky.jpg
// ,
requestの一般的な属性と方法// , ---> Get
req.query
// POST , `body-parser` , POST
req.body
POST
要求パラメータ// body-parser
var bodyParser = require('body-parser');
// POST , req.body
app.use(bodyParser.urlencoded({ extended: true })); // for parsing application/x-www-form-urlencoded
// , POST
console.log(req.body)
レスポンスの一般的な属性と方法// send() , Content-Type
res.send()
// , Content-Type
// :
res.sendFile(path.join(__dirname, 'index.html'))
// HTTP
res.sendStatus(200) // equivalent to res.status(200).send('OK')
//
res.set('Content-Type', 'text/plain')
res.set({
'Content-Type': 'text/plain',
'cute': 'fangfang'
})
//
res.redirect('/index')
Expressはテンプレートエンジンを使用します.// html
app.engine('html', require('express-art-template'))
//
app.set('views', './')
// html
app.set('view engine', 'html')
// index.html ,
res.render('index', { list: [] })
Expressにおける外付けルートの使用/*
router.js :
*/
// 1 express
var express = require('express')
// 2 express.Router() ,
var router = express.Router()
// 3 router
router.get('/', function (req, res) {
res.send('hello express')
})
router.get('/add', function (req, res) {
})
// 4. router
module.exports = router
/*
app.js :
*/
var express = require('express')
// 1
var router = require('./router')
var app = express()
// 2. router app.use() app
// app router
app.use( router )
app.listen(3000, function () {
console.log('running...')
})
ケース:/*
express art-template
1. npm i art-template express-art-template
2. app app.engine('html', require('express-art-template'))
3. res.render( , )
nodejs
1. npm i art-template
2. const template = require('art-template')
3. const html = template( , )
4. res.setHeader('content-type', 'text/html')
5. : res.end(html)
body-parser
1. npm i body-parser
2. var bodyParser = require('body-parser')
3.
app.use(bodyParser.urlencoded({ extended: true })); //
app.use(bodyParser.json());
*/
//
const path = require('path')
const querystring = require('querystring')
const moment = require('moment')
const express = require('express')
const bodyParser = require('body-parser')
const app = express()
// app
// art-tempalte: html art
// 1:
// 2: express-art-template express
app.engine('html', require('express-art-template'))
// /pages
app.set('views', 'pages')
// html
// app.set('view engine', 'html')
const dataTool = require('./dataTool')
app.listen(8888, () => {
console.log(' ')
})
//
// public /static /static
app.use('/static', express.static('public'))
// : post , req.body
// app.use((req, res, next) => {
// // req.body post
// let result = ''
// req.on('data', chunk => {
// result += chunk
// })
// req.on('end', () => {
// req.body = querystring.parse(result)
// next()
// })
// })
// app.use(bodyParser.json()) // json
app.use(bodyParser.urlencoded({ extended: false })) //
//
app.get('/', (req, res) => {
// index.html
//
//
dataTool.readFile(data => {
// const filePath = path.join(__dirname, 'views', 'index.html')
//
// 1:
// , , ,
// , views
res.render('index.html', data)
})
})
app.get('/index', (req, res) => {
res.redirect('/')
})
app.get('/add', (req, res) => {
res.render('add.html')
})
app.get('/delete', (req, res) => {
// id
// express req req.query(get ) req.body(post)
const id = req.query.id
//
dataTool.readFile(data => {
// data id
data.total--
data.list = data.list.filter(item => item.id !== +id)
//
dataTool.writeFile(data, () => {
// , /
res.redirect('/')
})
})
})
app.post('/fb', (req, res) => {
// req.body
// console.log(req.body)
// res.send('ok')
const newData = req.body
dataTool.readFile(data => {
data.total++
data.list.unshift({
...newData,
id: +new Date(),
time: moment().format('YYYY-MM-DD HH:mm:ss')
})
dataTool.writeFile(data, () => {
res.redirect('/')
})
})
})
/*
1. npm i art-template express-art-template
2. app.engine('html', require('express-art-template'))
3. views app.set('views', 'pages')
4. , res.render( , )
*/
// 404
app.use((req, res) => {
res.status(404).render('404.html')
})