一个迷你的 Node.js 基于 Express 的 MVR 模式的 API工程 的分析
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工程 的分析的更多相关文章
- Node.js基于Express框架搭建一个简单的注册登录Web功能
这个小应用使用到了node.js bootstrap express 以及数据库的操作 :使用mongoose对象模型来操作 mongodb 如果没了解过的可以先去基本了解一下相关概念~ 首先注 ...
- node.js,express入门看详细篇
先最简单的代码 安装 npm install express app.js 代码内容 const express = require('express') const app = express() ...
- 如何设计一个基于Node.js和Express的网站架构?
前言 今年七月份,我和几个小伙伴们合伙建立了一个开发团队.业务开展如火如荼的同时,团队宣传就提上了日程,所以迫切需要搭建公司网站出来.确定目标后我们就开始考虑如果构建一个企业网站.先是进行业内调查,看 ...
- Node.js、express、mongodb 入门(基于easyui datagrid增删改查)
前言 从在本机(win8.1)环境安装相关环境到做完这个demo大概不到两周时间,刚开始只是在本机安装环境并没有敲个Demo,从周末开始断断续续的想写一个,按照惯性思维就写一个增删改查吧,一方面是体验 ...
- LIGHTX-CMS —— 基于 Node.js,Express.js 以及 SQLite 3 搭建的个人博客系统
概述 LIGHTX-CMS 是我基于 Node.js,Express.js 以及 SQLite 3 搭建的个人博客发布系统. 项目本身可以拿来部署个人博客网站,同时我认为其也适合用以新手学习 Node ...
- Node.js系列-express(上)
前言 Node.js系列的第一篇:http,大概描述了通过使用node.js内置的api创建一个服务并监听request实现简单的增删改查.现在,我们就通过通读express官网及使用express框 ...
- Node.js、express、mongodb 实现分页查询、条件搜索
前言 在上一篇Node.js.express.mongodb 入门(基于easyui datagrid增删改查) 的基础上实现了分页查询.带条件搜索. 实现效果 1.列表第一页. 2.列表第二页 3. ...
- Feathers JS – 基于 Express 构建数据驱动的服务
Feathers 是一个轻量的 Web 应用程序框架,基于 NodeJS 最流行的 Web 框架——Express.这使得它很容易使用 socket.io 来创建 RESTful Web 服务和实 ...
- node.js框架express的安装
node.js框架express的安装 首先假定你已经安装了 Node.js,接下来为你的应用创建一个目录,然后进入此目录并将其作为当前工作目录. $ mkdir myapp $ cd myapp 通 ...
随机推荐
- Yii2 集成 adminlteasset
https://github.com/dmstr/yii2-adminlte-asset AdminLTE Asset Bundle Backend UI for Yii2 Framework, ba ...
- SourceInsight中 加namespace宏后,无法跳转问题解决
Option->preferences->languages: C++ language->special, checked Ignore namespace declaration ...
- Matlab图像处理教程
虽然典型算法的开发是基于理论支持的,但这些算法的实现几乎总是要求参数估计,并常常进行算法修正与候选求解方案的比较. MATLAB由LINPACK和EISPACK项目开发,最初用于矩阵处理.今天,MAT ...
- 编写高质量代码改善C#程序的157个建议——建议117:使用SSL确保通信中的数据安全
建议117:使用SSL确保通信中的数据安全 SSL(Secure Socket Layer)最初是由NetScape公司设计的,用于Web安全的网络协议.目前它已经广泛应用到各类网络传输通信中了.SS ...
- hdu2653之BFS
Waiting ten thousand years for Love Time Limit: 10000/2000 MS (Java/Others) Memory Limit: 32768/3 ...
- css中padding和magin的区别
1.Margin 用来设置页面中一个元素所占空间的边缘到相邻元素之间的距离. 如果提供全部四个参数值,将按上-右-下-左的顺序作用于四边. 如果只提供一个,将用于全部的四边. 如果提供两个,第 ...
- [LeetCode 题解]: Triangle
前言 [LeetCode 题解]系列传送门: http://www.cnblogs.com/double-win/category/573499.html 1.题目描述 Given a tr ...
- 让PHP更快的提供文件下载 【转】
一般来说, 我们可以通过直接让URL指向一个位于Document Root下面的文件, 来引导用户下载文件. 但是, 这样做, 就没办法做一些统计, 权限检查, 等等的工作. 于是, 很多时候, ...
- Linux常用命令,学的时候自己记的常用的保存下来方便以后使用 o(∩_∩)o 哈哈
service httpd restart 重启Apache service mysqld restart 重启mysql [-][rwx][r-x][r--] 1 234 567 890 421 4 ...
- Entity Framework 6 暂停重试执行策略
EF6引入一个弹性连接的功能,也就是允许重新尝试执行失败的数据库操作.某些复杂的场景中,可能需要启用或停用重试执行的策略,但是EF框架暂时尚未提供直接的设置开关,将来可能会加入这种配置.幸运的是,很容 ...