关于模块化

什么是模块化?

模块化可以更加清晰的将文件与文件之间的引用关系更好的配合.当文件与文件之间有很多引用关系时,我们不必要知道底层的文件A与文件B如何引用,只需要引入最上层的文件,剩下的都自动引用了.如果不使用模块化,在文件引用时,这个函数必须是全局变量,那样则会造成全局的污染

AMD

  • requirejs.js
  • 全局define函数
  • 全局requier函数
  • JS会自动异步加载

Demo

使用AMD要在html中引入require.js,其中data-main是入口


util.js
它不依赖任何模块,也就不需要引入依赖了

define(function(){
    var util = {
        getFormatDate:function(date,type){
            if (type === 1) {
                return '2017-06-20'
            }
            if (type === 2) {
                return '2017年6月20日'
            }
        }
    }
    return util
})

a-util.js

define(['./util.js'],function(util){
  var aUtil = {
    aGetFormatDate: function(date){
      return util.getFormatDate(date,2)
    }
  }
  return aUtil
})

a.js

define(['./a-util.js'],function(aUitl){
  var a = {
    printDate:function(date){
      console.log(aUitl.aGetFormatDate(date))
    }
  }
  return a
})

main.js
最后,main.js作为一个入口,不需要定义任何东西了.所以使用require()

require(['./a.js'],function(a){
  var date = new Date()
  a.printDate(date)
})

CommonJS

nodejs模块化规范,现在被大量的应用于前端
前端开发依赖的插件和库,都可以从npm中获取
构建工具的高度自动化,使得使用npm的成本非常低
CommonJS不会异步加载JS,而是同步一次性加载出来

Demo

module.exports = {
  print:function(){
    console.log(123)
  }
}
var aUtil = require('./a-util.js')
aUtil.print()

你可能感兴趣的:(关于模块化)