何彦熹 發表於 2019-5-18 19:28:00

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>&nbsp;</p>
<p>&nbsp;</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: &quot;Times New Roman&quot;">register.html</span></strong></p>
<p><strong><span style="font-family: &quot;Times New Roman&quot;"><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>&nbsp;</p>
<p><strong><span style="font-family: &quot;Times New Roman&quot;">创建路由模块router.js</span></strong></p>
<p>&nbsp;</p>
<p>这是路由模块的文件,这里会使用到闭包函数,还会用到读取文件的模块,这里先调用读取文件模块中的异步读取,传入闭包函数</p>
<p>&nbsp;</p><br><br>
来源:https://www.cnblogs.com/LO-ME/p/10886810.html
頁: [1]
查看完整版本: node.js 路由详解