美文网首页js
基于ES5的prototype进行模块化开发

基于ES5的prototype进行模块化开发

作者: imxiaochao | 来源:发表于2019-02-12 16:38 被阅读0次

    目前前端的模块化开发/多人协作开发基本上分为以下几类:

    • 按功能划分不同的文件,最后进行组合
    • 按页面或者模块进行划分,多人编写不同的JS/HTML文件,最后组合
      经常为了项目进度,会出现多人开发同一个页面的情况,这样的话,经常会发生代码冲突的现象,除非提前及其规划地约定好页面内的模块,
    • 其实还有一种以prototype进行模块划分的非常好的方式,prototype内部的变量可以进行隔离,个人在prototype内部进行各自的功能开发,也不会出现代码冲突的情况,对外暴露其他模块需要的接口即可,对多人协同开发非常友好。

    页面结构开发

    首先编写好页面的基础html结构和基础js,主要是在js文件内进行模块隔离,参考如下代码

    // 如index页面
    // index.js
    // 首先定义一个index的ES5类,并且定义好该类的初始化方法及内部定义模块并对其进行实例化
    function Index(){
        this.CONST()
        this.INIT()
    }
    Index.prototype.CONST = function(){
        // 在这里定义页面内部的局部变量,并且不会污染外部环境,统一使用自定义的get/set方法进行存取
        var data = {
            val1: '123',
            val2: '234'
        }
        this.get = function(key){
            return data[key]
        }
        this.set = function(key,val){
            data[key] = val
        }
    }
    Index.prototype.INIT = function(){
        
    }
    var index = new Index()
    

    编写页面的结构模块

    在完成页面类的基础结构后,根据不同页面功能编写功能模块,比如页面内的查询参数可以当作独立模块,表格也可以当作独立模块,多人开发时,个人开发独立的模块即可,模块之间通过类内部的方法(接口)进行通信

    Index.prototype.SearchValues = function(){
        var self = this
        var queryParams = {}
        // 对外暴露获取参数的接口/方法,但不会暴露内部变量
        self.getQueryParams = function(){
            return queryParams
        }
    }
    Index.prototype.TableModule = function(){
        var self = this
        var test = 123
        var initTable = function(){
            console.log(test)
        }
        // 同样对外暴露 initTable 方法
        self.renderTable = initTable
    }
    // 在定义好页面功能模块及需要初始化的方法之后,在INIT模块内进行如下处理
    
    Index.prototype.INIT = function(){
        //首先加载各功能模块
        this.SearchValues()
        this.TableModule()
        // 模块加载完成之后再初始化功能
        this.renderTable()
    }
    

    相关文章

      网友评论

        本文标题:基于ES5的prototype进行模块化开发

        本文链接:https://www.haomeiwen.com/subject/diukeqtx.html