nodejs app.js详解

翟弘
2023-12-01

app.js代码及其解释

//这里主要是引用所必须要的模块,当然,这些模块是需要使用“npm install 模块名”安装的
//模块依赖
var express = require('express');
var path = require('path');
var favicon = require('serve-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');

var index = require('./routes/index');
var users = require('./routes/users');

//定义app,生成一个express实例
var app = express();

//设置views文件夹为存刚视图文件的目录,即存放模板文件的目录
//_dirname为全局变量,存储当前正在执行的脚本所在的目录
app.set('views', path.join(__dirname, 'views'));
//设置视图模板引擎为jade
app.set('view engine', 'jade');

// uncomment after placing your favicon in /public
//app.use(favicon(path.join(__dirname, 'public', 'favicon.ico')))
//加载日志中间件
app.use(logger('dev'));
//加载解析json的中间件
app.use(bodyParser.json());
//架子啊解析urlencoded请求的中间件
app.use(bodyParser.urlencoded({ extended: false }));
//加载解析cookie的中间件
app.use(cookieParser());
//设置public文件夹为存放静态文件的目录
app.use(express.static(path.join(__dirname, 'public')));

//加载路由——路由控制器
app.use('/', index);
app.use('/users', users);

// catch 404 and forward to error handler
//记载错误处理解决方法
//捕获404错误,并转发到错误处理器
app.use(function(req, res, next) {
  var err = new Error('Not Found');
  err.status = 404;
  next(err);
});

// error handler
//开发环境下的错误处理器,将错误信息渲染error模板并显示浏览器中
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');
});

//导出app对象供其他模板调用
module.exports = app;

默认生成的app.js所加载的视图文件时jade模板,即视图文件是以“jade”结尾的文件。若想访问“html”模板可以配置让其支持ejs或html模板。只需几步即可完成配置

1、安装ejs。在项目根目录安装ejs。

npm install ejs
2、引入ejs

var ejs = require('ejs');  //我是新引入的ejs插件
3、设置html模板

app.engine('html', ejs.__express);
4、设置视图引擎

app.set('view engine', 'html');

保存后重启服务,即可访问html文件。


创建项目可查看http://blog.csdn.net/hh12211221/article/details/77555344

package.json详解可查看http://blog.csdn.net/hh12211221/article/details/77567627

demo示例可查看http://blog.csdn.net/hh12211221/article/details/77573292


 类似资料: