likes
comments
collection
share

Node.js版MVC之技术选型

作者站长头像
站长
· 阅读数 4

前言

什么是MVC

在计算机科学中,MVC是一种软件设计模式,这种模式将应用代码组织成三个相互交织的部分——模型、视图和控制器。 模型是与数据库交互的逻辑;视图是用户接口和交互,控制器是是视图和数据库之间的中介。 大多数情况下,视图不直接和模型交互——这个功能由控制器执行。 Node.js版MVC之技术选型 在其他一些框架中,模型与视图直接交互。 Node.js版MVC之技术选型 MVC设计模式旨在将应用代码分成各自的单位,来简化维护和优化。这种方式被称为“关注点分离”。

这种设计模式目前被广泛应用于后端开发,尤其在Spring系列中,但在前端Node.js的应用中,并未有广泛的使用。 作者心血来潮,想搞一个Node.js版MVC的脚手架,请随着作者的一系列的教程说明,后期搭建属于自己的Node.js版MVC的脚手架。

技术选型

工欲善其事,必先利其器

技术的选型直接影响后期的开发流程。可以提高开发效率、减低风险。接下来我们将从下面几个方面展开来说技术选型:

配置文件

目前Springboot采用的是基于yaml语言的配置文件方式,这个设计同样使用于Node的版本,对于yml文件的读取,npm提供了一个专门的依赖包:yaml

仓库地址:github.com/eemeli/yaml

使用方式:

const YAML = require('yaml')
const file = fs.readFileSync('./file.yml', 'utf8')
YAML.parse(file)

数据库

对于是数据库框架的选择主要决定点在于框架包是是否支持ORM(Object–relational mapping)和不同数据库的数据源,这样的话选择范围也就比较小了,这边我就推荐两款:

Sequelize

Node.js版MVC之技术选型

Sequelize 是一个基于 promise 的 Node.js 的 ORM,目前支持 Mysql,Postgres,MariaDB,SQLite以及 Microsft SQL Server。它具有强大的事务支持,关联关系,预读和延迟加载,读取复制等功能。低版本不支持Ts Sequelize 遵从语义版本控制。支持 Node v10 及更高版本以便使用 ES6 功能。

官网: www.sequelize.com.cn

Github: github.com/sequelize/s…

Prisma

Node.js版MVC之技术选型

Prisma 是一个开源的下一代 Node.js、TypeScript、Go 的数据库 ORM,目前支持 PostgreSQL、MySQL、MongoDB(实验性)、SQL Server(实验性) 和 SQLite 数据库。Prisma 客户端可以被用在 Node.js 或 TypeScript 后端应用中(包括 Serverless 应用和微服务)。可以是一个 REST API,一个 GraphQL API,一个 gRPC API,或任何其他需要数据库的东西。

Prisma 通过提供一个干净(clean)和类型安全(type-safe)的 API 来提交数据库查询,同时返回一个普通 JavaScript 对象(plain old JavaScript object),来使得开发者能够更容易地进行数据库查询。

官网文档详细较全,目前在业界的呼声也很高。

官网: prisma.yoga

Github: github.com/prisma/pris…

这边看个人需要选择,作者对 Sequelize 比较熟悉,所以将以该框架搭建MVC脚手架

服务发布

服务发布主要用于接受http/https的请求,然后将请求分发到对应的 Controller 执行,这边可以使用 koa或者Express进行服务发布,这两个框架是同一拨人开发的,Koa 是 Express 的轻量级版本。它是一个中间件框架,没有像 Express 那样的额外模块(比如,没有内置路由和模板引擎)。

Express

Node.js版MVC之技术选型

Express 是一个保持最小规模的灵活的 Node.js Web 应用程序开发框架,为 Web 和移动应用程序提供一组强大的功能。

官网: www.expressjs.com.cn/

Github: github.com/expressjs/e…

koa

Node.js版MVC之技术选型

Koa 是一个新的 web 框架,由 Express 幕后的原班人马打造, 致力于成为 web 应用和 API 开发领域中的一个更小、更富有表现力、更健壮的基石。 通过利用 async 函数,Koa 帮你丢弃回调函数,并有力地增强错误处理。 Koa 并没有捆绑任何中间件, 而是提供了一套优雅的方法,帮助您快速而愉快地编写服务端应用程序。

官网: koa.bootcss.com/

Github: github.com/koajs/koa