当前位置: 代码网 > it编程>编程语言>Javascript > JavaScript模块化

JavaScript模块化

2024年08月02日 Javascript 我要评论
导出代码导入代码import * as es6 from "./27、es6模块化-导出.js"html测试代码,一定要加上。

一、commonjs规范

1、在node环境下的模块化

导入、导出

导入:require,例如:const axios = require('axios'); 或者解构导入const {axios,postgres:pg}=require('./_axios_postgres.js')

导出:exports,例如:exports.axios = {"axios":axios,"pg":pg}或者对象整体导出:module.exports = { axios,pg }

在这里插入图片描述

2、浏览器环境下使用模块化

默认是不支持require的,所以需要编译一下才能在html中引入模块化js

browserify编译js

在这里插入图片描述

二、es6模块化规范

1、在浏览器端的定义和使用

导出代码

export const my_axios = { "a": 1, b: "2" }
export function getaxios() {
  return my_axios
}

导入代码

import * as es6 from "./27、es6模块化-导出.js"
console.log("xxx", es6.getaxios());

html测试代码,type="module"一定要加上

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <meta http-equiv="x-ua-compatible" content="ie=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>document</title>
</head>
<script type="module" src="./27、es6模块化-导入.js"></script>
<body>
  
</body>
</html>

控制台打印结果
在这里插入图片描述

2、在node环境下简单使用

方式一:

(1)修改上面导入导出文件为mjs文件

在这里插入图片描述

(2)执行结果

在这里插入图片描述

方式二:

在上面导入导出的js文件下新建package.json,加上内容type如下

{
  "type": "module"
}

运行结果
在这里插入图片描述

3、导出数据

(1)、分别导出。将导出的对象前面分别加上export

export const my_axios = { "a": 1, b: "2" }
export function getaxios() {
  return my_axios
}

(2)、统一导出。使用export {}

const postgres1 = "pg1"
const postgres2 = "pg2"
export {postgres1,postgres2}

(3)、默认导出。export default {}

const postgres3 = "pg3"
export default { postgres3}
或者
export default postgres3

4、导入数据

(1)、导入全部。

import * as es6 from "./27、es6模块化-导出.js"

(2)、命名导入。只针对分别导出和统一导出

import { my_axios as axios, getaxios } from "./28、es6模块化-导出.js"

(3)、默认导入。只针对默认导出

import xxx(随便起,获取到的是默认导出的所有对象) from "./28、es6模块化-导出.mjs"

(4)、通用导入。混合使用

import xxx(随便起,获取到的是默认导出的所有对象), { my_axios, getaxios } from "./28、es6模块化-导出.mjs"

(5)、动态导入。点击按钮后导入某个js

<body>
  <button id="btn">导入</button>
</body>
<script>
  const btn = document.getelementbyid("btn")
  btn.onclick = async () => {
    const result = await import("./27、es6模块化-导出.js")
    console.log("result", result);
  }
</script>

在这里插入图片描述
(6)、import可以不接收任何数据。
比如每次启动项目都要在控制台打印一次当前版本号,
先创建version.js,内容写上console.log("v_1.1.2"),然后在访问开始页面直接使用import "./version.js"即可。

5、数据引用问题

思考一:
在这里插入图片描述
思考二:相当于复制了一份
在这里插入图片描述
思考三:
在这里插入图片描述

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com