后台框架Express分享

2017-06-16  本文已影响0人  SodaSea

1. 学习路线

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

2. 为什么这样选择

nodeJS: 事件驱动,异步编程,非阻塞式io

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

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

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, 他们是不一样的请求,就要有对应的路由去处理它。
合理的路由。通常路由是由中间件控制的。

中间件的概念

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还能做什么

上一篇下一篇

猜你喜欢

热点阅读