node.js 路由详解
<p><span style="font-size: 14pt"><strong>路由的基本使用</strong></span></p><p><strong><span style="font-family: 宋体">第一步:获取</span>url<span style="font-family: 宋体">跟目录下的字符</span></strong></p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">var</span> http = require('http'<span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 0, 255, 1)">var</span> url = require('url'<span style="color: rgba(0, 0, 0, 1)">)
http.createServer(</span><span style="color: rgba(0, 0, 255, 1)">function</span><span style="color: rgba(0, 0, 0, 1)"> (request,response) {
response.writeHead(</span>200, {'Content-Type': 'text/html; charset=utf-8'<span style="color: rgba(0, 0, 0, 1)">});
</span><span style="color: rgba(0, 0, 255, 1)">if</span>(request.url !== "/favicon.ico"<span style="color: rgba(0, 0, 0, 1)">){
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">拿到浏览器访问的url路劲,并且替换掉前面的/</span>
<span style="color: rgba(0, 0, 255, 1)">var</span> pathname = url.parse(request.url).pathname.replace(/\//, ''<span style="color: rgba(0, 0, 0, 1)">)
console.log(pathname)
response.end(</span>""<span style="color: rgba(0, 0, 0, 1)">)
}
}).listen(</span>9000)</pre>
</div>
<p>浏览器访问http://localhost:9000/login</p>
<p><img src="https://img2018.cnblogs.com/blog/591234/201905/591234-20190518194043554-153131014.png"></p>
<p>后台拿到访问路劲login</p>
<p><img src="https://img2018.cnblogs.com/blog/591234/201905/591234-20190518194117356-1864782835.png"></p>
<p><strong>第二步:路由功能的实现</strong></p>
<p>首先创建一个路由模块文件router.js,下面代码分别由login和register</p>
<p>这种方式其实就是根据pathname来调用router中的login或者register方法</p>
<div class="cnblogs_code">
<pre>module.exports =<span style="color: rgba(0, 0, 0, 1)"> {
login (req,res) {
res.write(</span>"我是login方法"<span style="color: rgba(0, 0, 0, 1)">)
},
register (req,res) {
res.write(</span>'我是register方法'<span style="color: rgba(0, 0, 0, 1)">)
}
}</span></pre>
</div>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">var</span> http = require('http'); <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">http是node中自带的一个模块,引入即可使用</span>
<span style="color: rgba(0, 0, 255, 1)">var</span> url = require('url'<span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 0, 255, 1)">var</span> router = require('./router'<span style="color: rgba(0, 0, 0, 1)">);
http.createServer(</span><span style="color: rgba(0, 0, 255, 1)">function</span><span style="color: rgba(0, 0, 0, 1)"> (request,response) {
response.writeHead(</span>200, {'Content-Type': 'text/html; charset=utf-8'<span style="color: rgba(0, 0, 0, 1)">});
</span><span style="color: rgba(0, 0, 255, 1)">if</span>(request.url !== "/favicon.ico"<span style="color: rgba(0, 0, 0, 1)">){
</span><span style="color: rgba(0, 0, 255, 1)">var</span> pathname = url.parse(request.url).pathname.replace(/\//, ''<span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 0, 255, 1)">try</span><span style="color: rgba(0, 0, 0, 1)"> {
router(request,response);
}</span><span style="color: rgba(0, 0, 255, 1)">catch</span><span style="color: rgba(0, 0, 0, 1)">(err) {
console.log(err)
}
response.end(</span>""<span style="color: rgba(0, 0, 0, 1)">)
}
}).listen(</span>9000)</pre>
</div>
<p><img src="https://img2018.cnblogs.com/blog/591234/201905/591234-20190519125728115-1171421604.png"></p>
<p>如果在后面输入不存在的,则打印出错误信息</p>
<p><img src="https://img2018.cnblogs.com/blog/591234/201905/591234-20190519132846289-1038454959.png"></p>
<p><img src="https://img2018.cnblogs.com/blog/591234/201905/591234-20190519132913667-240350840.png"></p>
<p> </p>
<p> </p>
<p><span style="font-size: 14pt"><strong>路由结合读取文件</strong></span></p>
<p>首先创建两个html文件,<strong>login.html<span style="font-family: 楷体">和</span><span style="font-family: "Times New Roman"">register.html</span></strong></p>
<p><strong><span style="font-family: "Times New Roman""><img src="https://img2018.cnblogs.com/blog/591234/201905/591234-20190519223155385-1206445718.png"></span></strong></p>
<p><img src="https://img2018.cnblogs.com/blog/591234/201905/591234-20190519223202439-498604191.png"></p>
<p>创建主程序app.js</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">var</span> http = require('http'<span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 0, 255, 1)">var</span> url = require('url'<span style="color: rgba(0, 0, 0, 1)">)
</span><span style="color: rgba(0, 0, 255, 1)">var</span> router = require('./router'<span style="color: rgba(0, 0, 0, 1)">)
http.createServer(</span><span style="color: rgba(0, 0, 255, 1)">function</span><span style="color: rgba(0, 0, 0, 1)"> (request, response) {
response.writeHead(</span>200, {'Content-Type': 'text/html; charset=utf-8'<span style="color: rgba(0, 0, 0, 1)">});
</span><span style="color: rgba(0, 0, 255, 1)">if</span>(request.url !== "/favicon.ico"<span style="color: rgba(0, 0, 0, 1)">){
</span><span style="color: rgba(0, 0, 255, 1)">var</span> pathName = url.parse(request.url).pathname.replace(/\//, ''<span style="color: rgba(0, 0, 0, 1)">)
router(request,response)
response.end();
}
}).listen(</span>9000)</pre>
</div>
<p> </p>
<p><strong><span style="font-family: "Times New Roman"">创建路由模块router.js</span></strong></p>
<p> </p>
<p>这是路由模块的文件,这里会使用到闭包函数,还会用到读取文件的模块,这里先调用读取文件模块中的异步读取,传入闭包函数</p>
<p> </p><br><br>
来源:https://www.cnblogs.com/LO-ME/p/10886810.html
頁:
[1]