多个js文件之间,引用顺序,命名问题,很容易造成问题。模块化的思想,就解决了这种问题,每一个js文件都是一个模块,b.js想访问这个a.js的数据,必须要a.js导出后,b.js在导入指定的a.js数据,才能访问。

引入

在引入js文件的时候,要加上type="module",就表示这个js文件有单独的作用域,不能相互访问,被当做模块来处理

  1. <script src="../js/v.js" type="module"></script>
  2. <script src="../js/m.js" type="module" ></script>
  3. <script src="../js/a.js" type="module" ></script>

导出export

  1. let name="小明";
  2. const age=30;
  3. let score=[12,32,20];
  4. let fff=x=>console.log("哈哈哈哈");
  5. //导出方式1
  6. export{
  7. name,
  8. age
  9. }
  10. //导出方式2
  11. export let hhh ="哈哈哈哈哈哈";
  12. //导出方法3
  13. //某些情况下,在模块中包含某些功能,我们并不希望给这些功能命名,让导入者自己命名
  14. //default导出的只能有一个
  15. export default score;

导入import

  1. //import后面跟你要导入的数据,from后面跟来自哪个文件
  2. //普通导入,用大括号
  3. import {name,age,hhh} from "./v.js"
  4. //导入default,并随便起名,不要加大括号
  5. import asd from "./v.js"
  6. //统一全部导入,用通配符*导入全部,取个别名,aaa,数据全部在aaa这个对象里面
  7. import * as aaa from "./v.js"
  8. console.log(name,age,hhh);

可能报错

1.跨域

在本地运行的html,js等,就是浏览器地址栏写类似于C:/html/index.html这样的本地文件url,就会出现跨域。
image.png
怎么解决?
用的vscode,安装这个插件
image.png
右键启动的html文件,或者快捷键
image.png