模块化开发发展过程

模块化开发发展过程

一. nodeJs Commonjs规范

以同步模式加载模块

  • 一个文件就是一个模块
  • 每个模块都有单独的作用域
  • 通过module.exports导出成员
  • 通过require 函数载入模块

二、AMD规范 require.js

异步加载模式
define定义 require请求

ES modules

1、基本特性

	<!-- 1ESM自动采用严格模式,忽`use strict` -->
    <script type="module">
        console.log(this) //undefined
    </script>
    <!--  2、每个ES Module 都是运行在独立的私有作用域中-->
    <script type="module">
        var foo=100
        console.log(foo) //100
    </script>

    <script type="module">
        console.log(foo) //undefined
    </script>

    <!-- 3. ESM 是通过 CORS 的方式请求外部 JS 模块的 -->
    <script type="module" src="https://unpkg.com/jquery@3.4.1/dist/jquery.min.js"></script>

    <!-- 4. ESM 的 script 标签会延迟执行脚本 -->
    <script  type="module" src="demo.js"></script> //等同于js中的defer

2、ES Module 的导入和导出

导出的并不是一个字面量对象
是导出引用关系
导出成员只读 导入不能修改

var name='foo module'

function hello(){
    console.log(`hello`)
}
class Person{}

export {name,hello,Person} //导出

import {name} from './module.js' //导入

//导出重命名 as
export{
    name as default, //设置为default默认导出成员 导入的时候必须重命名 import {default as fooName} from module.js
    hello as fooHello
}
import {fooHello} from './module.js' //导入的是重命名

export default name //默认导出name
import fooName from './module.js'  //导入变量名自定义

3、import注意点

 1、关于路径
	必须要有完整的路径名称
	相对路径的./不能省略
	使用绝对路径、完整的url

2、import {} from './module.js' //只加载模块 不提取成员

3、import * as md from './module.js' //提取所有成员 md.提取指定成员

4、动态导入模块 import只能出现最顶层 不能嵌套 
import('./module.js').then(function(module){
    //返回promise对象 拿到成员
})

5、同时导出默认成员和命名成员
import {name,age,default as defaultName} from './module.js'
import defaultName,{name,age} from './module.js'

4、可以导出导入的成员

export {name} from './module.js'
export {age} from './module2.js'
export {default as fooName} from './module.js' //导出导入带默认成员

5、ES Modules 与 CommonJs

  • ES Modules中可以导入CommonJS 模块
  • CommonJs中不能导入ES Modules模块
  • CommonJS 始终只会导出一个默认成员
  • import不是解构导出对象 只是固定语法
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值