js不支持模块化
注意: 必要放到服务器情况
1、怎样定义模块?
export 东西
例:1.js文件中- console.log('1模块加载了');//显示是否加载了
- export const a =12;
- export const b = 5;
- export let c = 101;
复制代码- const a=12;
- const b=5;
- const c=101;
- export {//可以起别名 as *** 也可以去掉
- a as aaa,
- b as banana,
- c as cup
- }
复制代码- <script type="module">
- import {a, b, c} from './modules/1.js';
- console.log(a,b,c);
- </script>
复制代码 起别名版import :- <script type="module">
- import {aaa, banana, cup} from './modules/2.js';
- console.log(aaa, banana, cup);
- </script>
复制代码 补充 export default ** 作用:引用时间可以不消加{ }
2、怎样使用?
在html文件里<script type="module"></script>
引入模块
import './modules/1.js';
【新增】*表现引用全部- <script type="module">
- import * as modTwo from './modules/2.js';
- console.log(modTwo.aaa);
- </script>
复制代码- <script type="module">
- import mod,{show, sum, a, b} from './modules/4.js';
- // show sum 是函数
- let p1 = new mod.Person('老肖');
- console.log(p1.showName());
- show();
- sum();
- console.log(a,b);
- </script>
复制代码 js文件可以引用另一个js文件里的东西 :格式同理
import: 特点
a). import 可以是相对路径,也可以是绝对路径
import 'https://code.jquery.com/jquery-3.3.1.js';
b). import模块只会导入一次,无论你引入多少次
c). import './modules/1.js'; 如果这么用,相称于引入文件
d). 有提升效果,import会自动提升到顶部,起首实行
也就是说:不管放前面放后面都最先引入
e). 导出去模块内容,如果里面有定时器更改,表面也会改动
import() 类似node里面require, 可以动态引入, 默认import语法不能写到if、for之类里面
错误例:- if(a==12){
- import {a} from './modules/1.js';
- }else{
- import {b} from './modules/2.js';
- }
复制代码 正确例:
返回值是个promise对象 - <script type="module">
- import('./modules/1.js').then(res=>{
- console.log(res.a+res.b);
- });
- </script>
复制代码 路径也可以动态- <script type="module">
- let sign=1;
- function config(){
- switch(sign){
- case 1:
- return './modules/1.js';
- break;
- case 2:
- return './modules/2.js';
- break;
- }
- }
- import(config(1)).then(res=>{
- $(function(){
- $('body').css({
- background:'gray'
- })
- })
- });
- </script>
复制代码 与promise联合版:- <script type="module">
- Promise.all([
- import('./modules/1.js'),
- import('./modules/2.js')
- ]).then(([mod1,mod2])=>{
- console.log(mod1);
- console.log(mod2);
- })
- </script>
复制代码 【ES2017】async await
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |