uni-app 模块化开发

什么是模块化?

  • 命名空间。

    早期为了避免命名冲突,大众做法是用一个变量作为命名空间做隔离,
    长期开发过程中没人能记住这个变量是否冲突,它的命名规范是什么,治标不治本。
    而模块化的出现消除了这点。一个模块内的命名随自己起,和外界不会冲突,
    对外的永远是你exports出来的内容。如果模块内出现命名冲突,这说明了你的命名水平太低有待提高!
    
  • 代码重用。

    其实这点和传统开发并无两样,都是把可复用代码抽取出function(再通用点会抽
    象出类,也就是构造函数),独立文件。但模块化的好处同样可以规避命名空间的
    问题,不必设置变量污染到全局。一般模块化都有缓存机制,在二次调用时无需再
    解析,直接获取到缓存模块内容。
    

现流行的模块化开发主要有两种方式:

  • 依赖加载。

    这种方式是最广泛的,像requirejs,sea.js等,除了 编写规范 不一样,
    实际都是通过相关require api把模块chunk文件拿回来,当加载完成之后再运行逻辑代码。
    
  • 依赖打包。

    经典代表就是webpack,其实就是写代码的时候分开模块,但打包的时候按依赖关系
    找到各个模块,最后打包到同一个文件上,并给每个chunk标识id,运行逻辑代码时
    将模块引用指向该id,从而实现模块化。
    

编程规范是一个很重要的东西,这里提供一个阿里巴巴的编程规范

为什么需要模块化?模块化有什么优点?

大家都知道,软件开发不是单枪匹马就能做成的,由于是大项目,各是多人协作,团队开发, 才能完成一个项目!比如阿里巴巴开发,这个大公司,项目如果不使用模块化开发,那代码的冲突将会增加和可读性将会大大降低!

因此使用模块化开发有以下优点:

  • 代码冲突降低
  • 代码可读性增强

我们自己项目的开发如何模块化?

在项目模块化之前,我们要先知道,项目里面有哪些东西?

  • 工具类
  • 页面视图
  • 数据访问
  • 模型类

盘古歌技术 即时通讯 是如何自己组装自己的模块?请看下面的图:

uni-app 项目模块化结构

从图中我们可以看到有以下模块

  • framework 项目框架

    主要是一些工具类,这部分的代码是可以和所有项目可以共用的代码, 它不依赖其它!
    这里要特别说明下,这部分代码的必要性:
    
    每个引入的库都有可能官方不在维护,所以我们必须封装一层,隔离这些库,
    切勿让项目直接调用,一旦库出现重大问题的时候,可立即修改库,还不用改变
    模块内业务代码!也就是说面向接口开发!
    
    到底有哪些呢?
    
    1. 字符串工具类
    2. 项目配置管理类,多环境配置
    3. HTTP请求框架
    4. 加密、解密工具之类的
    
  • main 主入口框架

  • user 用户模块

  • chat 聊天模块

  • kefu 客服模块

每个模块又分多层

  • helper 模块化帮助类
  • logical 业务处理层
  • model 模型类
  • service 数据访问层,与服务端交互
  • view 视图层

最后说明下:

任何项目都是由各个模块构建起来的,而每个模块内通常以mvc构架起来的,

也就是说模块化的精髓在于你们对于业务的划分,如何分!模块一分,

每个开发人员负责自己的模块,这样大家就互不干扰了!

而且一旦有问题,有可以很容易定位是哪个模块出错的!

盘古歌技术即时通信 也是这样模块化开发的! 不管它是如何复杂, 主要我按模块化开发进行研发,那么以后再新增其它模块也是可以分的,它不会影响其它 模块,也就是复杂度不会随着模块增多而增多!这就是模块化带来的巨大好处!

当然软件开发肯定不止这些,但是万变不离其中,那就是软件的 设计模式 , 这个我强烈建议大家去看一下,这是前辈们的心血,软件设计的精髓! 如果你是后端开发者,那么更要学习!

如果你是后端开发,也建议你看下 阿里巴巴消息队列的应用