什么是路由
路由这个次不是nodejs专属,在web应用程序中就有路由,路由描述应用程序是否以及如何对调http(超文本传输协议)请求进行应答,当用户在与应用程序或者网站交互的时候,浏览器就会生成这些请求。
路由只是个用来定义应用程序中http请求的最终点的术语,所以如果希望应用程序能够做点什么,那么就必须使用路由了。
Express中的路由
在Express使用HTTP动词来定义路由,HTTP动词描述对服务的请求类型,最为可能用到的动词Get,Post。
1. GET–从服务器获取数据
2. POST–将数据发送给服务器
其他的也有一些如:PUT,Delete,HEAD,OPTION,TRACE。
node.js路由的从无到有
没有路由
我们先创建一个没有使用路由的应用程序吧。如我们上一片博客Express的安装和使用,我们新建express_routing文件夹,在文件夹内Shift+鼠标右键,选择在此处打开命令窗口,然后输入:
express express_routing
cd express_routing && npm install
上边的命令就是创建Express项目,并引入一些相应的模块。
打开app.js,在倒数第二行假如app.listen(3000);加入端口号。
在命令窗口继续输入:
node app.js
然后再浏览器输入http://127.0.0.1:3000,然后观察页面
可是如果我们输入的地址是http://127.0.0.1:3000/about的话,会出现404的错误,这就是about没有路由可以使用,那么我们改如何使用呢。
有路由
其实我们平时在做web项目的时候一直再用路由,只是可能我们不知道那就叫路由,如我们常用的从服务器获取数据的GET请求,给服务器数据POST。接下来我们分别介绍一下
添加GET路由
为了使用GET路由,我们需要Get HTTP请求,在上边的没有路由的例子中,打开app.js在var app = express()
下边加上下边的代码
app.get(‘/about‘,function(req,res){
res.send(‘孟海滨是个大帅哥‘);
});
运行改js,node app.js
,在浏览器输入http://127.0.0.1:3000/about,这样我们的这个程序就写完了。看看效果如何。
添加POST路由
我们说完了添加GET路由,那么接下来我们说一下POST路由,添加POST路由和添加GET路由是一样的,只是把动词换做了post,如下:
app.post(‘/‘,function(req,res){
res.send(req.body);
});
在这个示例中,应用程序接收post请求,送到index页面,并将数据输送到浏览器中。
新建一个文件夹express_post,在该文件夹下打开控制命令窗口。输入:
express express_post
cd epxress_post && npm install
在app.js中添加app.listen(3000);
在生成的程序中,打开view–>index.jade,添加如下代码
h2 Form example
form(mehtod=‘post‘,action=‘/‘)
fieldset
legend Add a user
p
label First name
input(name=‘user[first_name]‘)
p
label Last name
input(name=‘user[last_name]‘)
p
input(type=‘submit‘,value=‘Save‘)
在浏览器输入http://127.0.0.1:3000,我们会看到浏览器出现了这个界面
然后我们输入一些信息,就会在地址栏出现我们输入的信息了。
使用路由传送参数
在web项目中,我们通常使用路由来传递参数,并且根据参数做相应的回应。例如下边的url
user/123
department/456
第一个url是用户ID位123的信息显示,第二个是部门id是456的信息显示。而且nodejs同样也支持这种方式。
1.创建Express站点
express express_param
cd epxress_param && npm install
2.在app.js中添加如下代码
app.get(‘/users/:id‘, function(req, res){
res.send(‘用户ID是‘ + req.params.id);
});
app.listen(3000);
3.启动项目
node app.js
4.在浏览器输入:http://127.0.0.1:3000/users/123,查看结果。
注意:你可能发现了,我每次都是把路由放入到了app.js,如果我们的页面需要大量的数据传输,可能使我们的程序特别复杂,难以维护,所以我们需要用一个类似于web项目的js文件来专门写这些东西,而这个Nodejs已经为我们考虑好,那就是我们的route文件夹下的index.js文件,我们可以直接写在这里边,在我们的app.js中写上app.get(‘/‘,routes.index);
就可以了
使用本地变量
在res.render函数中,本地变量的使用要掌握关键所在,设置要在视图层展示的数据。
将数据传递到视图层。
我们可能对数据要进行一些处理。例如拼接字符串,计算等。无论做什么,都需要在展示之前处理好。
app.js中添加如下代码
app.get(‘/‘, function(req, res){
var user = {
first_name: ‘Keyser‘,
surname: ‘Soze‘,
address: ‘Next door‘,
facebook_friends: ‘4‘
};
res.render(‘index.jade‘, { title: ‘User‘, user: user });
});
index.jade中添加如下代码:
h3 First Name
p= user.first_name
h3 Surname
p= user.surname
h3 Address
p= user.address
h3 Facebook Friends
p= user.facebook_friends
执行node app.js,我们会看到如下结果
小结
我们接着在上一篇的Express的基础上来讲了在node.js中获取和传输数据,使用参数等的方法,其实无非就是一个GET,POST,参数的使用。那么Express到底是干什么的呢。
Express 是一个基于 Node.js 平台的极简、灵活的 web 应用开发框架,它提供一系列强大的特性,帮助你创建各种 Web 和移动设备应用。 说白了,一个快速为我们创建web前段的框架。