国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專(zhuān)欄INFORMATION COLUMN

Node.js開(kāi)發(fā)系列(五)

psychola / 1127人閱讀

摘要:?jiǎn)?dòng)腳本在最后,我們調(diào)用了模塊,模塊即文件。調(diào)用路由對(duì)應(yīng)的方法模塊中判斷參數(shù)和組合成的路徑是否有實(shí)現(xiàn)。負(fù)責(zé)啟動(dòng)服務(wù),解析傳遞過(guò)來(lái)的路徑,將傳遞給。進(jìn)行真正的路由處理。這樣,我們就手動(dòng)實(shí)現(xiàn)了一個(gè)路由控制的示例。

上一節(jié)我們實(shí)現(xiàn)了簡(jiǎn)單的路由,這節(jié)我們實(shí)現(xiàn)更復(fù)雜的路由過(guò)程

統(tǒng)一管理
我們?cè)?b>server.js初始化路由控制,啟動(dòng)腳本的模塊。

var server = require("./start");
var router = require("./router");
var requestHandlers = require("./handlers");

var handler = [];
handler["/"] = requestHandlers.home;
handler["/show"] = requestHandlers.show;
handler["/upload"] = requestHandlers.upload;


server.start(router.route,handler);


console.log("Run on port 1337");

啟動(dòng)腳本
server.js最后,我們調(diào)用了start模塊,start模塊即start.js文件。在start.js文件中處理,代碼如下

var http = require("http");
var url = require("url");

function start(route,handler) {
    console.log("Starting~~");

    function onRequest(req, res) {
        var pathname = url.parse(req.url).pathname;

        var content = route(pathname,handler);
        if (content){
            res.writeHead(200,{
                "Content-Type":"text/plain"
            });
            res.write("OK");
            res.end();
        }else {
            res.writeHead(404,{
                "Content-Type":"text/plain"
            });
            res.write("404 not found");
            res.end();
        }

    }

    var port = process.env.port || 1337;
    http.createServer(onRequest).listen(port);
    console.log("Started!!");
}

exports.start = start;

這里的核心代碼是調(diào)用router(pathname,handler);這個(gè)方法,這個(gè)方法是在router模塊中實(shí)現(xiàn)。

調(diào)用路由對(duì)應(yīng)的方法
router模塊中判斷參數(shù)pathnamehandler組合成的路徑是否有實(shí)現(xiàn)。如果有,則調(diào)用相應(yīng)的路由方法,router.js代碼如下

function route(pathname,handler) {
    console.log("Route for path requested:" + pathname);
    if (pathname == undefined) pathname="/";
    if (handler){
        if (typeof handler[pathname] === "function"){
            handler[pathname]();
            return true;
        }else {
            console.log("No Method found for " + pathname);
            return null;
        }
    }else {
        console.log("No Method found in handler ");
        return null;
    }
}

exports.route = route;

多個(gè)路由方法
首先我們需要定義多個(gè)路由方法,為了方便統(tǒng)一的管理控制,我們將路由處理的方法都寫(xiě)在一個(gè)handlers.js的文件中,首先定義三個(gè)方法,這里只是實(shí)現(xiàn)最簡(jiǎn)單的打印

function home() {
    console.log("Request "home" called.");
}

function show() {
    console.log("Request "show" called.");
}

function upload() {
    console.log("Request "upload" called.");
}

exports.home = home;
exports.show = show;
exports.upload = upload;

最后
我們?cè)跒g覽器中輸入http://127.0.0.1:1337/http://127.0.0.1:1337/show,可以看到瀏覽器頁(yè)面顯示OK,命令行打印相應(yīng)的log.

在項(xiàng)目中:
1.server.js預(yù)定義處理路由方法,然后調(diào)用啟動(dòng)服務(wù)器的方法(start.js)。
2.start.js負(fù)責(zé)啟動(dòng)服務(wù),解析url傳遞過(guò)來(lái)的路徑,將url傳遞給router.js。
3.router.js去判斷路由是否正確,然后調(diào)用對(duì)應(yīng)url的處理方法,處理方法實(shí)現(xiàn)在handlers.js。
4.handlers.js進(jìn)行真正的路由處理。
這樣,我們就手動(dòng)實(shí)現(xiàn)了一個(gè)nodejs路由控制的示例。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/18963.html

相關(guān)文章

  • Node.js開(kāi)發(fā)系列

    摘要:?jiǎn)?dòng)腳本在最后,我們調(diào)用了模塊,模塊即文件。調(diào)用路由對(duì)應(yīng)的方法模塊中判斷參數(shù)和組合成的路徑是否有實(shí)現(xiàn)。負(fù)責(zé)啟動(dòng)服務(wù),解析傳遞過(guò)來(lái)的路徑,將傳遞給。進(jìn)行真正的路由處理。這樣,我們就手動(dòng)實(shí)現(xiàn)了一個(gè)路由控制的示例。 上一節(jié)我們實(shí)現(xiàn)了簡(jiǎn)單的路由,這節(jié)我們實(shí)現(xiàn)更復(fù)雜的路由過(guò)程 統(tǒng)一管理我們?cè)趕erver.js初始化路由控制,啟動(dòng)腳本的模塊。 var server = require(./star...

    2i18ns 評(píng)論0 收藏0
  • 前端每周清單年度總結(jié)與盤(pán)點(diǎn)

    摘要:前端每周清單年度總結(jié)與盤(pán)點(diǎn)在過(guò)去的八個(gè)月中,我?guī)缀踔蛔隽藘杉拢ぷ髋c整理前端每周清單。本文末尾我會(huì)附上清單線(xiàn)索來(lái)源與目前共期清單的地址,感謝每一位閱讀鼓勵(lì)過(guò)的朋友,希望你們能夠繼續(xù)支持未來(lái)的每周清單。 showImg(https://segmentfault.com/img/remote/1460000010890043); 前端每周清單年度總結(jié)與盤(pán)點(diǎn) 在過(guò)去的八個(gè)月中,我?guī)缀踔蛔隽?..

    jackwang 評(píng)論0 收藏0
  • nodejs之express小記

    摘要:如果說(shuō)用一句話(huà)來(lái)概括那就是它開(kāi)啟了服務(wù)器端語(yǔ)言。系列的文章并不會(huì)從一開(kāi)始長(zhǎng)篇概論的講的歷史,安裝,以及其他很瑣碎的事情。只會(huì)專(zhuān)門(mén)介紹關(guān)于或者準(zhǔn)確來(lái)講是關(guān)于的敏捷開(kāi)發(fā)。性能不對(duì)已有的特性進(jìn)行二次抽象,我們只是在它之上擴(kuò)展了應(yīng)用所需的基本功能。 如果說(shuō)用一句話(huà)來(lái)概括Node那就是:它開(kāi)啟了JavaScript服務(wù)器端語(yǔ)言。 Node系列的文章并不會(huì)從一開(kāi)始長(zhǎng)篇概論的講Node的歷史,安裝,...

    awokezhou 評(píng)論0 收藏0
  • WebAssembly 系列(一)生動(dòng)形象地介紹 WebAssembly

    摘要:但是為什么執(zhí)行的更快呢在這個(gè)系列文章中,我會(huì)為你解釋這一點(diǎn)。所以當(dāng)人們說(shuō)更快的時(shí)候,一般來(lái)講是與相比而言的。被人們廣為傳播的性能大戰(zhàn)在年打響。性能的提升使得的應(yīng)用范圍得到很大的擴(kuò)展。現(xiàn)在通過(guò),我們很有可能正處于第二個(gè)拐點(diǎn)。 作者:Lin Clark 編譯:胡子大哈 翻譯原文:http://huziketang.com/blog/posts/detail?postId=58ce8036...

    wangbjun 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<