【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工程化组件

Ting.js简述

Ting.js是一款基于express的server工程化组件,它的主要作用,在于简化express的较繁杂router操作,使nodejs的server端API变得更加友好。附加功能可以实时生成路由文档,使api请求一目了然,简洁代码的同时保持了express可扩展性能。

开始之前

在一切开始之前,你需要具备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

时间: 2024-10-12 20:54:31

【nodejs之我的开源module】 使用express搭建web服务器,代码即文档的实现。的相关文章

使用Nodejs搭建Web服务器

使用Nodejs搭建Web服务器是学习Node.js比较全面的入门教程,因为实现Web服务器需要用到Nodejs中几个比较重要的模块:http协议模块.文件系统.url解析模块.路径解析模块.以及301重定向技术等,下面我们就一起来学习如何搭建一个简单的Web服务器. 作为一个Web服务器应具备以下几个功能: 1.能显示以.html/.htm结尾的Web页面 2.能直接打开以.js/.css/.json/.text结尾的文件内容 3.显示图片资源 4.自动下载以.apk/.docx/.zip结尾

用Nodejs+Express搭建web,nodejs路由和Ajax传数据并返回状态,nodejs+mysql通过ajax获取数据并写入数据库

小编自学Nodejs,看了好多文章发现都不全,而且好多都是一模一样的 当然了,这只是基础的demo,经供参考,但是相信也会有收获 今天的内容是用Nodejs+Express搭建基本的web,然后呢nodejs路由和Ajax之间的数据传输,也就是表单提交,然后在用nodejs把数据写入mysql数据库 用到的东西比较多,但是还是很有趣的 1.安装node.js 安装node.js,直接去官网下载然后根据需求点击下一步就好了 Node.js安装包及源码下载地址为:https://nodejs.org

Nodejs 入门秘籍,搭一个最简单的web服务器。(菜鸟的你也能秒懂)

心血来潮,总结了一个Nodejs入门秘籍.看了你就想学NodeJs了. 一.简单介绍nodejs 初学nodejs  ,直接上简单实例.先简单说明一下:nodejs ,nodejs相当于服务器端的 可以轻易搭建一个服务器端. nodejs是用C++开发的一种运行于服务器端的语言,可以写网站后台程序,可以做服务端应用开发,语法和JAVASCRIPT一样,会JS,就是会NodeJS,区别于,普通JS是脚本运行客户端,而NODEJS中的JS是运行于服务器端,NODEJS的作用相当PHP,ASP等语言.

巨杉Tech | 使用 SequoiaDB + Docker + Nodejs 搭建 Web 服务器

容器化技术的出现大大简化了应用开发人员在构建底层基础设施的工作.SequoiaDB 巨杉数据库于3.2.1版本正式推出了 Docker 容器化部署方案,本文将会基于 SequoiaDB 巨杉数据库与Nodejs的 Docker 镜像搭建一个简易的 Web 服务器. 1.规划部署我们将会搭建一个三分区三副本的高可用 SequoiaDB 巨杉数据库.同时,我们将会创建一个 SequoiaDB 巨杉数据库的 MySQL 实例,用以提供 Nodejs 作为数据源. 容器角色 容器名/IP:端口 分区组

[开源框架推荐]Icepdf:纯java的pdf文档的提取和转换库

ICEpdf 是一个轻量级的开源 Java 语言的 PDF 类库.通过 ICEpdf 可以用来浏览.内容提取和转换 PDF 文档,而无须一些本地PDF库的支持. 可以用来做什么? 1.从pdf文件中提取所有的文字或信息,比如给pdf文档做摘要 2.把pdf转换成图片,这个功能非常的棒,比如给pdf文件做缩略图或者直接做一个纯js的pdf阅读器. 3.pdf文档的分页打印和信息搜索. 4.pdf中添加.修改或删除批注信息. 在pdf到图片转换方面,最好的开源产品. 官方地址:http://www.

Nodejs+Express 搭建 web应用

简单的记录下关于如何使用nodejs+Express 极速搭建一个web应用. 项目所需,要用到nodejs,那就去学咯.简单的看了下 七天学会NodeJS,Node.js 教程.发现其实好简单的,分分钟上手,这里只是简单记录,nodejs 对数据库的操作不做详细介绍.  看七天不存在的,呵呵.大概的过了一遍,然后开始干活. 首先显得有nodejs环境吧,nodejs下载地址,安装完毕后,检查版本号,看是否成功安装. huangenaideMacBook-Pro:x-wallet huangen

Nodejs搭建web服务器实现简单的登陆

本服务器采用了node-koa(2.0):koa是Express下的一个web框架. 搭建步骤: 1.首先我们创建一个web-koa目录,在目录下创建app.js,package.json,start.js三个文件. 2.然后我们来编辑最基本的package.json文件,如下: $ npm init { "name": "myapp", "version": "1.0.0", "description":

使用express创建web服务器

[email protected] Contents 1.?简单的express服务器 2.?静态文件服务 3.?路由 4.?中间件 1.?简单的express服务器 安装npm install express使用npm找不到源,改用cnpm 第一版本 var express = require('express'); var app = express(); app.listen(18001,function afterlisten(){ console.log('express runnin

如何开发一个java开源框架-----Jvn框架之实现自动生成在线文档(第七讲)

一 . 前言:博主正在教大家如何开发一个javaEE框架,我把框架命名为Jvn,博客里有完整的开发视频,每一篇博文都是一个知识点: 关于框架的介绍和学习,可以从我博客第一讲开始看起,博客首页:http://www.cnblogs.com/everxs/ 本次内容视频以及源码下载地址:http://pan.baidu.com/s/1o6MJnFc 二. 本次博客讲的内容 场景:现在是APP时代,APP很热门,而且跟后台交互跑的都是HTTP协议,所以讲到这里,对于这里面的交互. 安卓工程师(客户端)