nodejs路由是什么? - 网站

nodejs路由是什么?

分类:Node.js常见问题 · 发布时间:2019-12-07 17:46 · 阅读:1976

所谓路由就是web服务器会根据用户输入的不同url(实际是path不同, domain是相同的, 包括协议, host, port)返回不同的页面。

例如登录页面login和注册页面register

#默认端口为80
http://localhost/login #login页面
http://localhost/register #register页面

实现思路

1.第一步要得到用户请求的url

可以通过监听函数中的request参数获取, 即request.url

2.解析url,得到具体的请求页面, 也就是路由入, login 和register

获取url之后,利用标准模块‘url’中的parse 函数提取出路由

首先看一下url.parse( )函数的功能, 例如调用url.parse(http://localhost/login)的结果如下所示

Url {
  protocol: 'http:',
  slashes: true,
  auth: null,
  host: 'localhost',
  port: null,
  hostname: 'localhost',
  hash: null,
  search: null,
  query: null,
  pathname: '/login',
  path: '/login',
  href: 'http://localhost/login'
 }

获得的是一个url对象, 可以提取出各部分的内容, 所以路由信息可以提取为

var pathname = url.parse(request.url).pathname;

但是我们还需要将‘/’去掉

pathname = pathname.replace(/\//,'')//去掉 '/'

3.编写路由器, 路由器就是若干个返回不同页面的函数集合, 路由器根据不同的路由信息调用不同的函数, 返回不同的页面。

//------------router.js-------------------------
module.exports = {
    login:function(req, res) {
    res.writeHead(200,{'Content-type':'text/html,charset=utf-8'})
    res.write('Login page')
    res.end()
    }, 
    register:function(req, res) {
    res.writeHead(200,{'Content-type':'text/html,charset=utf-8'})
    res.write('Register page')
    res.end()
    }
}

主函数入下, 则可实现根据不同的路由(pathname)调用不同的路由函数, 返回不同的页面。

//------------main.js---------------------
var http = require('http');
var functions=require('./models/functions.js')
var router=require('./router')
var url = require('url')
http.createServer(function(request, response) {
    var pathname = url.parse(request.url).pathname;
    pathname = pathname.replace(/\//,'')//去掉 '/'
    console.log(pathname)
    router[pathname](request, response)

}).listen(80);
console.log('Server is running at 127.0.1.1:80')

异常(例外)处理

就咱们的这个例子来说只在router里面定义了连个函数login 和register, 如果用户请求其他的页面,web 服务会直接崩溃,这不是我们希望看到的, 所以要提供例外来处理用户的其他我们没有定义的请求页面。 实现很简答, 只是将router[pathname](request, response)包进try…catch块中, 在catch中对异常进行妥善处理

try {
        router[pathname](request, response) 
    }catch(err) {
        response.writeHead(200,{'Content-Type':'text/html,charset=utf-8'});
        response.write(err.toString())
        response.end()
    }

这样即使用户输入千奇百怪的url, web服务也不会崩溃, 只会在前端显示错误信息提示用户。

更多nodejs相关技术文章,请访问 Node.js答疑 栏目进行学习!

标签:
nodejs 路由

相关文章

如何设置 nodejs 的环境变量

在前端开发过程中,我们需要对 application 运行的环境进行设置,一般会包括开发环境development,生产环境production,每个环境可以对应不同的一些配置,例如不同环境下请求的地址...

谈谈Node.js与JavaScript的差异

Javascript是一种web前端语言,主要用于web开发中,由浏览器解析执行。Node.js是一个可以快速构建网络服务及应用的平台,是用Javascript语言构建的服务平台。

npm install安装报错怎么解决?

解决方法:1、报“operation not permitted”错误,通过“npm i 包名 --no-optional”解决;2、报“Missing: chromedriver”错误,表示没有安装chromedriver,安装一下即可。

怎么使用npm下载vue.js?

使用npm下载vue.js的方法:1、安装node.js和npm;2、安装cnpm;3、使用命令cnpm install -g vue-cli来安装即可。

vue.js和node.js是什么关系?

vue.js和node.js并没有关系,vue.js是前端框架,算是js的三大框架之一吧,node.js是后端开发语言,同php、java、c#一样的。但是他们可以配合使用。

返回分类 返回首页