1. 工程说明

该工程是基于 Express 库,编写的一个 API 查询返回的一个微型应用。

API Resource 就是把 API 的内容当做网络资源去处理。工程中的路由访问也是返回 API 内容资源

该工程采用 MVR 模式,即 Model-View-Route。也就是访问路由(Route)地址,返回视图(View)信息。同时,返回的内容也是从数据模型(Model)中处理组装出来的。

  关于 MVR 的个人理解:

    (MVR)模型-视图-路由 模式 不同于 (MVC)模型-视图-控制 模式。

    MVC 是以控制器来区分工程中的各种功能的实现,而 MVR 是以路由URL,绑定地址访问的方式来实现工程中各种业务功能。

    相比较而言 MVR 更扁平 因为它可以设计一系列的地址内容来进行数据的整理和组装 而 MVC 模式的地址是通过 Controller 控制器框架自行组装的,理解起来更复杂。

2. 工程目录

ntask-api
|----libs
| |----boot.js # 启动文件
| |----middlewares.js # 配置app端口等参数
| |----config.js # 数据库基本参数
|
|----models
| |----tasks.js # 数据模型 tasks 数据库定义
| |----users.js # 数据模型 users 数据库定义
|
|----routes
| |----index.js # '/' url访问
| |----tasks.js # '/tasks' url访问
|
|----index.js # 主脚本
|----db.js # 数据库创建连接脚本

3. 工程分析

  • 工程采用 ES6 语言编写,需要使用 babel-present-es2015 进行编译成 ES5 语言来进行执行。
  • index.js 文件中使用 consign 引入各种路径脚本资源。
  • db.js 是首先需要被 consign 加载进入系统中的,用于实现models模型定义的数据库的全局变量 db 整合入所有的数据库信息。
  • libs/config.js 记录有数据库的配置信息,本工程中采用的是 sqlite3 数据库系统,用于数据的处理。
  • models 文件夹中定义了 sqlite3 被操作的表,并且在 db.js 脚本中被引入,通过 sequelize 进行wenjj数据化,创建数据库和关联数据表等。本工程有两个数据模型,也即数据库中两个数据表,Users和Tasks,而且Users 1 -> N Tasks。
  • routes 文件夹定义了该工程API的路由信息,不同的地址对应不同的视图(此项目中的视图使用 JSON 数据返回代替)。

4. 启动工程

5. 源码

Build Apis With Node.js》(git checkout cc07683) 实现第5章节内容:Working with SQL database

> git clone https://github.com/caio-ribeiro-pereira/building-apis-with-nodejs.git

> cd building-apis-with-nodejs

building-apis-with-nodejs> git checkout cc07683

Note: checking out 'cc07683'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout. If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example: git checkout -b <new-branch-name> HEAD is now at cc07683 implementing chapter 5 building-apis-with-nodejs>

一个迷你的 Node.js 基于 Express 的 MVR 模式的 API工程 的分析的更多相关文章

  1. Node.js基于Express框架搭建一个简单的注册登录Web功能

    这个小应用使用到了node.js  bootstrap  express  以及数据库的操作 :使用mongoose对象模型来操作 mongodb 如果没了解过的可以先去基本了解一下相关概念~ 首先注 ...

  2. node.js,express入门看详细篇

    先最简单的代码 安装 npm install express app.js 代码内容 const express = require('express') const app = express() ...

  3. 如何设计一个基于Node.js和Express的网站架构?

    前言 今年七月份,我和几个小伙伴们合伙建立了一个开发团队.业务开展如火如荼的同时,团队宣传就提上了日程,所以迫切需要搭建公司网站出来.确定目标后我们就开始考虑如果构建一个企业网站.先是进行业内调查,看 ...

  4. Node.js、express、mongodb 入门(基于easyui datagrid增删改查)

    前言 从在本机(win8.1)环境安装相关环境到做完这个demo大概不到两周时间,刚开始只是在本机安装环境并没有敲个Demo,从周末开始断断续续的想写一个,按照惯性思维就写一个增删改查吧,一方面是体验 ...

  5. LIGHTX-CMS —— 基于 Node.js,Express.js 以及 SQLite 3 搭建的个人博客系统

    概述 LIGHTX-CMS 是我基于 Node.js,Express.js 以及 SQLite 3 搭建的个人博客发布系统. 项目本身可以拿来部署个人博客网站,同时我认为其也适合用以新手学习 Node ...

  6. Node.js系列-express(上)

    前言 Node.js系列的第一篇:http,大概描述了通过使用node.js内置的api创建一个服务并监听request实现简单的增删改查.现在,我们就通过通读express官网及使用express框 ...

  7. Node.js、express、mongodb 实现分页查询、条件搜索

    前言 在上一篇Node.js.express.mongodb 入门(基于easyui datagrid增删改查) 的基础上实现了分页查询.带条件搜索. 实现效果 1.列表第一页. 2.列表第二页 3. ...

  8. Feathers JS – 基于 Express 构建数据驱动的服务

    Feathers 是一个轻量的 Web 应用程序框架,基于 NodeJS 最流行​​的 Web 框架——Express.这使得它很容易使用 socket.io 来创建 RESTful Web 服务和实 ...

  9. node.js框架express的安装

    node.js框架express的安装 首先假定你已经安装了 Node.js,接下来为你的应用创建一个目录,然后进入此目录并将其作为当前工作目录. $ mkdir myapp $ cd myapp 通 ...

随机推荐

  1. sql语句表连接

    "Persons" 表: Id_P LastName FirstName Address City 1 Adams John Oxford Street London 2 Bush ...

  2. 哈代平衡 &连锁不平衡

    哈代-温伯格平衡定律(Hardy-Weinberg equilibrium),即HW平衡,是指对于一个大且随机交配的种群,基因频率和基因型频率在没有迁移.突变和选择的条件下会保持不变. 它是建立在一个 ...

  3. Hadoop权威指南文摘

    第1章 初识Hadoop 1.1 数据!数据! 1.2 数据的存储与分析 HDFS实现数据的存储,MapReduce实现数据额分析与处理 1.3 相较于其他系统的优势 MapReduce是一个批量查询 ...

  4. javascript总结21:javascript-JSON与遍历

    1 什么是JSON JavaScript Object Notation(JavaScript对象表示形式) JavaScript的子集 JSON和对象字面量的区别 JSON的属性必须用双引号引号引起 ...

  5. Boost学习之语法解析器--Spirit

    Boost.Spirit能使我们轻松地编写出一个简单脚本的语法解析器,它巧妙利用了元编程并重载了大量的C++操作符使得我们能够在C++里直接使用类似EBNF的语法构造出一个完整的语法解析器(同时也把C ...

  6. React Native开发环境的搭建

    我只能说搭建开发环境还是不能相信网上纷乱的博客,还是中文网靠谱. http://reactnative.cn/docs/0.47/getting-started.html 纯粹只是为了记录一下.

  7. SciTE编写lua的快捷键整理

    SciTE快捷键整理 常用键整理: Ctrl + Q: 多行注释 Ctrl + L:删除一行或多行 Ctrl+T :和上一行换位置 Ctrl+D :复制高亮选中字符. 如果没有高亮选择字符, 则复制光 ...

  8. 编写高质量代码改善C#程序的157个建议——建议103:区分组合和继承的应用场合

    建议103:区分组合和继承的应用场合 继承所带来的多态性虽然是面向对象的一个重要特性,但这种特性不能在所有的场合中滥用.继承应该被当做设计架构的有用补充,而不是全部. 组合不能用于多态,但组合使用的频 ...

  9. 设计模式9---装饰模式(Decorator Pattern)

    装饰模式又名包装(Wrapper)模式.装饰模式以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案. 装饰模式的结构 装饰模式以对客户透明的方式动态地给一个对象附加上一些责任.换言之,客户端 ...

  10. Java多线程设计模式(三)

    目录(?)[-] Read-Wirte Lock Pattern Thread-Per-Message Pattern Worker Thread Pattern   Read-Wirte Lock ...