美文网首页
后台框架Express分享

后台框架Express分享

作者: SodaSea | 来源:发表于2017-06-16 18:58 被阅读0次

    1. 学习路线

    Javascript----->原生nodeJS------>Express框架

    • Javascript: 嵌入动态文本于HTML页面, 实现网页动态效果
    • nodeJS: 使得我们的JavaScript语言能够开发web服务端
    • Express: 提供了更高层的接口外,还集成实现了许多常见功能

    2. 为什么这样选择

    nodeJS: 事件驱动,异步编程,非阻塞式io
    • 事件驱动: 事件循环不断检查事件,当有事件来临就可能会有回调函数被调用
    • 异步编程: 回调函数,每一个任务有一个或多个回调函数,前一个任务结束后,执行回调函数,后一个任务则是不等前一个任务结束就执行,所以程序的执行顺序与任务的排列顺序是不一致的,下面举个栗子:

    一个函数里执行语句ABCD,C语句发起异步请求,同时向引擎注册一个回调事件,接着D完了退出函数块,引擎一直LOOP,如果C异步的请求得到了回应,之前注册的回调函数就会被执行。

    • 非阻塞式io: contents在回调函数中才能获取,但是不需要等读完文件就可以执行下一句。
      fs.readFile('/etc/hosts', function(err, contents) { console.log(contents); }); console.log('Doing something else');

    注意的一点就是,回调函数根本上是任务完成才执行,事件只是使得任务完成。

    • nodeJS Core

    Express: 开发更有效率,结构更清晰


    Express是基于nodeJS的WEB框架,它提供了一个类似MVC的架构,其中C在Web框架里就是路由。
    用原生node.js来开发web服务器应用,会有很多的代码冗余,为了提高效率,我们选择了最成熟的nodeJS框架之一的Express。

    3. Express框架(4.X)

    项目目录

    一个好的目录结构有利于我们组织,存放和管理代码。

    |__node_modules /*Modules could be used*/
    |__routers /*Control the web router*/
            |__main.js
    |__views /*Interface*/
           |__index.html /*Normally the home page*/
           |__about.html 
    |__package.json /*version, dependencies, authors etc.*/
    |__app.js /*application in server*/
    //public:static files
    

    Express内容

    请求&响应

    Request和Response本质上都是对象,当收到请求并且请求合法时,他们就会自动生成实例并可以直接在我们的路由处理器中使用。

    var express = require("express");
    var app = express();
    app.get('/user/:id', function(req, res) {
      res.send('user ' + req.params.id);
    });
    
    路由的控制

    就是指为不同的访问路径,指定不同的处理方法,比如前端有用户要求访问\device,有用户要求访问\car, 他们是不一样的请求,就要有对应的路由去处理它。
    合理的路由。通常路由是由中间件控制的。

    中间件的概念
    • app级中间件
    • router级中间件
    • 错误处理中间件
    • 内置中间件
    • 第三方中间件
    • ...
      之前的介绍已经说了,中间件是起到联系Express和原生node的。
      它通常以中间件函数的形式存在
      这些分类主要是根据用途以及绑定对象决定的。比如app级绑定的就是express对象,而router级中间件绑定的就是router对象。

    next

    app.use(function (req, res, next) {
      console.log('in middleware one...');
      next();
    });
    
    app.use(function (req, res, next) {
      console.log('in middleware two...');
      next();
    });
    

    next执行顺序与代码顺序完全一致

    返回页面

    我们想要给客户端返回一个页面,需要有以下准备:

    模板文件:就是不同的html文件,文件名用来对应不同路径
    layout.html:特殊的模板文件,用来控制布局
    模板引擎:负责解析渲染

    // 指定模板文件的后缀名为html
    app.set('view engine', 'html');
    
    // 运行hbs模块
    app.engine('html', hbs.__express);
    res.render('index',<binding data>);
    
    
    指定静态文件目录

    模板文件默认存放在views子目录。这时,如果要在网页中加载静态文件(比如样式表、图片等),就需要另外指定一个存放静态文件的目录。
    app.use(express.static('public'));
    上面代码在文件app.js之中,指定静态文件存放的目录是public。于是,当浏览器发出非HTML文件请求时,服务器端就到public目录寻找这个文件。比如,浏览器发出如下的样式表请求:
    <link href="/bootstrap/css/bootstrap.css" rel="stylesheet">
    服务器端就到public/bootstrap/css/目录中寻找bootstrap.css文件。

    4. 与车流量项目的联系

    涉及到几乎所有后端逻辑,存储,提取,修改,删除,压缩以及加密。
    车流量项目主要有两个逻辑层面,一个是我们地磁设备发出的socket包能为后端正确接收处理并有序存储到数据库;第二个就是我们后台管理系统,后端与前端和数据库的交互。
    我们才开始第一个逻辑层面。由于Express主要针对的较高层的业务逻辑,于是我们利用原生nodeJS的net模块处理了接收的socket数据把他作为我们自己写的模块,然后然我们的app.js去使用这个数据处理模块。或者最好是把它们集合在app.js里。

    5. Express还能做什么

    • Restful API的实现: Express 和 ORM(waterline)
    • SSL加密的实现:express().https

    相关文章

      网友评论

          本文标题:后台框架Express分享

          本文链接:https://www.haomeiwen.com/subject/xwopqxtx.html