标签使用

在html文件中导入模块,需要定义属性 type="module"

<script type="module"></script>

模块路径

在浏览器中引用模块必须添加路径如 ./ 但是在打包工具如 webpack 中则不需要
测试的 test.js 的模块内容如下

export let test = {name:'xb';
};

下面没指定路径将发生错误

<script type="module">import { test } from "test.js";
</script>

正确使用需要添加上路径

<script type="module">import { test } from "./test.js";
</script>

延迟解析

模块总是会在所有 html 解析后才执行,下面的模块代码可以看到后加载的 button 按钮元素。

建议为用户提供加载动画提示,当模块运行时再去掉动画

<body><script type="module">console.log(document.querySelector("button")); //Button</script><script>console.log(document.querySelector("button")); //undefined</script><button>xb</button>
</body>

严格模式

模块默认运行在严格模式下,以下代码没有使用声明语句将会报错

<script type="module">xb = "xb"; // Error
</script>

下面的 this 也会是 undefined

<script>console.log(this); //Window
</script>
<script type="module">console.log(this); //undefiend
</script>

作用域

模块都有独立的顶级作用域 下面的模块不能互相访问

<script type="module">let xb = "xb";
</script><script type="module">alert(xb); // Error
</script>

单独文件作用域也是独立的,下面的 1.1.js1.2.js 不能相互访问

<script type="module" src="1.1.js"></script>
<script type="module" src="1.2.js"></script>
# 1.1.js
let xb = "xb";# 1.2.js
console.log(xb)

预解析

模块在导入时只执行一次解析 之后的导入不会再执行模块代码 而使用第一次解析的结果 并共享数据

  • 可以在首次导入时完成一些初始化工作
  • 如果模块内有后台请求也只执行一次

引入多次 test.js 脚本时只执行一次

<script type="module" src="test.js"></script>
<script type="module" src="test.js"></script>#test.js内容如下
console.log("xb");

下面在导入多次 test.js 时只解析一次

<script type="module">import "./test.js";import "./test.js";
</script># test.js内容如下
console.log("xb");

JavaScript-模块化开发(一)基础知识相关推荐

  1. JavaScript模块化开发(一)基础知识

    2019独角兽企业重金招聘Python工程师标准>>> 随着前段JavaScript代码越来越重,如何组织JavaScript代码变得非常重要,好的组织方式,可以让别人和自己很好的理 ...

  2. 前端开发之基础知识-HTML(一)

    1.1 html概述和基本结构 html概述 HTML是 HyperText Mark-up Language 的首字母简写,意思是超文本标记语言,超文本指的是超链接,标记指的是标签,是一种用来制作网 ...

  3. day29—JavaScript中DOM的基础知识应用

    转行学开发,代码100天--2018-04-14 JavaScript中DOM操作基础知识即对DOM元素进行增删改操作.主要表现与HTML元素的操作,以及对CSS样式的操作.其主要应用知识如下图: 通 ...

  4. JavaScript模块化开发的演进历程

    写在前面的话 js模块化历程记录了js模块化思想的诞生与变迁 历史不是过去,历史正在上演,一切终究都会成为历史 拥抱变化,面向未来 延伸阅读 - JavaScript诞生(这也解释了JS为何一开始没有 ...

  5. 移动web开发入门—基础知识、自适应布局、调试

    之前没做过移动端web开发,最近接手的一个小项目是做微信公众号,需要考虑手机适配.UI给出的设计稿是一般是基于iphone手机做的(15年之后是基于ipone6),我们的UI是基于iphone6来做的 ...

  6. JavaScript模块化开发整理

    在网上已经有很多关于模块化开发的文章了,这里还是按照自己的理解来整理一下. 随着项目文件的越来越大和需求的越来越贴近现实(我发现现在客户不如:一个领导说我要审批你们报上来的资料,系统发布以后用的还不错 ...

  7. Android camera(4)---Android Camera开发之基础知识篇

    Android Camera开发之基础知识篇 转自:https://blog.csdn.net/feiduclear_up/article/details/51968975#jump5 概述 Andr ...

  8. 高通骁龙410C开发板基础知识

    高通骁龙410C开发板基础知识 高通骁龙410C开发板是基于高通400系列处理器的第一块开发板,性能优异,方便调试.它包含先进的电源管理,WIFI 蓝牙,GPS等等,所有都集成在一张信用卡大小的PCB ...

  9. 音视频开发入门基础知识(视频入门篇)

    RTSP实时音视频开发实战课程:<RTSP实时音视频开发实战> 音视频开发入门基础知识(音频入门篇) 目录 一.前言 二.视频采集和显示 三.视频常见的格式 四.RGB转YUV和YUV转R ...

  10. NT内核和驱动开发的基础知识-笔记

    这是我在学习NT内核和驱动开发的基础知识时记录的一些笔记,不是连续的教程,欢迎指正错误的地方 ----------------------------------------------------- ...

最新文章

  1. Datawhale组队学习周报(第005周)
  2. classpath详解
  3. 安卓访问mysql的源码_【原创源码】安卓数据库简单操作demo
  4. 曾经迷茫的起点,多年后终于明白了(续)
  5. B端产品如何做好从1到10的架构搭建?
  6. Struts1——离BeanUtils看struts其原理1
  7. 草根最容易逆袭的地方就是互联网
  8. sql vb xml 换行_VB中文本框换行--------急!!!
  9. 3D游戏:七、模型与动画
  10. 阿里云二级域名的申请、创建及解析
  11. matlab如何求传递函数的幅值_MATLAB通过传递函数求截止频率
  12. js 将正则换成字符串的形式,再由字符串转换成正则
  13. vim Windows版本安装教程
  14. pm2日志文件过大问题解决
  15. JAVA程序开发参考手册
  16. 福州大学计算机学院李敏,福州大学厦门工艺美术学院
  17. LabVIEW编程实例:如何通过TCP协议进行数据通信
  18. 开机自动播放视频,开机就自动播放视频,开机自动播放u盘视频
  19. 微信开放平台 错误码61007: api is unauthorized to component
  20. TWS蓝牙耳机哪款适合新手?双11五款高性价比低延迟蓝牙耳机推荐

热门文章

  1. rust 局域网联机_腐蚀怎么搭建服务器联机 游戏联机方法一览
  2. 每日一题181——分糖果
  3. 机器学习7:朴素贝叶斯
  4. mysql查看当前表字符集_查看mysql字符集及修改表结构--表字符集,字段字符集
  5. 【Python系列课】:Python中的函数
  6. 贪吃蛇java代码_java实现贪吃蛇的代码实例
  7. 电子竞技行业所面临的四大攻击威胁
  8. objdump 反汇编 vmlinux详解
  9. 马上过年了,5行代码教你实现放烟花
  10. 第二次网页前端培训(HTML)