【nodejs之我的开源module】 使用express搭建web服务器,代码即文档的实现。
前言
都说nodejs适合制作restful_API,因为它有异步处理能力,能吞吐更多的请求,这一点是大家都认可的。前不久我使用nodejs+express+postgresql搭建了一个restful中间处理平台,感觉express的api在代码量多的时候,显得凌乱。然后我开发了一个能够更好的组织express代码的module,借鉴了一些java中的想法。希望达到一种平衡,一种更优雅的方式组织代码。
express
一个express项目的编码流程,大概是几步,
1.初始化app (express())
2.引入routes 引入路由,再由路由分发router
3.定义router
4.编写methods,get、post之类的响应
5 前端请求

拿我自己的项目看,这是一个router:
var express = require("express");
var router = express.Router();
var config = require("config-lite");
var check = require("../lib/check");
var select = require("../db/select");
router.get("/",check,(req,res,next)=>{
res.render("index",{
pageName:"jiankong"
})
});
router.post("/",check,(req,res,next)=>{
res.send({
msg:"jiankong"
})
});
module.exports = router;
这里面能有什么问题?——当代码量增大,各种app.get .post堆在一个文件夹下,或者把这些拆分成大量文件。这显然不利于代码的维护。
我的解决方案
我需要解决编写restful或者web应用时,代码不容易理解的问题。 所以我写了一个module:Ting.js
我需要的特性:
1.能够根据代码生成文档
2.代码逻辑更清晰
3.最好router能够直接配置
经过半个多月的开发。现在我的代码已经改造了我所有的项目。我认为它的代码逻辑足够清晰。比如router的定义:
module.exports = [
{
brie:"首页",
desc:"这是首页的整体说明",
path:"/",
class:Home,
rules:{ //对象
get:[
{
brie:"这是首页的get访问方法",
desc:"返回了hello world",
path:"/",
controller:["getHome"]
}
]
}
}
]
这段代码配置了一个path是/的router 其中它有一个get方法,处理函数是类Home的getHome方法。
感兴趣?那看看下面的教程,运行一个demo试试
ting.js
ting.js for 1.1.12 基于express的server工程化组件
开始之前
在一切开始之前,你需要具备express知识,另外,需要生成一份package.json。
准备就绪后,就开始吧!
Step 1: 下载express
你需要先下载express:
项目目录打开命令行运行 npm install express --save
Step 2: 下载ting.js
你需要先下载express:
项目目录打开命令行运行 npm install ting.js --save
Step 3: 创建index.js
入口文件
const path = require("path");
//引入express
const express = require("express");
//express_app
var app = express();
var ting = require("ting.js");
//定义routes
var routes = require("./routes");
//引入_package
var _package = require("./package.json");
//doc路径
_package.doc.path = path.join(__dirname,_package.doc.path);
//初始化
var ting_fn = function(init){
init(routes);
}
//生成路由
ting(app,ting_fn,_package);
//监听
app.listen(8090,()=>{
console.log("ting_server started 8090");
});
Step 4: 创建routes.js
配置routes规则
//处理类
var Home = require("./home.class");
//定义规则
module.exports = [
{
brie:"首页",
desc:"这是首页的整体说明",
path:"/",
class:Home,
rules:{ //对象
get:[
{
brie:"这是首页的get访问方法",
desc:"返回了hello world",
path:"/",
Examination:true, //开启代码视图
controller:["getHome"]
}
]
}
}
]
Step 5: 创建home.class.js
替代复杂的router,使用类文件作为请求入口
class Home{
main(){
}
getHome(req,res,next){
res.send("hello world");
}
}
module.exports = Home;
Step 6: 运行测试
项目目录打开命令行运行
node index
访问localhost:8090
你可以看到类Home调用了getHome,顺利返回hello world,
它还可以生成文档,在每次启动时根据package中的version生成html文档,配置方法在API中,也可以在我的gethub上的serverdemo中看到,地址附在资源一栏中。
总结
我觉得ting.js还可以在doc上下功夫,比如用代码标注方法,标注类,使用代码添加注释。另外配置文件的方式,可以通过中间服务,达成多人开发的效果,这些是我以后想做的。不过现在还是希望有朋友给我提交几个issues,完善现在的代码
https://github.com/294678380/Ting.js_server_demo/issues
资源
gethub: https://github.com/294678380/Ting.js
API: http://www.tingjs.top/api
一个demo的github: https://github.com/294678380/Ting.js_server_demo
【nodejs之我的开源module】 使用express搭建web服务器,代码即文档的实现。的更多相关文章
- express搭建web服务器、路由、get、post请求、multer上传文件、EJS模板引擎的使用
express官网 postman工具下载地址 multer的npm文档地址 express模板引擎怎么使用 地址:http://www.expressjs.com.cn/guide/using- ...
- 使用express创建web服务器
使用express创建web服务器 laiqun@msn.cn Contents 1. 简单的express服务器 2. 静态文件服务 3. 路由 4. 中间件 1. 简单的express服务器 安装 ...
- 用Nodejs+Express搭建web,nodejs路由和Ajax传数据并返回状态,nodejs+mysql通过ajax获取数据并写入数据库
小编自学Nodejs,看了好多文章发现都不全,而且好多都是一模一样的 当然了,这只是基础的demo,经供参考,但是相信也会有收获 今天的内容是用Nodejs+Express搭建基本的web,然后呢no ...
- [NodeJs] 用Nodejs+Express搭建web,nodejs路由和Ajax传数据并返回状态,nodejs+mysql通过ajax获取数据并写入数据库
小编自学Nodejs,看了好多文章发现都不全,而且好多都是一模一样的 当然了,这只是基础的demo,经供参考,但是相信也会有收获 今天的内容是用Nodejs+Express搭建基本的web,然后呢no ...
- nodejs搭建web服务器初级
nodejs搭建简单的web服务器 1.1简介 Node.js是基于Chrome JavaScript运行时建立的一个平台,实际上它是对Google Chrome V8引擎进行了封装,它主要用于创建快 ...
- 巨杉Tech | 使用 SequoiaDB + Docker + Nodejs 搭建 Web 服务器
容器化技术的出现大大简化了应用开发人员在构建底层基础设施的工作.SequoiaDB 巨杉数据库于3.2.1版本正式推出了 Docker 容器化部署方案,本文将会基于 SequoiaDB 巨杉数据库与N ...
- [开源框架推荐]Icepdf:纯java的pdf文档的提取和转换库
ICEpdf 是一个轻量级的开源 Java 语言的 PDF 类库.通过 ICEpdf 可以用来浏览.内容提取和转换 PDF 文档,而无须一些本地PDF库的支持. 可以用来做什么? 1.从pdf文件中提 ...
- nodejs-日常练习记录-使用express搭建static服务器.
cd C:\wxg\test\node_demo\myapp nvmw use 0.12.1 node static.js var express = require('express'); var ...
- Nodejs+Express 搭建 web应用
简单的记录下关于如何使用nodejs+Express 极速搭建一个web应用. 项目所需,要用到nodejs,那就去学咯.简单的看了下 七天学会NodeJS,Node.js 教程.发现其实好简单的,分 ...
随机推荐
- python web -- django
一. 安装 django $ pip install django (env)$ python >> import django >> django.VERSION >& ...
- JS获取浏览器类型和版本号
JS获取浏览器类型和版本号,增加了IE11的判断. 2015/7/5更新: 简化代码逻辑 var zbrowser = {} var ua = navigator.userAgent.toLowerC ...
- webpack自动生成页面
在项目中我们会不断的添加,优化代码,每次添加优化之后都需要打包进行再次上传更新.这时问题就回来了,每次打包出来js,css文件的名字都是一样的,在首页index.html的引用也不会变,这样老用户在访 ...
- Tp框架获取客户端IP地址
/** * 获取客户端IP地址 * @param integer $type 返回类型 0 返回IP地址 1 返回IPV4地址数字 * @return mixed */ function get_cl ...
- Linux操作数据库基本
连接数据库MySQL中每个命令后都要以分号;结尾1: mysql -h 192.168.10.250 -u root -p2:Enter password //要求你输入密码cug313@com3:s ...
- spring aop + xmemcached 配置service层缓存策略
Memcached 作用与使用 基本介绍 1,对于缓存的存取方式,简言之,就是以键值对的形式将数据保存在内存中.在日常业务中涉及的操作无非就是增删改查.加入缓存机制后,查询的时候,对数据进行缓存,增删 ...
- java网络编程之socket
网络编程是什么 网络编程的本质是两个设备之间的数据交换,当然,在计算机网络中,设备主要指计算机.数据传递本身没有多大的难度,不就是把一个设备中的数据发送给两外一个设备,然后接受另外一个设备反馈的数据. ...
- spring auto-config
spring security auto-config auto-config配置 <http auto-config="true"> </http> 自动 ...
- 真机调试方法- IOS/Android移动设备
真机调试 调试安卓 方法一 开启手机的USB调试 安装运行项目 使用chrome步骤如下图 打开开发者工具 打开设备管理 选择设备进行debug 方法二: 直接在地址栏输入chrome://inspe ...
- Ionic/Angularjs 知识点解析
Ionic/Angularjs 知识点解析 angular-ui-router(状态跳转) state的定义:(在app.js的config下配置) $stateProvider .state('ap ...