一个迷你的 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 通 ...
随机推荐
- 实践作业4---DAY3阶段二。
第二阶段是用户调研,我们小组选择了一个5班的同学,作为采访对象.采访比较详实,但是样本太少,不太有说服力. 具体采访详情如下: 问:请问您使用喜欢发表Blog么? 答:肯定有啊. 问:都用什么网站发表 ...
- python 学习之路开始了
python 学习之路开始了.....记录点点滴滴....
- mongodb ---- findAndModify 写法
db.coll.findAndModify({ query:{x:"ggg"}, update:{$set:{"x":"gggg"}}, f ...
- .NET开源MSSQL、Redis监控产品Opserver之Redis配置
安全与基础配置地址:http://www.cnblogs.com/xiaopotian/p/6898310.html edis监控数据实例的加载可以查看Opserver.Core项目data/Redi ...
- HDU 6153 A Secret (KMP)
题意:给定两个串,求其中一个串 s 的每个后缀在另一个串 t 中出现的次数. 析:首先先把两个串进行反转,这样后缀就成了前缀.然后求出 s 的失配函数,然后在 t 上跑一遍,如果发现不匹配了或者是已经 ...
- ES6语法的新特性
ES6 就是ECMAScript 6是新版本JavaScript语言的标准.虽然目前已经更新到ES7,但是很多浏览器还不知处ES7语法,该标准仍在更新中,但目前部门网站都指出ES6的语法.目前ES6也 ...
- JavaScript语言精粹 笔记03 继承
继承伪类对象说明符原型函数化部件 继承 JS不是基于类的,而是基于原型的,这意味着对象直接从其他对象继承. 1 伪类 JS提供了一套丰富的代码重用模式,它可以模拟那些基于类的模式,因为JS实际上没有类 ...
- Karma和Jasmine 自动化单元测试环境搭建
最近初学AngularJS ,看到的一些教程中经常有人推荐使用Karma+Jasmine来进行单元测试.自己之前也对Jasmine有些了解,jasmine也是一个不错的测试框架. 1. karma介绍 ...
- 【Linux】GCC编译器
[简介] GCC是Linux下的编译工具集,是GNU Compiler Collection的缩写,包含gcc g++ 等编译器.GCC工具集不仅能编译C/C++语言,其他例如Object-c.Pas ...
- Gym - 100971J ——DFS
Statements Vitaly works at the warehouse. The warehouse can be represented as a grid of n × mcells, ...