JavaScript模块化
es6之前js不支持模块化,社区制定一套模块规范commonjs(主要要服务器 nodejs require('http')),AMD(requireJs,curlJs)或者CMD(seaJs)
es6出来后统一服务端和客户端模块规范
模块化:
a)如何定义模块?
export 东西
export const a=12;
export{
a as aaa,
b as bbb
}
b)如何使用?
import
import './modules/1.js';
import {a as aa, banana,c as cc} from ''
import * as modTwo from ''
关于import{} 当export出的东西是default的时候不加{},否则加{}
使用模块:<script type="module"></script>
import: 特点
a) import可以是相对路径也可以是绝对路径
import 'https://code.jquery.com/jquery-3.3.1.min.js'
b) import模块只会导入一次,无论你引入多少次
c)import './modules/1.js'; 如果这么用,相当于引入文件
d) 有提升效果,import会自动提升到顶部,首先执行
e) 导出去模块内容,如果里面有定时器更改,外面也会改动,不像common规范缓存
*import()类似node里面require,可以动态引入,默认import语法不能写到if之类里面
返回值是个Promise对象
import('./modules/1.js').then(res=>{
console.log(res.a,res.b);
});
优点:1按需加载 2.可以写if中 3路径也可以动态改变
==============================
'use strict' 默认是严格模式