Express框架等于在http模块之上,加了一个中间层。
var express = require(‘express’);
var app = express();
app.listen(3000);
和
var express = require(‘express’);
var http = require(‘http’);
var app = express();
http.createServer(app).listen(80);
利用http 模块创建的server有什么区别吗?
app就是一个:
function (req,res) {}
同时具备一个属性:
app.listen = function (port) {
http.createServer(this).listen(port);
};
process对象提供一系列属性,用于返回系统信息。
process.env:返回一个对象,成员为当前Shell的环境变量,比如process.env.HOME
app.get('env')和 process.env.NODE_ENV获得的是同一个值。
通常的做法是,新建一个环境变量NODE_ENV,用它确定当前所处的开发阶段,生产阶段设为production,开发阶段设为develop或staging,然后在脚本中读取process.env.NODE_ENV即可。
运行脚本时,改变环境变量,可以采用下面的写法。
$ export NODE_ENV=production && node app.js
# 或者
$ NODE_ENV=production node app.js
export 方式只对当前终端 Shell 有效
使用 export 设置的变量,只对当前终端 Shell 有效,也就是说如果新打开一个终端,那这个 export 设置的变量在新终端中使无法读取到的。适合设置一些临时变量。
__dirname
__dirname 是被执行的js 文件的地址
express项目中通常使用body-parser进行post参数的解析,最常用的是其中的json和urlencoded的parser,可分别对以JSON格式的post参数和urlencoeded的post参数进行解析,均可获得一个JSON化的req.body.
body-parser还有一个raw parser,可以获取一个buffer对象的req.body。
post参数只能被第一个满足解析条件的parser进行解析。因此即使先后调用raw、json、urlencoded这三个parser,也只能得到一个body,具体格式由各parser的调用次序及post参数满足的解析条件决定。JSON化的body和raw body如同鱼与熊掌,二者不可得兼。
其实body-parser提供了一个办法在解析post参数的同时获取raw body,那就是在调用parser的时候传入的参数中带verify回调函数.
Stylus 是一个CSS的预处理框架,2010年产生,来自Node.js社区,主要用来给Node项目进行CSS预处理支持,所以 Stylus 是一种新型语言,可以创建健壮的、动态的、富有表现力的CSS。比较年轻,其本质上做的事情与 SASS/LESS 等类似,应该是有很多借鉴,所以近似脚本的方式去写CSS代码。
通过 Express 内置的 express.static 可以方便地托管静态文件,例如图片、CSS、JavaScript 文件等。
将静态资源文件所在的目录作为参数传递给 express.static 中间件就可以提供静态资源文件的访问了。例如,假设在 public 目录放置了图片、CSS 和 JavaScript 文件,你就可以:
app.use(express.static('public'));
现在,public 目录下面的文件就可以访问了。
http://localhost:3000/images/kitten.jpg
http://localhost:3000/css/style.css
http://localhost:3000/js/app.js
http://localhost:3000/images/bg.png
http://localhost:3000/hello.html