初学node.js 对app.js的解释

// 使用各种模块包
// http-errors模块包主要功能监视http请求过程的错误。中间件middleware,中间件本质上就是一个模块包。监听错误的中间件。
var createError = require('http-errors');
// express模块包,框架
// 语句=》函数=》脚本库=》模块包=》框架=》平台
var express = require('express');
// path模块是node自带的模块。path模块主要功能负责获取路径信息
var path = require('path');
// cookie-parser模块主要负责解析cookie,cookie解析中间件
var cookieParser = require('cookie-parser');
// morgan模块主要负责记录请求日志。日志中间件
var logger = require('morgan');

var indexRouter = require('./routes/index.js');
var usersRouter = require('./routes/users');
var productsRouter = require('./routes/products.js');


// 调用express构造函数,创建一个应用程序实例。
var app = express();
// __dirname项目的根目录C:\Users\Steven Tung\Desktop\63\47\myapp
// console.log(__dirname);
// path.join()把多个路径合并成一个新路径C:\Users\Steven Tung\Desktop\63\47\myapp\views
// console.log(path.join(__dirname, 'views'));
// view engine setup
// 设置视图引擎
// 设置视图所在的文件夹。
app.set('views', path.join(__dirname, 'views'));
// 设置解析视图所使用的模块引擎。
app.set('view engine', 'ejs');

// app.use() 使用, 应用程序使用中间件。
app.use(logger('dev'));
// express.json()也是一个中间件,解析请求传递过来的数据,解析成json格式。
app.use(express.json());
// express.urlencoded()也是一个中间件,进行url编码, extended:true编码/解码的字符多,false相对较少。
app.use(express.urlencoded({ extended: false }));
// 使用cookie中间件解析cookie
app.use(cookieParser());

// express.static()设置静态资源目录,应用程序运行过程找静态资源(图片,脚本,样式,静态文档)时,去public文件中查找 
// 默认主页的命名index.html, public可以修改,但一般不建议改。
app.use(express.static(path.join(__dirname, 'public')));

// 使用路由中间件。 第一个参数起一个别名(路径的前缀),别名再和路由中路径进行拼接,形成一个完整的url路径
app.use('/', indexRouter);
app.use('/users', usersRouter);
app.use('/products', productsRouter);

// catch 404 and forward to error handler
// 错误处理中间件, 开发者自行处理的错误逻辑
// next()是一个函数,传递给下一个中间件
app.use(function(req, res, next) {
  console.log('error');
  // return;
  next();
}, function(req, res, next){
  console.log("添加多个中间件");
  next(createError(404))
});

/* app.use(function(req, res, next){
  if(isLogin){
    next();
  } else {
    res.render('login.ejs')
  }
}) */

// 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.ejs');
});


/* var http = require('http');
http.createServer(app).listen(4000, function(){
  console.log("server is running....")
}); */

module.exports = app;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值