nodejs通过http模块可以实现简单的请求处理,但是针对多种路径请求进行路由处理时非常复杂。并且http模块仅仅是一个http内核的封装,该模块提供的是底层的接口。在通过nodejs部署服务器时,不建议使用该模块来完成,也就是说该模块不是让你直接用这个模块进行 Web 开发的。如果想用它直接开发网站,那么就必须手动实现所有的东西了,小到一个POST请求,大到Cookie、会话的管理,使用该模块会非常复杂。
Express 是一个简洁而灵活的 node.js Web应用框架, 提供了一系列强大特性帮助你创建各种 Web 应用,和丰富的 HTTP 工具。使用 Express 可以快速地搭建一个完整功能的网站。若要实现更多的功能可以通过Express框架整合插件或者其他模块来完成。
因为需要通过Express的指令来框架搭建服务器,若想将其当做指令一样进行使用,必须进行全局安装。npm全局安装模块的指令为:npm install -g express,但是npm4.0版本后安装需要通过: npm install -g express-generator 该指令安装才能进入命令行执行express指令搭建服务器。
安装完毕后,通过express指令建立工程的步骤:
1.express在初始化一个项目时,需要指定模板引擎,我们使用ejs模板引擎。在npm3.x版本中建立工程并指定模板引擎使用的指令是:express -t ejs 工程名;但是由于npm版本更新,在4.0版本之后建立ejs模板引擎的工程需要的指令是:express -e 工程名。
2.当建立工程后,当我们打开js代码后会发现,在代码中引入了很多其他的模块,而这些模块并不是自带的核心模块,那么我们需要安装这些模块到工程路径中去,所以进入工程执行:npm install ,将自动到package.json文件中查看属性dependencies,将工程中的依赖模块都进行安装
3.安装完毕后,根路径下app.js文件就是入口文件,该文件中导出了app模块,我们可以借助于app模块进行web开发了。此时的app模块就相当于http模块中http.createServer()而创建的http服务器对象。通过app.listen(8080)便可以监听端口,等待客户端的连接。
4.通过node app.js 运行服务器
5.用浏览器访问: localhost:端口号 即可访问express框架搭建的服务器。
分析app.js文件中的路由处理:
我们已经了解HTTP请求的基本应用,而路由决定了由谁(指定脚本)去响应客户端请求。 在HTTP请求中,我们可以通过路由提取出请求的URL以及GET/POST参数。 接下来我们扩展 Hello World,添加一些功能来处理更多类型的 HTTP 请求。 创建 express_demo2.js 文件,代码如下所示:
var express = require('express');
var app = express();
// 主页输出 "Hello World"
app.get('/', function (req, res) {//该代码用来处理请求为“/”的url请求
console.log("主页 GET 请求");
res.send('Hello GET');
})
// POST 请求
app.post('/', function (req, res) {//该路由用来处理请求为“/”的post方式提交的请求信息
console.log("主页 POST 请求");
res.send('Hello POST');
})
// /del_user 页面响应
app.delete('/del_user', function (req, res) {//该路由用来处理请求路径为“/”的delete请求
console.log("/del_user 响应 DELETE 请求");
res.send('delete page');
})
// /list_user 页面 GET 请求
app.get('/list_user', function (req, res) {//该路由用来处理“/list_user”的get请求
console.log("/list_user GET 请求");
res.send('list_user page');
})
// 对页面 abcd, abxcd, ab123cd, 等响应 GET 请求
app.get('/ab*cd', function(req, res) { //该路由用来处理“/ab*cd”正则匹配的get请求
console.log("/ab*cd GET 请求");
res.send('正则匹配');
})
var server = app.listen(8082, function () {
var host = server.address().address
var port = server.address().port
console.log("应用实例,访问地址为 //%s:%s", host, port)
})
热点新闻
前端开发技术库