express和express-generator

一 、 express

  • express web 服务器 --> 后端渲染
  • express api 服务器 --> 如何暴露接口
    • restful api

(1) 使用 express 搭建静态服务器
静态服务器
后端语言 + 后端渲染模板 生成前端的 html 结构,然后在发送到前台,这种做法就叫做后端渲染。

const express = require( 'express' )
//得到app对象, 目的是为了绑定中间件
const app = express() 
const PORT = 8000 
const HOST = 'localhost'
const fs = require( 'fs' ) // 文件系统
// 要想将模板中的内容发送出去,我们可以通过app对象和路由中间件来做
app.get('/home',( request,response,next ) => {
  // fs.readFile( 路径,字符编码, 回调函数)
  fs.readFile( './static/html/index.html', 'utf8', ( error,docs ) => { 
    if( error ){
      console.log( error )
    }else{
      response.send( docs )
    } 
  })  
})
// 监听服务器
app.listen( PORT,HOST,() => {
  console.log( `服务器运行在: http://${ HOST }:${ PORT }` )
})

(2) 使用 express 打造 api 服务器
在api服务器中,一个路由就是一个api,也就是一个后端接口 。

const express = require('express')
const app = express() //得到app对象
const PORT = 5000
const HOST = 'localhost'
// 引入user路由模块
const userRouter = require('./route/user.js')
app.use('', userRouter) //通过app对象使用路由模块
app.listen(PORT, HOST, () => {
  console.log(`api服务器`)
})

(3) 打造接口
格式: router.get ( 路由路径, 回调函数 )
增: post
删: delete
改: put
查: get
以上 api 中接收一个回调函数作为参数
put 和 delete 会自动携带请求 options 请求
上面这种规则就是 restful api
使用 restful api 规则来暴露接口

const express = require('express')
//创建模块
const router = express.Router() //得到路由对象  
router
   .route('/user')
   .post((req, res, next) => {
    res.json({
      ret: true,
      status: '添加成功'
    })
  })
  .delete((req, res, next) => {
    res.json({
      ret: true,
      status: '删除成功'
    })
  })
  .put((req, res, next) => {
    res.json({
      ret: true,
      status: '修改成功'
    })
  })
  .get((req, res, next) => {
    res.json({
      ret: true,
      status: '查询成功'
    })
  })
// 模块的导出
module.exports = router 

二 、express-generator
在Node.js中我们可以使用一个快速生成工具,帮助我们快速构建一个后端项目, 这个工具叫做 express-generator 生成器 【 脚手架 】
如何使用?
1. 安装 【 两种方式 】
(1) 全局安装
$ cnpm i express-generator -g
express -e 项目名称
(2) 不使用全局安装
使用npx生成,但是要求npx对应的npm版本在 5.2 以上,npm5.2版本以上自动携带npx
- 第二种方式使用
$ npx express -e 项目名称 -e 表示使用ejs模板, -e 是可以换的
2. 项目目录结构
(1) bin: www 创建服务器,并监听服务器
(2) public : 静态资源目录 : img、 css
(3) routes: 路由文件
(4) view: 模板文件 ejs / pug
(5)app.js 整个项目的入口文件: 中间件类型 【 3种 】
a. 应用级中间件( 只是一个单一功能, 如:绑定静态资源目录)

// 绑定应用级中间件
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')));

b. 路由中间件 ( 暴露一个路由 )

// 绑定路由中间件
app.use('/', indexRouter);
app.use('/users', usersRouter);
app.use('/shopcar', shopcarRouter);

c. 错误处理中间件 ( 处理项目的错误 )

// 错误处理中间件 开始
// 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');
});
// 错误处理中间件结束

你可能感兴趣的:(express和express-generator)