uni-app 模块化开发
什么是模块化?
-
命名空间。
早期为了避免命名冲突,大众做法是用一个变量作为命名空间做隔离, 长期开发过程中没人能记住这个变量是否冲突,它的命名规范是什么,治标不治本。 而模块化的出现消除了这点。一个模块内的命名随自己起,和外界不会冲突, 对外的永远是你exports出来的内容。如果模块内出现命名冲突,这说明了你的命名水平太低有待提高!
-
代码重用。
其实这点和传统开发并无两样,都是把可复用代码抽取出function(再通用点会抽 象出类,也就是构造函数),独立文件。但模块化的好处同样可以规避命名空间的 问题,不必设置变量污染到全局。一般模块化都有缓存机制,在二次调用时无需再 解析,直接获取到缓存模块内容。
现流行的模块化开发主要有两种方式:
-
依赖加载。
这种方式是最广泛的,像requirejs,sea.js等,除了 编写规范 不一样, 实际都是通过相关require api把模块chunk文件拿回来,当加载完成之后再运行逻辑代码。
-
依赖打包。
经典代表就是webpack,其实就是写代码的时候分开模块,但打包的时候按依赖关系 找到各个模块,最后打包到同一个文件上,并给每个chunk标识id,运行逻辑代码时 将模块引用指向该id,从而实现模块化。
编程规范是一个很重要的东西,这里提供一个阿里巴巴的编程规范
为什么需要模块化?模块化有什么优点?
大家都知道,软件开发不是单枪匹马就能做成的,由于是大项目,各是多人协作,团队开发, 才能完成一个项目!比如阿里巴巴开发,这个大公司,项目如果不使用模块化开发,那代码的冲突将会增加和可读性将会大大降低!
因此使用模块化开发有以下优点:
- 代码冲突降低
- 代码可读性增强
我们自己项目的开发如何模块化?
在项目模块化之前,我们要先知道,项目里面有哪些东西?
- 工具类
- 页面视图
- 数据访问
- 模型类
盘古歌技术 即时通讯 是如何自己组装自己的模块?请看下面的图:
从图中我们可以看到有以下模块
-
framework 项目框架
主要是一些工具类,这部分的代码是可以和所有项目可以共用的代码, 它不依赖其它! 这里要特别说明下,这部分代码的必要性: 每个引入的库都有可能官方不在维护,所以我们必须封装一层,隔离这些库, 切勿让项目直接调用,一旦库出现重大问题的时候,可立即修改库,还不用改变 模块内业务代码!也就是说面向接口开发! 到底有哪些呢? 1. 字符串工具类 2. 项目配置管理类,多环境配置 3. HTTP请求框架 4. 加密、解密工具之类的
-
main 主入口框架
-
user 用户模块
-
chat 聊天模块
-
kefu 客服模块
每个模块又分多层
- helper 模块化帮助类
- logical 业务处理层
- model 模型类
- service 数据访问层,与服务端交互
- view 视图层
最后说明下:
任何项目都是由各个模块构建起来的,而每个模块内通常以mvc构架起来的,
也就是说模块化的精髓在于你们对于业务的划分,如何分!模块一分,
每个开发人员负责自己的模块,这样大家就互不干扰了!
而且一旦有问题,有可以很容易定位是哪个模块出错的!
盘古歌技术 的 即时通信 也是这样模块化开发的! 不管它是如何复杂, 主要我按模块化开发进行研发,那么以后再新增其它模块也是可以分的,它不会影响其它 模块,也就是复杂度不会随着模块增多而增多!这就是模块化带来的巨大好处!
当然软件开发肯定不止这些,但是万变不离其中,那就是软件的 设计模式 , 这个我强烈建议大家去看一下,这是前辈们的心血,软件设计的精髓! 如果你是后端开发者,那么更要学习!
如果你是后端开发,也建议你看下 阿里巴巴消息队列的应用