最近,公司需要建立一套EMM(企业移动管理)管理平台。这种面向企业的应用程序管理需要考虑的需求非常复杂。管理和服务器的构建在技术层面上是架构的核心,但是客户端本身在初期并不需要那么复杂。作为移动终端的负责人(其实也是打杂的),自然必然会参与这个平台架构。作为一个前端jser,我总是收到这种不太像前端的工作。如果我以前抵触这种业务水平,需要考虑很多,技术实现本身就不容易积累技术成长。这一年,我成长了太多,总是试图做一些我可能不喜欢的事情,但这仍然是有意义的,所以我想在接手这个任务时做好这件事,所以我想考虑参加EMM服务器大楼。其实话说回来,只要你想把事情做好,怎么会有有意义或者无意义的区别呢?
考虑到基于Node.js构建的服务越来越普及,在平台容器云上构建微服务也很方便。另外,作为一个前端jser程序员,使用Node.js构建服务特别熟悉。之前学过一段时间Egg.js,这次毫不犹豫的选择了基于Egg.js框架构建。
为什么是Egg.js?
去年安利在Vue.js Node.js的实际开发中通过了Egg.js,这是gitchat JavaScript中的。当时是次接触Egg.js,但还是很惊艳。Egg继承了Koa,遵循“协议优于配置”的原则,按照一套统一的协议开发应用,插件机制相对完善。Egg虽然继承了Koa,但是你可能觉得可以实现一个基于Koa的集合,没有必要在这个框架上做。但其实自己设计这样的框架,需要取长补短,短期内时间和成本都不值得。Koa是一个小而精的框架,Egg是针对文档中所述的企业级框架和应用而诞生的,非常方便我们快速构建一个完整的企业级应用。Egg功能已经比较完善了,如果没有实现的功能,按照Koa社区提供的插件来打包也不是什么难事。
ORM设计选择
在数据库选择上,本项目考虑用MySQL代替MongoDB,先用egg-mysql插件。写了一部分后发现服务中写的东西太多,表字段的修改会影响太多代码,设计缺乏Model的管理。据说可以引入ORM框架,比如sequelize,Egg官方刚刚提供了egg-sequelize插件。
ORM是什么?
一、ORM是什么?
对象关系映射(Object Relational Mapping,or O/RM,or O/R mapping)是一种编程技术,用于在面向对象编程语言中实现不同类型系统的数据之间的转换。实际上,它实际上创建了一个可以在编程语言中使用的“虚拟对象数据库”。
类似于J2EE的DAO设计模式,程序中的数据对象自动转换成关系数据库中对应的表和列,数据对象之间的引用也可以通过这个工具转换成表。这样我遇到的问题就可以很好的解决了。表结构修改和数据对象操作是两个独立的部分,使得代码更好的维护。其实选择ORM框架和选择模板引擎还是前端手工拼字符串是一样的。ORM框架避免了开发过程中手工拼接SQL语句,可以防止SQL注入。此外,它将数据库和数据CRUD解耦,更改数据库相对更容易。
Sequelize框架
Sequelize是Node.js社区中流行的ORM框架。相关文件:
Sequelize.js文档:http://docs.sequelizejs.com/
Sequelize用法
安装:
$ npm安装-保存sequelize
建立连接:
const Sequelize=require(' Sequelize ');
//完全使用
const sequelize=new Sequelize('数据库','用户名','密码',{
host: 'localhost ',
拨号器: ' MySQL ' | ' SQLite ' | ' postgres ' | ' MSSQL ',
operatorsAliases: false,
pool: {
max: 5,
min: 0,
acquire: 30000,
idle: 10000
},
//仅限数据库
storage333xxxxx