Nodejs之Express生成器(express-generator)初始应用代码解读

Nodejs之Express生成器(express-generator)初始应用代码解读

    • 目录结构
    • 代码解读
      • ./package.json
      • ./bin/www
      • ./app.js
      • ./routes/
      • ./views
    • 拓展
      • 修改模板引擎为html

以下代码已上传自GitHub:https://github.com/tsora-c/node-express-generator

目录结构

.
├── app.js-------------------------------------------------入口文件、总路由
├── bin----------------------------------------------------启动目录
│   └── www------------------------------------------------默认监听端口 3000
├── package.json-------------------------------------------包描述文件
├── public-------------------------------------------------静态资源
│   ├── images---------------------------------------------img
│   ├── javascripts----------------------------------------js
│   └── stylesheets----------------------------------------css
│       └── style.css
├── routes-------------------------------------------------路由
│   ├── index.js
│   └── users.js
└── views--------------------------------------------------模板
    ├── error.jade
    ├── index.jade
    └── layout.jade

7 directories, 9 files

代码解读

./package.json

{
  "scripts": {
    "start": "node ./bin/www" // 启动文件位置
  },
  "dependencies": { // 项目依赖
  }
}

./bin/www

#!/usr/bin/env node

/**
 * Module dependencies.
 */
// 声明并引入项目入口文件
var app = require('../app');
// 声明调试器模块
var debug = require('debug')('node-express-generator:server');
// 声明http模块
var http = require('http');

/**
 * Get port from environment and store in Express.
 */
// 设置默认监听端口号为3000
var port = normalizePort(process.env.PORT || '3000');
app.set('port', port);

/**
 * Create HTTP server.
 */
// 创建 HTTP 服务
var server = http.createServer(app);

/**
 * Listen on provided port, on all network interfaces.
 */
// http 监听端口号 及相应事件
server.listen(port);
server.on('error', onError);
server.on('listening', onListening);

./app.js

// 声明并引入相应模块
var createError = require('http-errors');// http 错误响应
var express = require('express');// express
var path = require('path');// 路径
var cookieParser = require('cookie-parser');// cookie解析
var logger = require('morgan');// 记录日志

// 声明并引入路由组件
var indexRouter = require('./routes/index');
var usersRouter = require('./routes/users');

// express对象
var app = express();

// view engine setup
// 模板位置
app.set('views', path.join(__dirname, 'views'));
// 模板引擎 默认为jade;可修改为其它,如html
app.set('view engine', 'jade');
// 使用mogan将请求信息打印在控制台
app.use(logger('dev'));
// 请求解析中间件
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
// 解析请求头里的cookie
app.use(cookieParser());
// 设置静态文件目录
app.use(express.static(path.join(__dirname, 'public')));

// 路由匹配及路由组件
app.use('/', indexRouter);
app.use('/users', usersRouter);

// 暴露模块接口
module.exports = app;

./routes/

./routers/index.js

router.get('/', function (req, res, next) {
  // 被解析为加载index模板并赋值title为Express
  res.render('index', { title: 'Express' });
});

./routers/users.js

router.get('/', function(req, res, next) {
  // 页面显示 respond with a resource
  res.send('respond with a resource');
});

./views

该项目下文件皆为jade模板,如需深入了解可自行百度,在这里不多做阐述

拓展

修改模板引擎为html

  1. app.jsapp.set(‘view engine’, ‘jade’); 改为 app.set(‘view engine’, ‘html’);
  2. 新建index.html
  3. 将index.js中res.render(‘index’, { title: ‘Express’ }); 改为res.sendfile(“./views/index.html”);

至此结束

你可能感兴趣的:(Nodejs)