js模块化

标准

  • CommonJS CJS
  • Ecmascript Module ESM

两者区别

  1. CJS是社区标准,ESM是官方标准
  2. CJS是运行时,ESM是编译时
    示例:
    比如 const a = require(‘./a.js’)
    只有运行到这个代码的时候才能确定依赖关系
    比如
    if(xxx) {
    const xxx = require(‘./a.js’)
    } else {
    const xxx = require(‘./b.js’)
    }
    本模块是依赖a模块还是b模块呢,不确定,只有运行到这里,才能确定
    ESM是编译时就确定了依赖关系,所以不能像上面那样写
    if(xxx){
    import xxx from a.js
    }
    会直接报语法错误,导入声明的语句只能在顶层使用
    当然ESM也是支持运行时的,比如动态导入的
    if(xxx){
    import(‘./原型.js’)
    }
    ESM是编译时就确定好依赖,不用运行代码,非常有利于以后得优化,一般打包工具都是强烈建议使用ESM模块标准,因为CommonsJS 不好做优化,它要运行,一般打包工具是不会运行代码的

实现

浏览器(支持ESM)<script src="./1.js" type="module"></script>
node (CJS ESM)
构建工具 (CJS ESM) gulp webpack rollup esbuilder

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值