nodejs動態路由


主要功能:根據輸入路由的不同,加載訪問不同的HTML頁面
在這里我不得不說webstorm真的是一個很棒的開發工具,我學習nodejs也是用的它。
文件目錄:

first_server.js:
首先我們通過url獲取當前路徑,變量path來存儲。
path因為我們輸入路由的不同而改變
url.parse(request.url).pathname獲取當前總路徑,path.substr(1)去掉根號‘/’
require導入模塊是如果是導入node以封裝好的模塊可以直接用名字導入,到時如果需要導入的是自定義模塊需要我們把文件路徑加上,如我的路由模塊router=require('./module/router')

var http=require('http');
var url=require('url');
var router=require('./module/router');//導入路由模塊,需要修改為自己得文件路徑
http.createServer(function (request,response) {//創建服務
    response.writeHead(200, {'Content-Type': 'text/html;charset=utf-8'});//輸出類型
    if (request.url!=='/favicon.ico'){//清除二次訪問
        var path=url.parse(request.url).pathname;
        path=path.substr(1);//獲取當前路徑
        router[path](request,response);//調用路由
        console.log(path);
    }
}).listen(5200);//端口號為5200

例如輸入路徑:login/xxk,會得到以下結果

router.js:(路由模塊,不能有具體輸出,起映射作用)
我簡單寫了兩個選項,一個登陸和一個注冊,一會根據瀏覽器輸入地址的不同,加載頁面

var url = require('url');
var optfile=require('./optfile');//導入自定義模塊要加路徑'./'
module.exports={
    login:function (req,res) {
       optfile.login(req,res);
    },
    register:function (req,res) {
        optfile.register(req,res);
    }
}

optfile.js(輸出模塊)

var fs = require('fs');
function recall(res,data){
    res.writeHead(200, {'Content-Type': 'text/html;charset=utf-8'});
    res.end(data);//瀏覽器輸出
}
module.exports={
    login:function (req,res) {
        var data = fs.readFile('./file/login.html',function (err,data) {
            if (!err){
                data=data.toString();
                recall(res,data);
                // res.end(data)
                console.log(99)//控制台輸出
            }else {
                res.end('err');
            }
        })
    },
    register:function (req,res) {
        // res.write('這是注冊頁面')
        var data = fs.readFile('./file/register.html',function (err,data) {
            if (!err){
                recall(res,data);
            }
        })
    }

};

login.html

register.html

運行結果:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM