express 是基于 node.js 的 web 開發(fā)框架。
官方網(wǎng)址:https://www.expressjs.com.cn/
express 腳手架生成
使用 express-generetor 安裝。
安裝 Express 應(yīng)用程序生成器:
npm install -g express-generator
使用 express -h 查看所有命令:
$ express -h
Usage: express [options] [dir]
Options:
-h, --help 輸出使用方法
--version 輸出版本號
-e, --ejs 添加對 ejs 模板引擎的支持
--hbs 添加對 handlebars 模板引擎的支持
--pug 添加對 pug 模板引擎的支持
-H, --hogan 添加對 hogan.js 模板引擎的支持
--no-view 創(chuàng)建不帶視圖引擎的項(xiàng)目
-v, --view <engine> 添加對視圖引擎(view) <engine> 的支持 (ejs|hbs|hjs|jade|pug|twig|vash) (默認(rèn)是 jade 模板引擎)
-c, --css <engine> 添加樣式表引擎 <engine> 的支持 (less|stylus|compass|sass) (默認(rèn)是普通的 css 文件)
--git 添加 .gitignore
-f, --force 強(qiáng)制在非空目錄下創(chuàng)建
生成腳手架:
在當(dāng)前目錄 myapp 下生成腳手架:
express --view=ejs
- 添加的是 ejs 模板引擎。
安裝所有依賴包
$ npm install
運(yùn)行
直接運(yùn)行 bin 文件夾下的 www 文件就可以了:
node ./bin/www
或者使用如下命令:
npm start
然后在瀏覽器中打開 http://localhost:3000/ 網(wǎng)址就可以看到這個應(yīng)用了。
通過生成器創(chuàng)建的應(yīng)用一般都有如下目錄結(jié)構(gòu):
.
├── app.js
├── bin
│ └── www
├── package.json
├── public
│ ├── images
│ ├── javascripts
│ └── stylesheets
│ └── style.css
├── routes
│ ├── index.js
│ └── users.js
└── views
├── error.pug
├── index.pug
└── layout.pug
- bin:啟動目錄,里面包含了一個啟動文件 www 默認(rèn)監(jiān)聽端口是 3000;
- public:存放靜態(tài)資源;
- routes:路由操作;
- views:存放 ejs 模板引擎;
- app.js:主文件;
- package.json:項(xiàng)目描述文件;
app.js 文件
var createError = require('http-errors'); //http 錯誤處理
var express = require('express'); // express
var path = require('path');
var cookieParser = require('cookie-parser');
var logger = require('morgan'); //輸出日志
var indexRouter = require('./routes/index');
var usersRouter = require('./routes/users');
var app = express();
// view engine setup
// 視圖設(shè)置
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');
//中間件
app.use(logger('dev')); //開發(fā)環(huán)境下輸出日志
app.use(express.json()); //json 解析
app.use(express.urlencoded({ extended: false })); //解析 body 中數(shù)據(jù)
app.use(cookieParser()); //cookie 解析
app.use(express.static(path.join(__dirname, 'public'))); //處理靜態(tài)文件,首先判斷請求的路徑是否存在于靜態(tài)文件中,如果存在,則將其取出渲染,否則再繼續(xù)走下面的路由。
//路由中間件
//請求路徑不在靜態(tài)文件中,進(jìn)入到這里的路由
app.use('/', indexRouter);
app.use('/users', usersRouter);
// catch 404 and forward to error handler
// 404 中間件
// 如果請求路徑在靜態(tài)頁面、路由中都沒有找到,則報(bào) 404 錯誤。
app.use(function(req, res, next) {
//也可以在這里自己進(jìn)行 404 頁面渲染
// res.render('404.ejs')
next(createError(404)); //創(chuàng)建 404 報(bào)錯,來自于 var createError = require('http-errors');
});
// error handler
// 處理錯誤中間件
app.use(function(err, req, res, next) {
// set locals, only providing error in development
res.locals.message = err.message;
res.locals.error = req.app.get('env') === 'development' ? err : {};
// render the error page
res.status(err.status || 500);
res.render('error');
});
module.exports = app;