一、繁琐的自建路由

app.js

var server = require('./server');server.startServer();

server.js

var http = require('http');
var fs = require('fs');function startServer () {var onRequest = function(request, response) {if (request.url === '/' || request.url === '/home') {response.writeHead(200, { 'Content-Type': 'text/html'});fs.createReadStream(__dirname + '/index.html', 'utf8').pipe(response);} else if (request.url === '/review') {response.writeHead(200, { 'Content-Type': 'text/html'});fs.createReadStream(__dirname + '/review.html', 'utf8').pipe(response);} else if (request.url === '/api/v1/records') {response.writeHead(200, { 'Content-Type': 'application/json' });var jsonObj = {name: 'sfafas',job: 'coder'}response.end(JSON.stringify(jsonObj));} else {response.writeHead(200, {'Content-Type': 'text/html'});fs.createReadStream(__dirname + '/404.html', 'utf8').pipe(response);}}var server = http.createServer(onRequest);server.listen(3000);
} console.log('finished');
module.exports.startServer = startServer;

二、重构路由

app.js

var server = require('./server');
var router = require('./router');var handler = require('./handler');var handle = {};
handle['/'] = handler.home;
handle['/home'] = handler.home;
handle['/review'] = handler.review;
handle['/api/v1/records'] = handler.api_records;server.startServer(router.route,handle);

server.js

var http = require('http');
var fs = require('fs');function startServer (route,handle) {var onRequest = function(request, response) {route(handle, request.url,response);}var server = http.createServer(onRequest);server.listen(3000);
} console.log('finished');
module.exports.startServer = startServer;

handler.js

var fs = require('fs');function home(response) {response.writeHead(200, { 'Content-Type': 'text/html'});fs.createReadStream(__dirname + '/index.html', 'utf8').pipe(response);
}function review(response) {response.writeHead(200, { 'Content-Type': 'text/html'});fs.createReadStream(__dirname + '/review.html', 'utf8').pipe(response);
}function api_records(response) {response.writeHead(200, { 'Content-Type': 'application/json' });var jsonObj = {name: 'sfafas',job: 'coder'}response.end(JSON.stringify(jsonObj));
}module.exports = {home: home,review: review,api_records: api_records
}

router.js

var fs = require('fs');function route(handle, pathname,response) {console.log('Routing a request for' + pathname);if (typeof handle[pathname] === 'function') {handle[pathname](response);} else {response.writeHead(200, {'Content-Type': 'text/html'});fs.createReadStream(__dirname + '/404.html', 'utf8').pipe(response);}
}module.exports.route = route;

三、页面整体结构

转载于:https://www.cnblogs.com/bbcfive/p/10223889.html

nodejs繁琐地自建路由相关推荐

  1. nodejs开发 过程中express路由与中间件的理解 - pyj063 - 博客园

    nodejs开发 过程中express路由与中间件的理解 nodejs开发 express路由与中间件 路由 通常HTTP URL的格式是这样的: http://host[:port][path] h ...

  2. nodejs动态加载路由

    Nodejs动态加载路由,Nodejs遍历目录,Nodejs路由工具 工具来源: Nodejs需要手动加载路由文件,如果一个个添加,项目逐渐扩大,比较麻烦. 尤其在项目route目录下,增加模块文件夹 ...

  3. 使用Nodejs创建一个Web服务器应如何操作?以及路由相关知识了解

    文章目录 Nodejs创建一个Web服务器 Node.js创建第一个应用 Web服务器介绍 Nodejs创建一个Web服务器 路由 EJS模块引擎 Get.Post 获取GET传值 获取POST传值 ...

  4. 用ISA Server做***路由代替专线

    近日给政府做网络改造与升级的工程,在工程的后期,该政府分为"东院"与"西院",原来东院与西院各有一条到网通的Internet线路,由于在本次网络工程中,还增加了 ...

  5. 从os.cpus()来分析nodejs源码结构

    这几天和小伙伴在研究怎么用nodejs来监控机器的硬件信息,其中有项是要计算CPU的剩余idle信息,第一时间想到用top命令, 可以直接获取当前机器的硬件信息.本着好奇查了下top命令计算CPU i ...

  6. 2022年湖北中级工程师职称评审详细流程是哪些步骤呢? 甘建二

    2022年湖北中级工程师职称评审详细流程是哪些步骤呢? 2022年湖北初级.中级.高级工程师职称评审已经都开始申报资料了,各地都开始准备职称评审材料了,需要代评初级.中级.高级职称的可以联系甘建二,今 ...

  7. Nodejs实现微信网页授权及正确配置JS-SDK接口

    原文链接:<Nodejs实现微信网页授权及正确配置JS-SDK接口>- 陈帅华 帅华君将在本文介绍基于Nodejs实现微信网页授权以及如何正确在前后端配置JS-SDK接口. 微信网页授权 ...

  8. 带你入门nodejs第一天——node基础语法及使用

    带你入门nodejs第一天--node基础语法及使用 带你入门nodejs第二天--http 模块化 npm yarm 带你入门nodejs第三天-express路由 带你学习nodejs第四天--身 ...

  9. 带你入门nodejs第二天——http 模块化 npm yarm

    带你入门nodejs第一天--node基础语法及使用 带你入门nodejs第二天--http 模块化 npm yarm 带你入门nodejs第三天-express路由 带你学习nodejs第四天--身 ...

最新文章

  1. js实现点击li标签弹出其索引值
  2. 侯捷译Practical Java(含源码)
  3. jsp页面遍历后台传递的对象
  4. Android数据存储之文件存储(瞬时数据的存储与读取)项目已上传GitHub
  5. 使用AndroidStudio创建自定义gradle插件并被引用实战例子
  6. python3 llvmlite源码_将Paddle-Lite在树莓派上源码编译及编译python预测库
  7. boost::python模块实现使用内置 python 数据类型创建 ndarrays 的示例,并提取成员变量的类型和值测试程序
  8. 分布式架构的session问题
  9. Android中文API-ViewStub
  10. 详解数据可视化的4种类型:手把手教你正确选择图表
  11. 【免费毕设】asp.netERP客户管理系统的实现(源代码+lunwen)
  12. TFS(Visual Studio Team Services) / Azure Devops git认证失败 authentication fails 的解决方案 http协议
  13. TOMCAT报错解决
  14. 图片查看器-Python-tkinter
  15. 随机森林 算法原理详解与实现步骤
  16. 如何利用大数据做遗传病智能化诊断?| 硬创公开课
  17. QQ聊天记录备份助手 v1.0——搜索、备份、恢复QQ聊天记录文件,重装系统必备...
  18. 解决 openwrt/Lede pppoe拨号频繁掉线的问题
  19. 国内云服务商亟需提供并行计算服务
  20. python和java学哪个好-Python和Java二选一该学啥?

热门文章

  1. File 类型的文本框,选择文件时响应很慢解决方法
  2. gunzip 和 unzip 解压文件到指定的目录
  3. (MyEclipse) MyEclipse完美破解方法(图)
  4. VM Depot 分布式计算框架主题应用精选
  5. MasterPage.master文件
  6. 在windows XP运行3660路由器仿真器
  7. mxmkc编译器参数!
  8. linux 安装mysql
  9. mysql半同步复制问题排查
  10. 模拟游客一天的生活与旅游java程序代写源码