javascript中导出与导入实现模块化管理教程


Posted in Javascript onDecember 03, 2020

在理想情况下,开发者只需要实现核心的业务逻辑,其他都可以加载别人已经写好的模块。但是,在ES6以前,JavaScript一直没有自己模块体系(module),无法将一个大程序拆分成互相依赖的小文件,再用简单的方法拼装起来。如果要想在前端做模块化开发,必须依赖第三方框架来实现,如:requireJS与seaJS。

javascript中的导出和导入实现模块化管理

requireJS是AMD规范的起源,seaJS是CMD规范的起源,由于两者功能高度重合,后来seaJS不再维护,从此淡出人们的视野,于是requireJS一家独大,直到ES6的出现,且迅速成为前端和服务器端通用的模块解决方案,完全可以取代AMD 规范和NodeJS支持的CommonJS 规范。

ES6中首次引入模块化开发规范ES Module,让JavaScript首次支持原生模块化开发,使用 export 和 import 关键字进行模块化开发。

1 export:用于对外输出本模块

方法1 声明时直接导出

export var str = '1';

export function func1() {
 return 'hello word'
} 

export const func2 = () => {
 // 箭头函数导出
 return 'hello word'
}

方法2 统一在最后导出

var str = '1';

function func1() {
 return 'hello word'
}

const func2 = () => {
 return 'hello word'
}

export {
 str,
 func1,
 func2,
}

方法3 起别名

var str = '1';

function func1() {
 return 'hello word'
}

const func2 = () => {
 return 'hello word'
}

export {
 str as str1,
 func1 as f1,
 func2 as f2,
}

方法4 对导入的方法直接导出

这种方法常用于统一文件导出

// 这是一个utils.js 导出一个变量两个方法
var str = '1';

function func1() {
 return 'hello word'
}

const func2 = () => {
 return 'hello word'
}

export {
 str as str1,
 func1 as f1,
 func2 as f2,
}
// 这是引用utils.js的文件-config.js
export {str,func1,func2} from ‘./config.js'

方法5 默认导出(default)

这种导出方式一个js文件只能有一个default,所以它后面不能跟变量声明语句。

export default function() {}

方法6 导出类

// 这是一个utils.js 导出一个变量两个方法
export class utils {

 format(){
  // 类方法1
 };
 cheackData(){
  // 类方法2
 }
}
// 调用utils文件中
import {utils} from ‘./utils.js'

const utils = new utils();
utils.format();
utils.cheackData();

2 import:用于在模块中加载含有export接口的模块

方法1 直接导出

import {str,func1,func2} from ‘./utils.js'

方法2 起别名

这种情况一般用于导入的两个或者多个模块中存在相同的导入内容

import {str as str1,func1 as f1,func2 as f2} from ‘./utils.js'

方法3 一次导入文件中所有

import * as utils from ‘./utils.js'

utils.str
utils.func1
utils.func2

方法4 导入使用default方式导出的模块

import utils from ‘./utils.js'

到此这篇关于javascript中导出与导入实现模块化管理教程的文章就介绍到这了,更多相关javascript导出与导入模块化管理内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
基于jquery1.4.2的仿flash超炫焦点图播放效果
Apr 20 Javascript
关于JS数组追加数组采用push.apply的问题
Jun 09 Javascript
js实现同一页面可多次调用的图片幻灯切换效果
Feb 28 Javascript
Javascript农历与公历相互转换的简单实例
Oct 09 Javascript
基于vue2的table分页组件实现方法
Mar 20 Javascript
vue数据双向绑定的注意点
Jun 23 Javascript
JavaScript使用math.js进行精确计算操作示例
Jun 19 Javascript
Angular父子组件通过服务传参的示例方法
Oct 31 Javascript
原生javascript自定义input[type=radio]效果示例
Aug 27 Javascript
jquery 键盘事件 keypress() keydown() keyup()用法总结
Oct 23 jQuery
微信小程序搜索框样式并实现跳转到搜索页面(小程序搜索功能)
Mar 10 Javascript
详解vue3.0 diff算法的使用(超详细)
Jul 01 Javascript
JS如何实现在弹出窗口中加载页面
Dec 03 #Javascript
对vue生命周期的深入理解
Dec 03 #Vue.js
在实例中重学JavaScript事件循环
Dec 03 #Javascript
js 数据类型判断的方法
Dec 03 #Javascript
用vue设计一个日历表
Dec 03 #Vue.js
JS闭包原理及其使用场景解析
Dec 03 #Javascript
实用的 vue tags 创建缓存导航的过程实现
Dec 03 #Vue.js
You might like
Apache 配置详解(最好的APACHE配置教程)
2010/07/04 PHP
ubuntu10.04配置 nginx+php-fpm模式的详解
2013/06/03 PHP
深入了解PHP中的Array数组和foreach
2016/11/06 PHP
PHP isset()与empty()的使用区别详解
2017/02/10 PHP
详解laravel安装使用Passport(Api认证)
2018/07/27 PHP
PHP使用ajax的post方式下载excel文件简单示例
2019/08/06 PHP
实例说明为什么不要行内使用javascript
2014/04/18 Javascript
JavaScript数组常用操作技巧汇总
2014/11/17 Javascript
JavaScript中数据结构与算法(五):经典KMP算法
2015/06/19 Javascript
JavaScript判断变量是否为数组的方法(Array)
2016/02/24 Javascript
原生js实现倒计时功能(多种格式调用)
2017/01/12 Javascript
JS基于onclick事件实现单个按钮的编辑与保存功能示例
2017/02/13 Javascript
JS控件bootstrap datepicker使用方法详解
2017/03/25 Javascript
VUE饿了么树形控件添加增删改功能的示例代码
2017/10/17 Javascript
layer.close()关闭进度条和Iframe窗的方法
2018/08/17 Javascript
微信小程序如何自定义table组件
2019/06/29 Javascript
微信小程序实现页面浮动导航
2020/01/08 Javascript
js模拟实现百度搜索
2020/06/28 Javascript
vue 使用微信jssdk,调用微信相册上传图片功能
2020/11/13 Javascript
[03:22]DSPL第一期精彩集锦:酷炫到底!
2014/11/07 DOTA
[01:38]女王驾到——至宝魔廷新尊技能&特效展示
2020/06/16 DOTA
python将MongoDB里的ObjectId转换为时间戳的方法
2015/03/13 Python
对Python中range()函数和list的比较
2018/04/19 Python
查看TensorFlow checkpoint文件中的变量名和对应值方法
2018/06/14 Python
使用pycharm在本地开发并实时同步到服务器
2019/08/02 Python
Python2与Python3的区别点整理
2019/12/12 Python
python数据库编程 ODBC方式实现通讯录
2020/03/27 Python
Keras - GPU ID 和显存占用设定步骤
2020/06/22 Python
瑞典耳机品牌:URBANISTA
2019/12/03 全球购物
竞职演讲稿范文
2014/01/11 职场文书
最新个人职业生涯规划书
2014/01/22 职场文书
工作时间调整通知
2015/04/24 职场文书
教育教学读书笔记
2015/07/02 职场文书
如何书写民事调解协议书?
2019/06/25 职场文书
python保存大型 .mat 数据文件报错超出 IO 限制的操作
2021/05/10 Python
一篇文章带你学习Mybatis-Plus(新手入门)
2021/08/02 Java/Android