ES6入门---第二单元 模块五:模块化

[复制链接]
发表于 2025-9-18 02:37:10 | 显示全部楼层 |阅读模式
js不支持模块化
注意: 必要放到服务器情况
1、怎样定义模块?
export  东西
例:1.js文件中
  1. console.log('1模块加载了');//显示是否加载了
  2. export const a =12;
  3. export const b = 5;
  4. export let c = 101;
复制代码
  1. const a=12;
  2. const b=5;
  3. const c=101;
  4. export {//可以起别名 as *** 也可以去掉
  5.     a as aaa,
  6.     b as banana,
  7.     c as cup
  8. }
复制代码
  1. <script type="module">
  2.         import {a, b, c} from './modules/1.js';
  3.         console.log(a,b,c);
  4.     </script>
复制代码
起别名版import :
  1. <script type="module">
  2.         import {aaa, banana, cup} from './modules/2.js';
  3.         console.log(aaa, banana, cup);
  4.     </script>
复制代码
补充 export default **  作用:引用时间可以不消加{ }


2、怎样使用?
 在html文件里<script type="module"></script>
引入模块
import './modules/1.js';
【新增】*表现引用全部
  1. <script type="module">
  2.         import * as modTwo from './modules/2.js';
  3.         console.log(modTwo.aaa);
  4.     </script>
复制代码
  1. <script type="module">
  2.         import mod,{show, sum, a, b} from './modules/4.js';
  3. // show sum 是函数
  4.         let p1 = new mod.Person('老肖');
  5.         console.log(p1.showName());
  6.         show();
  7.         sum();
  8.         console.log(a,b);
  9.     </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之类里面
错误例:
  1. if(a==12){
  2.             import {a} from './modules/1.js';
  3.         }else{
  4.             import {b} from './modules/2.js';
  5.         }
复制代码
正确例:
        返回值是个promise对象 
  1. <script type="module">
  2.         import('./modules/1.js').then(res=>{
  3.             console.log(res.a+res.b);
  4.         });
  5.     </script>
复制代码
 路径也可以动态
  1. <script type="module">
  2.         let sign=1;
  3.         function config(){
  4.             switch(sign){
  5.                 case 1:
  6.                     return './modules/1.js';
  7.                     break;
  8.                 case 2:
  9.                     return './modules/2.js';
  10.                     break;
  11.             }
  12.         }
  13.         import(config(1)).then(res=>{
  14.             $(function(){
  15.                 $('body').css({
  16.                     background:'gray'
  17.                 })
  18.             })
  19.         });
  20.     </script>
复制代码
与promise联合版:
  1. <script type="module">
  2.         Promise.all([
  3.             import('./modules/1.js'),
  4.             import('./modules/2.js')
  5.         ]).then(([mod1,mod2])=>{
  6.             console.log(mod1);
  7.             console.log(mod2);
  8.         })
  9.     </script>
复制代码
【ES2017】async  await

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表