后台框架Express分享

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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,293评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,604评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,958评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,729评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,719评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,630评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,000评论 3 397
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,665评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,909评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,646评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,726评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,400评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,986评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,959评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,996评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,481评论 2 342

推荐阅读更多精彩内容