Express框架文件解析

**

Express框架文件解析

**

  1. 目录结构
    1.1 app.js:启动文件,或者说是入口文件
    1.2 package.json:存储着工程的信息及模块依赖,当在dependencies中添加依赖的模块时,运行npm install,npm会检查当前目录下的package.json,并自动安装所有指定的模块。
    1.3 node_modules:存放package.json中安装的模块,当你在package.json添加依赖的模块并安装后,存放在这个文件夹下。
    1.4 public:存放image、css、js等文件
    1.5 routes:存放路由文件
    1.6 views:存放视图文件或者说模板文件
    1.7 bin:存放可执行文件
  2. 路由规则
    express封装了多种http请求方式,我们主要只使用get和post两种,即app.get()和app.post()。app.get()和app.post()的第一个参数都为请求的路径,第二个参数为处理请求的回调函数,回调函数有两个参数分别是req和res,代表请求信息和响应信息。路径请求及对应的获取路径有以下几种形式:

    2.1 req.query:处理get请求,获取get请求参数。
    2.2 req.params:处理/:xxx形式的get或post请求,获取请求参数
    2.3 req.param():处理get和post请求,但查找优先级油高到低req.params->req.body->req.query。

  3. app.js
    通过require()加装了express、path等模块,以及routes文件夹下的index.js和users.js路由文件。
    3.1生成一个express实例app。

     var app = express();

    3.2设置 views 文件夹为存放视图文件的目录, 即存放模板文件的地方,__dirname 为全局变量,存储当前正在执行的脚本所在的目录。

    app.set('views', path.join(__dirname, 'views'));

    3.3设置视图模板引擎为 ejs。

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

    3.4加装解析json的中间件

    app.use(bodyParser.json());

    3.5 加装日志中间件

    app.use(logger('dev'));

    3.6 加载解析urlencoded请求体的中间件。

    app.use(bodyParser.urlencoded({ extended: false }));

    3.7加载解析cookie的中间件。

    app.use(cookieParser());

    3.8 设置public文件夹为存放静态文件的目录。

    app.use(express.static(path.join(__dirname, 'public')));

    3.9 路由控制器。

    app.use('/', routes);
    app.use('/users', users);

    3.10 捕获404错误,并转发到错误处理器。

    app.use(function(req, res, next) {
    var err = new Error('Not Found');
    err.status = 404;
    next(err);
    });

    3.11 开发环境下的错误处理器,将错误信息渲染error模版并显示到浏览器中。

    if (app.get('env') === 'development') {
    app.use(function(err, req, res, next) {
    res.status(err.status || 500);
    res.render('error', {
      message: err.message,
      error: err
    });
    });
    }

    3.12 生产环境下的错误处理器,不会将错误信息泄露给用户。

    app.use(function(err, req, res, next) {
    res.status(err.status || 500);
    res.render('error', {
    message: err.message,
    error: {}
    });
    });

    3.13 导出app实例供其他模块调用。

    module.exports = app;
  4. routes/index.js 文件:
    4.1生成一个路由实例用来捕获访问主页的GET请求,导出这个路由并在app.js中通过app.use(‘/’, routes); 加载。这样,当访问主页时,就会调用res.render(‘index’, { title: ‘Express’
    });渲染views/index.ejs模版并显示到浏览器中。

转载:express框架解析

你可能感兴趣的:(Node-js,express)