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知识库 -> ES6的模块导入和导出 -> 正文阅读

[JavaScript知识库]ES6的模块导入和导出

js在之前的版本中是不支持模块的概念的,一般我们在开发中为了我们的的项目能够多人协作开发,并且每个人定义的变量不会被他人所覆盖,我们会通过一些方式进行控制

  1. 把我们的代码写到一个自执行的函数中,然后在函数中定义我们的变量名和方法名,然后我们把这些方法和变量存到一个对象中,最后通过一个对象名把它挂载到window对象上,供外界使用。这种情况虽然解决了大部分的命名冲突问题,但是还会有冲突的出现,他也没有真正的实现模块化。
  2. 后来一些js社区出现了一些模块化的解决方案,require.js、sea.js

ES6的真正意义上规范了模块化。

它提供两个方法,导入模块import、导出模块export,导入导出模块也分为很多种

导出模块

分别导出模块,语法:

// module_1.js
// 导出方法
export function fun(){
  console.log('function');
}
// 导出变量
export const a = '我是字符串';

// 导出类
export class Person{
  constructor(j){
    this.name = j.name,
    this.age = j.age;
  }
}

统一导出模块语法:

// module_2.js
// 统一暴漏
// 导出方法
function fun(){
  console.log('function');
}

// 导出变量
const a = '我是字符串';

// 导出类
class Person{
  constructor(j){
    this.name = j.name,
    this.age = j.age;
  }
}
// 这里是es6简写形式
export {fun, a, Person};
// 页可以给上边的名称从新命名
export {fun as abc, b, Person}

默认导出

// module_3.js
// 使用default关键字,来执行默认导出,默认导出只能有一个
export default {
  fun: function(){
    console.log('fun')
  },
  a: '我是字符串',
  person: class Person{
    constructor(j){
      this.age = j.age;
      this.name = j.name;
    }
  }
}

模块的导入

统一导入,通用导入方式

// 导入
import * as module_1 from './module_1.js';
import * as module_2 from './module_2.js';
import * as module_3 from './module_3.js';
// 使用
console.log(module_1);
// 对象形式,{fun:function(), a: '', person: class}
console.log(module_2);
// 对象形式,{fun:function(), a: '', person: class}
console.log(module_3);
// 对象形式,{default: {fun:function(), a: '', person: class}}

此导入方式可以导入上边所有导出的写法,导入的是所有导出的一个结合,

分别导入,结构赋值导入

// 这是利用es6的对象结构赋值,把导出的多有成员项结构出来
import {fun, a, Person} from './module_1.js';

// 这种方式也是,module_2导出的是一个对象,所以直接把对象的项结构出来
//由于上边导入的模块有相同的名字,所以我们可以使用as给导出的项取别名
import {fun as fun1, a as a1, Person as person1} from './module_2.js';

// 由于module_3使用的是default关键字默认导出,
// 所以es6在导出的时候把,default作为键名导出的项对象集合作为键值进行导出
// 这里导入的时候使用 as关键字进行别名设置,这里不能直接写defautl关键字进行导入
import { default as module3} from './module_3.js';

简单导出,只是针对默认导出方式
// 可以省略default,和 as关键字,直接使用别名进行导入
import module3 from './module_3.js';

模块导入导出的使用

ES6的模块导入导出,只有现在的新版本chrome浏览器支持这种写法,同时也可以使用script直接引入,引入方式

<!--如果要在浏览器中直接使用,需要给标签设置一个
type="module"属性来告诉浏览器次引入是ES6的模块语法形式-->
<script src="main.js" type="module"></script>
  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-03-03 16:03:16  更:2022-03-03 16:05:53 
 
开发: 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/24 9:09:34-

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