router.js 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. 'use strict'
  2. var Router ={
  3. go:function(res,req){
  4. let url = req.url=='/'?'/index':req.url;
  5. let URLParse = URL.parse(url,true);
  6. let URLArr = URLParse.pathname.split('/');
  7. let query = URLParse.query;
  8. let enterURI = String(URLArr[1]);
  9. if(enterURI=='') enterURI='index';
  10. if(enterURI.match(WhiteList.HandlerRules)){
  11. return Router.getHandler(url,res,req);
  12. }else if(enterURI.match(WhiteList.StaticRules)){
  13. return STATIC.load(ROOTPATH+URLParse.pathname,query,res);
  14. }else{
  15. Router._error('Router Go ERROR:'+url,res);
  16. Logger.error(url+' WhiteList Check error!');
  17. }
  18. },
  19. getHandler:function(url,res,req){
  20. let URLParse = URL.parse(HANDLERPATH+url,true);
  21. let URLArr = URLParse.pathname.split('/');
  22. if(URLArr[URLArr.length-1]=='') URLArr[URLArr.length-1]='index';
  23. let FileName = URLArr.join('/')+'.js';
  24. let mod,call='index';
  25. if(!FILE.existsSync(FileName)){
  26. call = URLArr.pop();
  27. FileName = URLArr.join('/')+'.js';
  28. }
  29. try{
  30. mod = require(FileName);
  31. if(mod['__construct']){
  32. let cons = mod['__construct'](res,req,URLParse.query);
  33. if(cons && cons.status=='error') Router._error('Router Go ERROR:'+cons.msg,res);
  34. }
  35. mod[call](res,req,URLParse.query);
  36. }catch(err){
  37. Logger.error(err);
  38. res.writeHead(404, {'Content-Type': 'text/html'});
  39. res.end('404');
  40. }
  41. },
  42. _error:function(log,res,req){
  43. res.writeHead(404, {'Content-Type': 'text/html'});
  44. res.end('404');
  45. }
  46. };
  47. module.exports = Router;