Express 是一个小巧且灵活的 Node.js Web应用框架,它有一套健壮的特性,可用于开发单页、多页和混合Web应用。
安装
package.json 中手动添加 Express 依赖
{ \"name\": \"demo1\", \"description\": \"First Express app\", \"version\": \"0.0.1\", \"dependencies\": { \"express\": \"3.x\" } }
相同的目录运行:
npm install
命令行安装 Express 直接运行:
npm install -g express
安装完后可以用 express 在命令行生成应用。
添加 app.js 文件,写个最简单的应用,创建一个 Express 实例,开始监听特定的端口 :
var express = require(\'express\'); var app = express(); app.listen(3000);
运行 node app
定义路由
我们给应用添加一些简单的路由,Express 可以响应各种 HTTP 请求:
//Regular HTTP get app.get(some url, do something); //Some other page app.get(some other url, do something else); //I can respond to a form post app.post(some url, do more stuff);
添加主页,
app.get(\'/\', function(request, response) { response.send(\"This would be some HTML\"); });
注意 Express 为 response 对象添加了 send() 方法,一些模板代码可以处理响应。重启应用,访问 http://localhost:3000/ 看看。
request.send() API 智能处理不同类型的数据,假如你想为网站添加简单的基于 JSON 的 API ,Express 可以把返回结果转换成 JSON 并设置适当的响应头。
app.get(\'/api\', function(request, response) { response.send({name:\"Raymond\",age:40}); });
Application对象
Application对象是Express的一个实例,通常用变量 app 来表示。这是你的Express应用中的主要对象,大部分功能都是在它内部构建。
创造一个Express模块对象的代码:
var express = require(\'express\'); var app = new express();
Application 对象中的所有属性和方法:
app.set(name, value) //设置一个app属性 app.get(name) //提取由app.set()设置的值 app.enable(name) //开启一个设置 app.disable(name) //关闭一个设置 app.enabled(name) //检查设置是否开启 app.disabled(name) //检查设置是否不可用 app.configure([env], callback) //根据开发环境进行设置 app.use([path], function) //在app中载入一个中间件 app.engine(ext, callback) //为app注册一个模板 app.param([name], callback) //为路径变量增加逻辑 app.VERB(path, [callback...], callback) //根据HTTP verbs 定义路径和处理器 app.all(path, [callback...], callback) //为所有HTTP verbs定义路径和处理器 app.locals //存储所有视图都能访问的变量的对象 app.render(view, [options], callback) //从app中渲染一个视图 app.routes //在app中定义的所有路径列表 app.listen() //绑定并监听所有连接
request对象
当一个客户端对Express app发起一个请求时,HTTP request对象被创建。这个对象一般用req变量来表示,它包含许多与当前请求相关的方法和属性。
所有req对象的属性和方法:
req.params //包含请求路径中的变量 req.params(name) //从GET变量或者POST变量中返回一个特定变量 req.query //包含GET中的值 req.body //包含POST中的值 req.files //包含由表单上传的文件 req.route 提供当前匹配路径的信息 req.cookies //Cookie值 req.signedCookies Signed cookie 值 req.get(header) //获取http请求头文件 req.accepts(types) //检查客户端是否接受媒体类型 req.accepted //客户端可接受的媒体类型列表 req.is(type) //检查请求中是否包含某种媒体类型 req.ip //客户端的ip地址 req.ips //客户端以及代理的ip地址 req.path //请求路径 req.host //来自HTTP头文件的主机信息 req.fresh //检查请求是否刚发生 req.stale //检查请求是否稳定 req.xhr //检查请求是否来自于AJAX请求 req.protocol //进行请求的协议 req.secure //检查是否是安全连接 req.subdomains //主域名下面的子域名 req.url //请求路径以及查询变量 req.originalUrl //req.url的后背 req.acceptedLanguages //客户端所接受的语言列表 req.acceptsLanguage(langauge) //检查客户端是否接受某种特定语言 req.acceptedCharsets 客户端可接受字符列表 req.acceptsCharsets(charset) //检查客户端是否接受某种特定字符
response对象
response对象和request对象一起被创建,它一般用res变量来表示。虽然res和req一起被创建这话听起来有点诡异,但是每个中间件在把控制传递给下一个中间件之前都需要包含一个res对象和一个req对象。
res对象所有属性和方法的列表:
res.status(code) //设置HTTP恢复状态码 res.set(field, [value]) //设置回复HTTP头文件 res.get(header) //获取回复HTTP头文件 res.cookie(name, value, [options]) //在客户端上设置cookie res.clearCookie(name, [options]) //清除客户端上的cookie res.redirect([status], url) //连同一个HTTP状态码重定向到一个新的url res.location //回复HTTP头文件中的location值 res.charset //回复HTTP头文件中的charset值 res.send([body|status], [body]) //连同一个HTTP回复码,发送一个HTTP回复对象 res.json([status|body], [body]) //连同一个HTTP回复码,发送一个JSON对象 res.jsonp([status|body], [body]) //连同一个HTTP回复码,发送一个JSONP对象 res.type(type) //设置回复HTTP头文件的媒体类型 res.format(object) //更具客户端可接受的类型发送一个HTTP回复 res.attachment([filename]) //设置HTTP头文件内容为一个附件 res.sendfile(path, [options], [callback]]) //向客户端发送一个文件 res.download(path, [filename], [callback]) //提示客户端下载一个文件 res.links(links) //设置HTTP连接头文件 res.locals //存贮所有视图能够访问的req的变量值 res.render(view, [locals], callback) //渲染一个视图
参考资料:
http://code.tutsplus.com/tutorials/introduction-to-express–net-33367
https://www.packtpub.com/web-development/express-web-application-development
Comments on this entry are closed.