博客列表 >【JS】模块导出与使用场景 总结(一文看懂)

【JS】模块导出与使用场景 总结(一文看懂)

可乐随笔
可乐随笔原创
2022年12月04日 10:54:55422浏览

模块导出与使用场景

总结:

1.逐个导出
2.统一导出
3.别名导出
4.默认导出
5.混合导出
6.全部导出

1.逐个导出

HTML示范:

  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>模块导入-1:逐个导出</title>
  8. </head>
  9. <body>
  10. <!-- type = "module" ,浏览器中支持JS模块 -->
  11. <script type="module">
  12. //模板导入
  13. //import 成员列表 from 模块名
  14. // import {hello,username} from './modules/m1.js'
  15. console.log(username);
  16. console.log(hello(username));
  17. //import 自动提升,先执行
  18. import {hello,username} from './modules/m1.js'
  19. </script>
  20. </body>
  21. </html>

js示范:

  1. // todo 逐个导出
  2. //声明与导出:二合一/同步导出
  3. export let username = '老马';
  4. export function hello(username){
  5. return `Hello,${username}`;
  6. }

2.统一导出

HTML示范:

  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>模块导入-2:统一导出</title>
  8. </head>
  9. <body>
  10. <script type="module">
  11. //统一导出 -> 逐个导入
  12. import {hello,username} from './modules/m2.js';
  13. console.log(username);
  14. console.log(hello(username));
  15. </script>
  16. </body>
  17. </html>

js示范:

  1. // todo 统一导出
  2. //声明与导出:分两步完成
  3. //1.声明
  4. let username = '老马';
  5. function hello(username){
  6. return `Hello,${username}`;
  7. }
  8. // 2.导出
  9. // 将导出的成员,放到一个 {}
  10. export{username,hello};

3.别名导出

HTML示范:

  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>模块导入-3:别名导出</title>
  8. </head>
  9. <body>
  10. <script type="module">
  11. //统一导出 -> 逐个导入
  12. import {uname,getHello} from './modules/m3.js';
  13. console.log(uname);
  14. console.log(getHello(uname));
  15. </script>
  16. </body>
  17. </html>

JS示范:

  1. // todo 统一导出
  2. //声明与导出:分两步完成
  3. //1.声明
  4. let username = '老马';
  5. function hello(username){
  6. return `Hello,${username}`;
  7. }
  8. // 2.导出
  9. // 将导出的成员,放到一个 {}
  10. // as 别名导出
  11. // 隐藏成员的真实名称
  12. // 外部使用也必须使用别名,原名失效
  13. export{username as uname,hello as getHello}

4.默认导出

HTML示范:

  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>模块导入-4:默认导入</title>
  8. </head>
  9. <body>
  10. <script type="module">
  11. //默认导出
  12. //导入时,不能使用{...}
  13. //导入默认值
  14. // import site from './modules/m4.js';
  15. // //通过模块默认函数进行计算求和
  16. // console.log(site);
  17. // //导入函数
  18. // import sum from './modules/m4.js';
  19. // //通过模块默认函数进行计算求和
  20. // console.log(sum(1,2,3,4,5));
  21. //导入对象
  22. import course from './modules/m4.js';
  23. // 模块的对象 不能被更新,而对象的属性可以更新
  24. course.score = 110;
  25. console.log(course.score);
  26. </script>
  27. </body>
  28. </html>

JS示范:

  1. // todo 默认导出(重要)
  2. /***
  3. * * 1.之前导出,是导出一个‘声明’
  4. * * 2.默认导出,是导出一个具体的‘值’
  5. * * 3.默认导出的值,默认名称是'default'
  6. * * 4.外部导入时,可以自定义'default'名称
  7. * ? 所以,默认导出,也称为‘匿名导出’(成员没有名称)
  8. * ? 即,导出成员名称,导入时可以自定义
  9. */
  10. //1.返回值
  11. ///export default 'PHP中文网';
  12. // ! 一个模块,仅允许有一个‘默认导出’
  13. //2.函数
  14. // export default function (...arr) {
  15. // return arr.reduce((a, c) => a + c);
  16. // }
  17. //3.对象
  18. export default {
  19. lesson: 'ES6',
  20. //与访问器属性冲突,可以放深一级
  21. //是为了防止递归调用陷入死循环
  22. // score:60,
  23. data: {
  24. score: 60,
  25. },
  26. //score 访问器属性
  27. get score() {
  28. //this.score访问的是访问器属性,陷入了死循环,所次使用下面的访问方法
  29. // return this.score
  30. return this.data.score;
  31. //需求:不及格全部返回60分,否则+5分返回
  32. let score = this.data.score;
  33. return score < 60 ? 60 : score + 5;
  34. },
  35. set score(value) {
  36. if(value>=0 && value<=100){
  37. this.data.score = value;
  38. }else{
  39. console.log('成绩必须在0-100之间')
  40. }
  41. }
  42. }
  43. //4.返回类
  44. //export default class{}

5.混合导出

HTML示范:

  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>模块导入-5:混合导入</title>
  8. </head>
  9. <body>
  10. <script type="module">
  11. //默认导出
  12. //导入时,不能使用{...}
  13. //
  14. // import jz,{uname,bq};
  15. import jz,{uname,bq} from './modules/m5.js';
  16. console.log(uname);
  17. console.log(bq);
  18. console.log(jz);
  19. </script>
  20. </body>
  21. </html>

JS示范:

  1. // todo 混合导出(重要)
  2. // 成员:1.普通成员;2.别名成员;3.默认成员
  3. let uname = '灭绝师太';
  4. let weapon = '打狗棒';
  5. let uniqueSkill = '九阴白骨爪';
  6. //混合导出:普通成员,别名成员,默认成员
  7. export {uname,weapon as bq,uniqueSkill as default};

6.全部导出

HTML示范:

  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>模块导入-5:混合导入</title>
  8. </head>
  9. <body>
  10. <script type="module">
  11. //默认导出
  12. //导入时,不能使用{...}
  13. //
  14. // import jz,{uname,bq};
  15. // import jz,{uname,bq} from './modules/m5.js';
  16. import * as user from './modules/m6.js';
  17. //将全部成员,全部挂载到一个“对象”上
  18. //这个对象,可以看成模块成员的“命名空间”
  19. console.log(user.uname);
  20. console.log(user.bq);
  21. //默认成员,必须使用default访问
  22. // console.log(user.jz);
  23. console.log(user.default);
  24. //整体导入时,尽量不要使用默认成员
  25. //如果有多个成员,建议打包到对象中,再默认导出,遵循开发规范
  26. </script>
  27. </body>
  28. </html>

JS示范:

  1. // todo 整体导出(重要)
  2. // 成员:1.普通成员;2.别名成员;3.默认成员
  3. let uname = '灭绝师太';
  4. let weapon = '打狗棒';
  5. let uniqueSkill = '九阴白骨爪';
  6. //混合导出:普通成员,别名成员,默认成员
  7. export {uname,weapon as bq,uniqueSkill as default};
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议