菜鸟学习nodejs--express(二)路由

来源:互联网 发布:免费听小说听书软件 编辑:程序博客网 时间:2024/05/18 02:01

什么是路由

路由这个次不是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_postcd epxress_post && npm install

在app.js中添加app.listen(3000);
在生成的程序中,打开view–>index.jade,添加如下代码

h2 Form exampleform(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/123department/456

第一个url是用户ID位123的信息显示,第二个是部门id是456的信息显示。而且nodejs同样也支持这种方式。
1.创建Express站点

express express_paramcd 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 Namep= user.first_nameh3 Surnamep= user.surnameh3 Addressp= user.addressh3 Facebook Friendsp= user.facebook_friends

执行node app.js,我们会看到如下结果
这里写图片描述

小结

我们接着在上一篇的Express的基础上来讲了在node.js中获取和传输数据,使用参数等的方法,其实无非就是一个GET,POST,参数的使用。那么Express到底是干什么的呢。
Express 是一个基于 Node.js 平台的极简、灵活的 web 应用开发框架,它提供一系列强大的特性,帮助你创建各种 Web 和移动设备应用。 说白了,一个快速为我们创建web前段的框架。

0 0
原创粉丝点击