JS模块化
-
模块化的理解
-
什么是模块?
-
一个模块的组成
-
模块化
-
模块化的进化过程
-
全局function模式 :
-
namespace模式 :
-
IIFE模式/增强
-
-
模块化规范
-
Commonjs
-
AMD : 浏览器端
-
require.js
-
基本语法
-
定义暴露模块: define([依赖模块名], function(){return 模块对象})
-
引入模块: require(['模块1', '模块2', '模块3'], function(m1, m2){//使用模块对象})
-
配置:
require.config({
//基本路径
baseUrl : 'js/',
//标识名称与路径的映射
paths : {
'模块1' : 'modules/模块1',
'模块2' : 'modules/模块2',
'angular' : 'libs/angular',
'angular-messages' : 'libs/angular-messages'
},
//非AMD的模块
shim : {
'angular' : {
exports : 'angular'
},
'angular-messages' : {
exports : 'angular-messages',
deps : ['angular']
}
}
})
-
-
-
CMD : 浏览器端
-
sea.js
-
基本语法
-
定义暴露模块:
define(function(require, module, exports){
通过require引入依赖模块
通过module/exports来暴露模块
exports.xxx = value
}) -
使用模块seajs.use(['模块1', '模块2'])
-
-
-
ES6
-
ES6内置了模块化的实现
-
基本语法
-
定义暴露模块 : export
-
暴露一个对象:
export default 对象 -
暴露多个:
export var xxx = value1
export let yyy = value2
var xxx = value1
let yyy = value2
export {xxx, yyy}
-
-
引入使用模块 : import
-
default模块:
import xxx from '模块路径/模块名' -
其它模块
import {xxx, yyy} from '模块路径/模块名'
import * as module1 from '模块路径/模块名'
-
-
-
问题: 所有浏览器还不能直接识别ES6模块化的语法
-
解决:
-
-
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。