JavaScript模块探索
时间:2022-04-25
本文章向大家介绍JavaScript模块探索,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
随着JS项目越来越大,再依靠简单的命名空间来解决冲突不是很可取,项目大了之后不只有变量冲突的问题,还有模块依赖以及加载策略的问题等,这次就介绍现存的几种模块化、依赖的解决方案。
AMD
AMD规范起源于CommonJS的一个草案,由于没有达成一致所以后来就分道扬镳。
定义模块:
define(id?, dependencies?, factory);
http://requirejs.org/docs/api.html#define
使用模块:
require(id);
例子:
add.js
define(function(){ return function (a, b) { return a + b;
};
});
app.js
define(['./add'],function (add) {
var sum = add(1,2);
console.log(sum);});
或
define(function (require,exports,module) {
var sum = 0;
var add = require('./add');
sum = add(1,2);
console.log(sum);});
CommonJS
CommonJS规范因NodeJS而大放异彩。
定义模块:
并没有像AMD那种需要define包裹,一个文件就是一个模块。要导出模块则挂在到exports对象上即可。
使用模块:
require('moduleId');
add.js
exports.add = function(a,b){ return a + b;
}
app.js
var sum = 0;var plus = require('./add').add;//被引用的模块若是挂在exports上的则导出的是一个对象,所以需要指定到具体的方法,若模块是直接赋值给module.exports上的则不需要。sum = plus(1,2);console.log(sum);
相比于AMD格式,CommonJS格式简单、清爽、明了。
http://javascript.ruanyifeng.com/nodejs/module.html
CMD
定义、使用方法类似AMD,只是模块的执行时机和顺序不同。
具体参考:https://github.com/seajs/seajs/issues/242
ES6 module
ES6最具有意义的部分,有望成为浏览器和服务器通用的模块解决方案。
定义模块:
类似CommonJS,只不过导出是使用export。
使用模块:
import xx from 'xx'
add.js
export function add(a,b){ return a + b;
}
app.js
import {add} from 'add';var sum = 0;
sum = add(1,2);console.log(sum);
- View绘制流程
- Linux Rootkit系列一:LKM的基础编写及隐藏
- Swift基础语法(常量变量、数据类型、元组、可选、断言)
- 【实战】Python 读写 Excel 实例应用
- 10万WordPress网站沦陷:恶意软件SoakSoak来了
- 自己动手实现一个Android Studio插件
- Oracle数据库漏洞分析:无需用户名和密码进入你的数据库
- Android动态加载入坑指南
- ModSecurity技巧:使用ssdeep检测Webshell
- 装饰者模式
- 经典算法学习之分治法(以排列、组合程序为例)
- Bash概论 - Linux系列教程补充篇
- 我母亲遭遇勒索软件CryptoWall的全过程
- Android浏览器跨域数据窃取和Intent Scheme攻击
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 【2019-3-3】Mac启动redis
- awvs(acunetix)使用一段时间后突然不能用了-解决方案
- Java自动化测试(数据库断言 18)
- Java自动化测试(参数化 19)
- Python 基础(一):入门必备知识
- Mac安装软件提示 已损坏【已解决】
- 机器学习之sklearn基础教程!
- 2020最新版 maven for MAC 安装及配置
- jemter安装(win/mac)并快捷启动的方法
- nmap 详解版-指令使用方法大全【含安装】
- 常见6种WAF绕过和防护原理
- 2020-mac 安装jdk1.8
- AWVS acunetix_WVS13的基础使用
- 为啥PHP in_array(0,['a', 'b', 'c']) 返回为true?
- docker安装伏羲扫描器fuxi-scanner