Node的脚手架工具
在Node.js中我们可以使用一个快速生成工具,帮助我们快速构建一个后端项目
这个工具叫做 express-generator 生成器 【 脚手架 】
- 如何使用?
1. 安装 【 两种方式 】
- 全局安装
$ cnpm i express-generator -g
先要全局安装 express-generator
express -e 项目名称
再创建项目时,使用的命令
- 不使用全局安装,使用npx生成,但是要求npx对应的npm版本在 5.2 以上,npm5.2版本以上自动携带npx
- 第二种方式使用
$ npx express -e 项目名称
这里可以使用的模板有三种:
-e或者–ejs表示使用ejs模板
--pug表示使用pug模板
--hbs表示使用hbs模板
2. 项目目录结构
bin
www 创建服务器,并监听服务器
public 静态资源目录
img
css
routes
路由文件
view
模板文件 ejs/pug/hbs
app.js 整个项目的入口文件
中间件类型 【 3种 】
应用级中间件( 只是一个单一功能, 如:绑定静态资源目录)
路由中间件 ( 暴露一个路由 )
错误处理中间件 ( 处理项目的错误 )
//以脚手架生成的项目环境中的入口文件app.js来举例说明:
var createError = require('http-errors');
var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser');
var logger = require('morgan');
var cors = require( 'cors' )
var indexRouter = require('./routes/index');
var usersRouter = require('./routes/users');
var shopcarRouter = require( './routes/shopcar' )
var app = express();
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');
//*****这里是应用级中间件(start)
app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
// 使用cors进行跨域
app.use( cors({
"origin": "*",
"methods": "GET,HEAD,PUT,PATCH,POST,DELETE",
"preflightContinue": false,
"optionsSuccessStatus": 200
}) )
//*****这里是应用级中间件(end)
//******这里是路由中间件(start)
app.use('/', indexRouter);
app.use('/users', usersRouter);
app.use('',shopcarRouter)
//*****这里是路由中间件(end)
//*****这里是错误处理中间件(start)
// catch 404 and forward to error handler
app.use(function(req, res, next) {
next(createError(404));
});
// 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');
});
//*****这里是错误处理中间件(end)
module.exports = app;
package.json
记录项目依赖包配置信息和项目的命令脚本