摘要:啟動腳本在最后,我們調(diào)用了模塊,模塊即文件。調(diào)用路由對應(yīng)的方法模塊中判斷參數(shù)和組合成的路徑是否有實現(xiàn)。負責(zé)啟動服務(wù),解析傳遞過來的路徑,將傳遞給。進行真正的路由處理。這樣,我們就手動實現(xiàn)了一個路由控制的示例。
上一節(jié)我們實現(xiàn)了簡單的路由,這節(jié)我們實現(xiàn)更復(fù)雜的路由過程
統(tǒng)一管理
我們在server.js初始化路由控制,啟動腳本的模塊。
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");
啟動腳本
在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);這個方法,這個方法是在router模塊中實現(xiàn)。
調(diào)用路由對應(yīng)的方法
router模塊中判斷參數(shù)pathname和handler組合成的路徑是否有實現(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;
多個路由方法
首先我們需要定義多個路由方法,為了方便統(tǒng)一的管理控制,我們將路由處理的方法都寫在一個handlers.js的文件中,首先定義三個方法,這里只是實現(xià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;
最后
我們在瀏覽器中輸入http://127.0.0.1:1337/和http://127.0.0.1:1337/show,可以看到瀏覽器頁面顯示OK,命令行打印相應(yīng)的log.
在項目中:
1.server.js預(yù)定義處理路由方法,然后調(diào)用啟動服務(wù)器的方法(start.js)。
2.start.js負責(zé)啟動服務(wù),解析url傳遞過來的路徑,將url傳遞給router.js。
3.router.js去判斷路由是否正確,然后調(diào)用對應(yīng)url的處理方法,處理方法實現(xiàn)在handlers.js。
4.handlers.js進行真正的路由處理。
這樣,我們就手動實現(xiàn)了一個nodejs路由控制的示例。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/18963.html
摘要:啟動腳本在最后,我們調(diào)用了模塊,模塊即文件。調(diào)用路由對應(yīng)的方法模塊中判斷參數(shù)和組合成的路徑是否有實現(xiàn)。負責(zé)啟動服務(wù),解析傳遞過來的路徑,將傳遞給。進行真正的路由處理。這樣,我們就手動實現(xiàn)了一個路由控制的示例。 上一節(jié)我們實現(xiàn)了簡單的路由,這節(jié)我們實現(xiàn)更復(fù)雜的路由過程 統(tǒng)一管理我們在server.js初始化路由控制,啟動腳本的模塊。 var server = require(./star...
摘要:前端每周清單年度總結(jié)與盤點在過去的八個月中,我?guī)缀踔蛔隽藘杉?,工作與整理前端每周清單。本文末尾我會附上清單線索來源與目前共期清單的地址,感謝每一位閱讀鼓勵過的朋友,希望你們能夠繼續(xù)支持未來的每周清單。 showImg(https://segmentfault.com/img/remote/1460000010890043); 前端每周清單年度總結(jié)與盤點 在過去的八個月中,我?guī)缀踔蛔隽?..
摘要:如果說用一句話來概括那就是它開啟了服務(wù)器端語言。系列的文章并不會從一開始長篇概論的講的歷史,安裝,以及其他很瑣碎的事情。只會專門介紹關(guān)于或者準確來講是關(guān)于的敏捷開發(fā)。性能不對已有的特性進行二次抽象,我們只是在它之上擴展了應(yīng)用所需的基本功能。 如果說用一句話來概括Node那就是:它開啟了JavaScript服務(wù)器端語言。 Node系列的文章并不會從一開始長篇概論的講Node的歷史,安裝,...
摘要:但是為什么執(zhí)行的更快呢在這個系列文章中,我會為你解釋這一點。所以當(dāng)人們說更快的時候,一般來講是與相比而言的。被人們廣為傳播的性能大戰(zhàn)在年打響。性能的提升使得的應(yīng)用范圍得到很大的擴展?,F(xiàn)在通過,我們很有可能正處于第二個拐點。 作者:Lin Clark 編譯:胡子大哈 翻譯原文:http://huziketang.com/blog/posts/detail?postId=58ce8036...
閱讀 1252·2021-11-24 09:38
閱讀 2657·2021-09-27 14:00
閱讀 1223·2019-08-30 15:55
閱讀 1395·2019-08-30 14:16
閱讀 1538·2019-08-30 10:54
閱讀 2917·2019-08-28 17:58
閱讀 809·2019-08-26 13:22
閱讀 1283·2019-08-26 12:01