Express入门

by Web全栈工程师 on 2013 年 09 月 25 日

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

原创文章,转载请注明:转载自Web开发笔记 | Express入门

本文链接地址:https://www.magentonotes.com/express-guide.html

Comments on this entry are closed.

Previous post:

Next post: