1 引言
在上一篇文章(HTTP介绍与node环境搭建)中已经搭建好了一个可以允许js运行的node环境。
2 问题分析
本文讲述路由的搭建:
什么是路由:所谓路由就是web服务器会根据用户输入的不同url(实际是path不同, domain是相同的, 包括协议, host, port)返回不同的页面。有了路由之后,如果想要将自己的代码运行于服务器上时,也就简单一点了只需更改少数代码即可。
3 解决方案
- 什么是HTTP
- 运行环境配置
- 路由的搭建
- 首页的图片显示
- 登录的实现
三、 路由的搭建
路由的搭建分为七步:创建一个 http 服务器;设置响应头;分析url;实例化外部模块:使用module.exports模块;异常处理;停止监听。
①创建一个http服务器 :
crateServer函数用来创建一个HTTP服务器,并将 requestListener 作为 request 事件的监听函数(http.createServer([requestListener]))。
requstListener请求处理函数
req request缩写:请求对象,其中最关键的就是url属性
res response缩写:响应对象
**但由于crateServer()函数属于http模块,使用前需要引入http模块(var http= require(“http”) )
② 设置响应头
res.writeHead:这个方法有两个参数,第一个参数表示对应的编码的状态值,第二个表示对应的设置在实际开发中,我们需要返回对应的中文以及对应的文本格式,所以我们需要设置对应的响应头,响应头决定了对应的返回数据的格式以及编码格式.
③ 分析 url
通过req.url能够得到用户请求的url,解析其url后就能够得到具体的某个页面,
1、parse()能够将完整的url分为许多部分:host、port、pathname、path、query等。
2、且默认输出(.pathname())会带有斜杠。若想后续对路径进行分析,需去掉斜杠,使用正则表达式:.replace(/\//,'')。
④ 实例化外部模块
通常我们会将具有一定特性的代码块放入一个js文件中,因此我们会将真正实现页面的部分封装成一个路由,因此同样是需要使用require模块去引用同一个目录不同文件夹里的内容。
⑤异常处理
在实际使用中,我们会因为失误导致路径写错,那应该怎么办呢?一般我们都会设置一个默认显示的页面,以防止这种错误的出现。
⑥停止监听
res.end();在之后一定要写上这一句,不然浏览器会一直处于加载滚动页面。
附上全部代码:
Router-2.js
Router.js
实际可以看出,单独写了一个router.js,这是为什么呢?为什么不写在一起。其实这样的写法是代码看起来功能更加的具体唯一,逻辑清晰,修改时,也可以发现,我们只需要更改router.js里的代码即可。
Router-2.js的最后一行,是为了更好在控制台发现是否有报错信息。
4 总结
本文简单的讲述了如何搭建一个路由,其实看完可以发现,路由有点相似于spring里面的controller的作用,可以通过服务器的方式传一个页面给浏览器,且能够带一些数据给页面。
如本文有所不足欢迎提出,共同学习,共同进步。