IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> JavaScript模块化 -> 正文阅读

[JavaScript知识库]JavaScript模块化


1.?什么是 JS 模块化 ?

一种将 JavaScript 程序拆分为可按需导入的单独模块的机制

即通俗来说,就是将一个 JS 程序文件,按着类别分模块以此拆分成多个小文件,再对这些小文件根据自己的需求进行拼装。

这样做它的好处就显而易见了:

  • 便于管理代码
  • 提高代码复用性
  • 避免全局变量污染

那么,如何使用它呢 ?


2.?模块导出

对于模块的导出,我们可以使用 export 语句

export 语句用于从模块中导出实时绑定的函数、对象或原始值

它分为以下两类导出:

  • 默认导出
  • 命名导出

接下来,我们看看如何使用它们

首先,写一个 imformation.js 文件作为一个模块

const Xixi = {
    name: 'XiXi',
    age: 18,
    hobby: 'basketball'
}

const Haha = {
    name: 'Haha',
    age: 18,
    hobby: 'football'
}

2.1) 默认导出

对于默认导出,每个模块只能有一个,它的语法如下:

export default XXX; 
  • XXX 为要导出的东西,对于默认导出,XXX 可以是一个对象,也可以是一个函数,也可以是一个已存在的变量名
    导出函数 export default () => {};
    导出对象 export default {};
    导出已存在的变量名 export default Xixi;

在这里,我们将 Xixi 导出

const Xixi = {
    name: 'XiXi',
    age: 18,
    hobby: 'basketball'
}

const Haha = {
    name: 'Haha',
    age: 18,
    hobby: 'football'
}

// 在这里,我们将 Xixi 导出,就在代码结尾处加上这条语句
export default Xixi;
  • Notes:

默认导出只可以有一个且只能导出一个值


2.2) 命名导出

对于命名导出,每个模块中可以有多个,它的语法如下:

export XXX;
  • XXX 必须是一个声明或着语句(不能导出匿名函数或者一个未命名对象)
  • 可以导出前面已经存在的变量 export { Xixi };
  • 可以导出一条语句 export const age = 18; / export function speak() {};

这里,将 XixiHaha 导出:

const Xixi = {
    name: 'XiXi',
    age: 18,
    hobby: 'basketball'
}

const Haha = {
    name: 'Haha',
    age: 18,
    hobby: 'football'
}

// 对于导出已存在变量,记得用 {} 包裹起来
export { Xixi, Haha };

在进行导出时,我们还可以起别名,如:

export { Xixi as p1, Haha };

3.?模块导入

对于模块的导入,我们可以使用 import 语句

import 语句用于导入由另一个模块导出的绑定

它的使用根据导出的方式来决定:

我们先创建一个 html 文件,将想导入的模块加载进来

<script type=“module”> 中 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>Module</title>
</head>
<body>
    <!-- 如果这个 script 标签想要导入模块,
        这里必须加个属性 type="module" -->
    <script type="module">
    </script>
</body>
</html>

3.1) 默认导出的导入

它的语法如下:

import XXX from '文件路径';
  • XXX 对于默认导出的导入,我们可以随便命名,因为默认导出只导出一个值,没有命名要求

默认导出的语句:

export default Xixi;

在这里将之前导出的 Xixi 导入

<!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>Module</title>
</head>
<body>
    <script type="module">
        import Xixi from './infromation.js';
        console.log(Xixi.name, Xixi.age, Xixi.hobby);
    </script>
</body>
</html>

在这里插入图片描述

3.2) 命名导出的导入

对于命名导出的导入,我们需要将想要导入的声明或语句的名字与导出时一一对应,用 {} 包裹起来
它的语法如下:

import XXX from '文件路径';
  • XXX 对于命名导出的导入时,不能随意命名,必须与导出时名字一一对应,可以选取我们想要的声明或语句导入

命名导出的语句:

export { Xixi, Haha };

在这里,我们将 XixiHaha 导入:

<!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>Module</title>
</head>
<body>
    <script type="module">
        import { Xixi, Haha } from './infromation.js';
        console.log(Xixi.name, Xixi.age, Xixi.hobby);
        console.log(Haha.name, Haha.age, Haha.hobby);
    </script>
</body>
</html>

如果命名导出时使用了别名,它的导入也要用别名与之对应,如:
命名导出:

export { Xixi as p1, Haha };

它的导入:

import { p1, Haha } from './infromation.js';
console.log(p1.name, p1.age, p1.hobby);

在它进行导入时,也可以使用别名进行导入:

import { p1, Haha as p2 } from './infromation.js';
console.log(p1.name, p1.age, p1.hobby);
console.log(p2.name, p2.age, p2.hobby);
  • Notes

同时导入export defaultexport 导出的内容:
当对于默认导出的导入和命名导出的导入在同一条语句时,默认导出的导入要在前面!,如
导出:

export default Xixi;
export { Haha };

导入:

// Xixi 作为默认导出的值,必须在命名导出前
import Xixi, { Haha } from './infromation.js';

整体导入所有导出

import * as people from './infromation.js';
console.log(people.default.name);
console.log(people.Haha.name);

在这里插入图片描述
对于导入,这里介绍的是静态的 import,还有动态的 import,对于它的用法可以去 MDN 文档: import 中进行学习。

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-05-05 11:09:15  更:2022-05-05 11:13:19 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 23:09:22-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码