路由的後端配置

前幾天寫了路由的前端設置,也是spa的必要條件,既然前端路由設置好了,那麼後端勢必也要有路由系統相配套。這裏以nodejs爲例,簡單的路由實現,參考了一些網上的文章以及express等開源庫,是很簡單的路由實現。
這裏不涉及排查重複路由,固然添加上去也是很簡單的。
先是index.js的代碼:html

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。就這簡單的代碼就是一個初級的路由模塊。node


固然還有更多的功能能夠實現。好比渲染模板,相似flask的render_templateexpress

代碼以下:flask

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的雛形。api

相關文章
相關標籤/搜索