原生node创建路由的分层

为了方便维护 可以将路由内容跟创建路由以及服务端基本结构分来

可以分为四层

服务端的基本基本结构 这个结构就能通过上面暴露的内容 拼成完整的,这里完全是createServer的逻辑 跟业务代码无关 可以说是比较固定的

这里完全是createServer的逻辑 跟业务代码无关 可以说是比较固定的

const http = require('http');
const PORT = 8000;
const serverHandle = require('../app');const server = http.createServer(serverHandle);
server.listen(PORT);

再把处理 设置一些基本信息、基本设置的配置封装一个文件 然后通过 module.exports暴露,这也和业务代码关联较小

属于系统 服务器基本设置

const apiContent = require('./apiContent');
const serverHandle = (req,res) => {res.setHeader('Content-type','application/json');//业界规范  就是用json格式const Data = apiContent(req,res);if(Data){res.end(JSON.stringify(Data));return;}//访问的是没定义的接口 返回res.writeHead(404,{'Content-type':'text/plain'});res.write('404');res.end();
};module.exports = serverHandle;

把对应接口的被访问时的处理的内容封装一个文件 然后通过 module.exports暴露 就是只管路由接口,返回正确格式,他不管数据怎么计算怎么处理等不归他考虑

const apiContent = (req,res) => {const method = req.method;const url = req.url;const path = url.split('?')[0];if(method === "GET" && path === "/"){return {msg:'/ GET'}}if(method === "POST" && path === "/login"){return {msg:'/login  POST'}}
}module.exports = apiContent;

在这里对数据进行处理,计算等的内容 只关心数据 最后返回数据并暴露

const getList = (author,keyword) => {return[   //一般这里是返回的数据库中提取查找的数据  这里为了方便直接写出来的{id:1,title:'标题A',content:'内容A',createTime:1546610491112,author:'zhangsan'},{id: 2,title:'标题B',content:'内容B',createTime: 1546610524373,author: 'zhangsan'}]}module.exports = {getList,
};

在服务器项目中 经常写两个文件夹 router和controller 他是将路由操作和数据操作分开 这样容易维护 可容易调试错误等

router:写路由相关的 就是只管访问分配什么数据,保证数据的格式是正确的,以及接受发过来的信息、数据等

controller :只管处理数据 根据router中的内容发过来的参数处理 把数据返回给router中的内容

所以是router调用controller的关系

原生node创建路由的分层相关推荐

  1. Node.js 系列:构建原生 Node.js 应用

    原生 Node.js 应用 Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境 Node.js 使用了一个事件驱动.非阻塞式 I/O 的模型,使其轻量又高效 Nod ...

  2. node创建web静态服务

    在上一篇中,用了http模块和fs模块来让html页面呈现出来,但是这样做有缺点,比如我们来看一个例子,例如我现在手上有一个前端写好了的静态文件夹,我想吧它部署在node的静态服务上,你将会发现,如果 ...

  3. 原生node写一个静态资源服务器

    myanywhere 用原生node做一个简易阉割版的anywhere静态资源服务器,以提升对node与http的理解. 相关知识 es6及es7语法 http的相关网络知识 响应头 缓存相关 压缩相 ...

  4. php udp发送和接收_63、php利用原生socket创建udp服务

    1.案例函数汇总 2.案例 通过socket创建udp服务,获取对端的ip和port信息.并进行打印 2.1.udp服务源码 /** * Copyright(C) Iamasb * @project ...

  5. node.js路由控制

    一.工作原理 当通过浏览器访问app.js建立的服务器时,会看到一个简单的页面,实际上它已经完成了许多透明的工作, 当访问http://localhost:3000,浏览器会向服务器发送请求,包括请求 ...

  6. vue3 创建路由「vue-router 4.x 的使用」

    本篇主要讲解 vue-router 4.x 如何使用, vue-router 3.x 的使用可以移步此文 Vue 前端路由.vue-router . 1. 什么是 vue-router vue-rou ...

  7. node 创建静态web服务器(上)

    声明:本文仅用来做学习记录. 本文将使用node创建一个简单的静态web服务器. 准备工作: 首先,准备好一个类似图片中这样的页面 第一步: 创建 http 服务: const http = requ ...

  8. Vue3(撩课学院)笔记07-vueRouter路由,创建路由,路由重定向,路由跳转,动态路由,路由懒加载,路由嵌套,路由参数穿传递的两种形式,通过事件来跳转路由

    1.vueRouter路由的两种模式 哈希模式:以#号分割,前端路由一般用hash模式比较多,可以兼容ie8以上,井号后面不发起请求 历史模式:putstate()和replaceState()方法入 ...

  9. html页面生成器使用教程,实战 | HTML页面生成器:使用JavaScript和Node创建CLI

    上一篇文章:实战 | 从零开始使用JavaScript制作自己的命令行(CLI工具) 中介绍了如何从零开始制作CLI,只是一个简单的示例,今天更进一步,来制作一个实际的程序,生成HTML模板. 在这篇 ...

最新文章

  1. Java 数据类型转换
  2. 漫画 | 小公司卧薪尝胆三年,意外拿到美团offer
  3. 65个免费和高质量的纹理包
  4. 密码设置Android设备管理
  5. OpenGL相机控制之二
  6. [Ray Linn]用Visual Studio 2008开发IE BHO(浏览器帮助对象) 之二
  7. OpenCV C++ 10 - Invert Images
  8. 使用pscp从windows电脑拷贝数据到linux遇到的ssh_init错误
  9. Windows 9信息曝光:统一开发接口、整合Cortana到任务栏
  10. MATLAB基本用法介绍
  11. Hexo 入门指南(六) - sitemap、rss 和部署
  12. 加速ASP.NET Core WEB API应用程序——第1部分
  13. svn 设置文件可执行权限
  14. Virtualbox以及VWare在Win10下的不兼容
  15. Eclipse Community Survey 2012
  16. 看产品经理怎么用360实现Java垃圾回收!
  17. 虚拟机VM 安装CoreOS
  18. 怎样高效利用PPT模板网站找到适合自己的PPT模板
  19. springboot启动报错@Bean definition illegally overridden by existing bean definition
  20. 石油化工企业防雷工程和防雷接地应用方案

热门文章

  1. 三调数据库及DLTB各个字段含义
  2. 堆栈在DNA计算机中的应用,堆栈和二叉树数据结构在DNA计算机中的设计与实现
  3. 医院怎样进行计算机安全管理制度,医院信息安全管理制度
  4. linux中波浪号代表什么_建筑电气施工图纸中BV、ZRBLV和TC、SC符号代表什么?
  5. 怎么用python画圆柱_python-如何绘制具有非恒定半径的圆柱
  6. 最详细的YOLOv3论文笔记
  7. 软考网络管理员学习笔记3之第三章网络体系结构
  8. python中怎么比较两个列表的大小_python中对列表元素大小排序(冒泡排序法,选择排序法和插入排序法)—排序算法...
  9. Python实现感知器的逻辑电路(与门、与非门、或门、异或门)
  10. c++11中的for简化用法