当前位置: 首页 > news >正文

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

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

相关文章:

  • 去打印店怎么打印手机文件,网上打印平台怎么打印
  • flink常用算子整理
  • PyQt5基本介绍
  • MyBatis 核心类详解与架构解析:从入门到源码级理解
  • Kotlin协程解析
  • 网狐旗舰大联盟组件源码私测笔记:结构分层、UI重构与本地实操全流程
  • RockyLinux9.3-24小时制
  • RabbitMQ 深度解析:从核心组件到复杂应用场景
  • Docker 渡渡鸟镜像同步站 使用教程
  • 【SimSession 】3:中继服务 linux和windows实现及MFC集成实现
  • 【PostgreSQL数据分析实战:从数据清洗到可视化全流程】3.2 缺失值检测与处理(NULL值填充/删除策略)
  • 数理性能大幅提升|暴雨一体机适配DeepSeek Prover v2
  • 在 Ubuntu 系统中,查看已安装程序的方法
  • 广东省考备考(第一天5.4)—言语
  • 【KWDB 创作者计划】_KWDB 性能优化与调优
  • C++负载均衡远程调用学习之上报功能与存储线程池
  • iview table组件 自定义表头
  • 施磊老师rpc(四)
  • ASP.NET MVC​ 入门与提高指南九
  • Java运算符学习笔记
  • 伊朗港口爆炸最新事故调查报告公布,2名管理人员被捕
  • 蓝佛安主持东盟与中日韩财长和央行行长系列会议并举行多场双边会见
  • 习近平给谢依特小学戍边支教西部计划志愿者服务队队员回信
  • 辽宁男篮被横扫这一晚,中国篮球的一个时代落幕了
  • 体坛联播|曼联一只脚迈进欧联杯决赛,赵心童4比4奥沙利文
  • 阿曼外交部:美伊谈判因故推迟