0%

express框架

express框架

概念

Express 是一个简洁而灵活的 node.js Web应用框架, 提供了一系列强大特性帮助你创建各种 Web 应用,和丰富的 HTTP 工具。
使用 Express 可以快速地搭建一个完整功能的网站。

Express 框架核心特性

  1. 可以设置中间件来响应 HTTP 请求。
  2. 定义了路由表用于执行不同的 HTTP 请求动作。
  3. 可以通过向模板传递参数来动态渲染 HTML 页面。

简单点说express就是一个封装了很多功能的包,而你只需要用简单的express的专属的一些代码便可解决本来正常较为复杂的代码,方便你使用

使用express

  1. 进入一个目录当作工作目录
  2. 然后通过 npm init 命令为你的应用创建一个package.json 文件。(其中会输入参数,但可回车使用默认参数)
  3. 然后使用npm install express –save安装express
  4. 然后在你工程文件中引入
1
2
var express = require("express");
var app = express();

框架中目录结构

  1. app.js: 启动文件,或者说入口文件。
  2. package.json: 存储着工程的信息及模块依赖,当在 dependencies 中添加依赖的模块时, 运行 npm install ,npm 会检查当前目录下的 package.json,并自动安装所有指定的模块。
  3. node_modules: 存放 package.json 中安装的模块,当你在 package.json 添加依赖的模块并安装后,存放在这个文件夹下。
  4. public: 存放 image、css、js 等文件。
  5. routes: 存放路由文件。
  6. views: 存放视图文件或者说模板文件。
app.js作用

通过require()加装了express、path等模块,以及routes文件夹下的index.js和users.js路由文件。

  1. 生成一个express实例app。
    var app = express();

  2. 设置 views 文件夹为存放视图文件的目录, 即存放模板文件的地方, __dirname 为全局变量, 存储当前正在执行的脚本所在的目录。
    app.set(‘views’, path.join(__dirname, ‘views’));

  3. 设置视图模板引擎为 ejs。
    app.set(‘view engine’, ‘ejs’);

  4. 加装解析json的中间件
    app.use(bodyParser.json());

  5. 加装日志中间件
    app.use(logger(‘dev’));

  6. 加载解析urlencoded请求体的中间件。
    app.use(bodyParser.urlencoded({ extended: false }));

  7. 加载解析cookie的中间件。
    app.use(cookieParser());

  8. 设置public文件夹为存放静态文件的目录。
    app.use(express.static(path.join(__dirname, ‘public’)));

  9. 路由控制器。
    app.use(‘/‘, routes);
    app.use(‘/users’, users);

  10. 捕获404错误,并转发到错误处理器。
    app.use(function(req, res, next) {
    var err = new Error(‘Not Found’);
    err.status = 404;
    next(err);
    });

  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
    });
    });
    }

  12. 生产环境下的错误处理器,不会将错误信息泄露给用户。
    app.use(function(err, req, res, next) {
    res.status(err.status || 500);
    res.render(‘error’, {
    message: err.message,
    error: {}
    });
    });

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

module.exports = app;

bin/www 文件

  1. #!/usr/bin/env node:表明是 node 可执行文件。
  2. var debug = require(‘debug’)(‘blog’):引入debug模块,打印调试日志。
  3. var app = require(‘../app’):引入我们上面导出的app实例。
  4. app.set(‘port’, process.env.PORT || 3000):设置端口号。
  5. app.set(‘port’, normalizePort(process.env.PORT || ‘3000’);

启动工程并监听3000端口,成功后打印Express server listening on port 3000。

routes/index.js 文件

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

views/index.ejs 文件

在渲染模板时我们传入了一个变量 title 值为 express 字符串,模板引擎会将所有 <%= title %> 替换为 express ,然后将渲染后生成的html显示到浏览器中,如上图所示。

转发:https://www.jianshu.com/p/06e2396c6df2

  • 本文作者: David Xue
  • 本文链接: https://xdw-h.github.io/9/
  • 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!