头几天写了路由的前端设置,也是spa的必要条件,既然前端路由设置好了,那末后端必将也要有路由体系相配套。这里以nodejs为例,简朴的路由完成,参考了一些网上的文章以及express等开源库,是很简朴的路由完成。
这里不触及排查反复路由,固然增加上去也是很简朴的。
先是index.js的代码:
var server=require("./server");
var app = server.router();
app.set('/demo',function () {
return 'demo';
})
app.set('/test',function () {
return 'test';
})
app.start()
从上面也许能够看到router的api了,只要两个api,一个是set,一个是start,set担任设置路由,start担任启动服务器。
然后是server.js:
var http = require('http');
var url = require('url');
var router = function () {
function App () {
this.path={};
}
App.prototype = {
set : function (route,handler) {
this.path[route]=handler;
},
start: function () {
var path = this.path
function handleRequest (req,res) {
if( typeof path[req.url] === 'function' ){
var content = path[req.url]();
}else {
var content = '404 Not Found';
}
var pathname = url.parse(req.url).pathname;
console.log('request for ' + pathname +'recevied');
res.write(content);
res.end();
}
http.createServer(handleRequest).listen(3000,()=>{console.log('port 3000');})
}
};
return new App();
}
exports.router = router;
如上,能够看到引入了url和http模块,url担任剖析pathname,http担任建立服务器,末了返回App的实例,this.path里存储着已经在设置好的路由及其回调函数,这边仅仅是简朴的返回一个值,详细还要变动。至于start里的handleRequest就是详细返回内容了,详细能够看http的相干api。就这简朴的代码就是一个低级的路由模块。
固然另有更多的功用能够完成。比方衬着模板,相似flask的render_template
代码以下:
var fs = require('fs');
var path = require('path');
function renderTemplate (file) {
var html = fs.readFileSync(path.dirname()+'/templates/'+file).toString();
return html;
}
module.exports=renderTemplate
都是很简朴的完成。虽然没有详细看express的衬着部份,不过我预计也是差不多的。
app.set('/demo',function () {
return renderTemplate('index.html')
})
我这里是先放在templates的文件夹里,模拟flask。也许云云。
接下来要做的就是前端路由和后端路由相配合。组成spa的雏形。