1.什么是模块化开发.html 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8" />
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge" />
  6. <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  7. <title>Document</title>
  8. </head>
  9. <body>
  10. <script src="a.js"></script>
  11. <script src="b.js"></script>
  12. <!-- 以模块方式引入 js 文件 -->
  13. <script src="./myMath.js" type="module"></script>
  14. <script>
  15. console.log(r); // 30
  16. // console.log(PI); // 会报错
  17. /**
  18. ** 1. 什么是模块化开发?
  19. ** 所谓的模块化开发 就是 以 模块 为基本组成单元 去实现项目的开发
  20. ** 2. 什么是模块?
  21. ** 一个模块 对应的就是 一个文件。文件中 是 独立的可复用的代码片段。
  22. ** 比如,说在JS中 一个js文件 就是 一个模块,该文件名字 一般就是模块的名称、
  23. ** 3. 模块化解决的问题
  24. ** 3.1 命名冲突: 由于模块具有独立的作用域(模块作用域或者文件作用域),因此不同模块内定义的同名变量 是不会发生冲突的
  25. ** 3.2 代码组织:有了模块之后,可以将独立的或者可复用的代码 提取出来,放到模块中。模块的文字就可以用来作为功能的一个提示。
  26. ** 3.3 依赖问题:在模块中有固定语法来解决模块间的依赖问题。
  27. ** 4. 模块的使用
  28. ** 4.1 创建模块
  29. 在js中,创建一个js文件 即创建了一个模块、默认情况下模块会具有独立的作用域。内部数据 不会直接暴露出去
  30. ** 4.2 对外暴露
  31. 模块实现对外暴露接口 有两种方式:
  32. A: 命名导出 named export
  33. B: 默认导出 default export
  34. ** 4.3 引入依赖
  35. 针对不同的导出方式 依赖的引入 也有两种方式:
  36. A 针对命名导出:
  37. 按需导:import {arg1, arg2, ..., argN} from '模块路径' 将指定模块的命名导出 一次一个一个的导入进来
  38. 整体导:import * as 变量名字 from '模块路径' 将所有的命名导出 都通过一个对象形式导入到当前模块内
  39. B 针对 默认导出:
  40. import 变量 from '模块路径'
  41. C 同时 针对默认和命名导出
  42. import 变量名, {arg1, arg2, ..., argN} from '模块路径'
  43. **/
  44. </script>
  45. <script type="module">
  46. // 在type=module的 script标签内使用import from导入依赖 模块路劲要添加 后缀名
  47. // import { calcCircleArea } from './myMath.js';
  48. // calcCircleArea(10); // 314
  49. // import * as myMath from './myMath.js';
  50. // // 创建一个myMath对象 -- myMath = {} 然后将myMath模块中所有的命名导出数据 都以属性的方式添加给 变量myMath
  51. // myMath.calcCircleArea(10);
  52. import m from './myMath.js';
  53. console.log(m);
  54. </script>
  55. </body>
  56. </html>