当前位置:Gxlcms > JavaScript > JavaScript模块化编程(笔记)_javascript技巧

JavaScript模块化编程(笔记)_javascript技巧

时间:2021-07-01 10:21:17 帮助过:5人阅读

一直对JS都是一知半解,最近遇到这方面问题,所以在网上学习了一下,现在还没有完全明白,先贴出笔记;

第一章 JavaScript模块化编程

(一):模块的写法

一 原始写法
// 模块就是实现特定功能的一组方法;只要把不同的函数(以及记录状态的变量)简单地放在一起,就算是一个模块;
function m1(){
// ...
}
function m2(){
// ...
}
// 上面的函数m1()和m2(),组成一个模块;使用时直接调用就行;
// 缺点:"污染"了全局变量; 无法保证不与其他模块发生变量名冲突,而且模块成员之间看不出直接关系;

二 对象写法

三 立即执行函数写法

四 放大模式

五 宽放大模式

六 输入全局变量

第二章 JavaScript模块化编程(二):AMD规范

一 模块的规范
// 目前,通行的JavaScript模块规范共有两种:CommonJS和AMD;

二 CommonJS
// node.js将javascript语言用于服务器端编程,这标志"JavaScript模块化编程"正式诞生;
// node.js的模块系统,就是参照CommonJS规范实现的;
在CommonJS中,有一个全局性方法require(),用于加载模块;
var math = require('math'); // 加载模块;
math.add(2,3); // 调用模块方法=>5;

三 浏览器环境
// 上一节的代码在浏览器中运行会有很大的问题;
var math = require('math');
math.add(2,3);
// 问题:必须在require('math')等math.js加载完成,才会执行math.add(2,3);
// 所以浏览器的模块,不能采用"同步加载",只能采用"异步加载";==>AMD;

四 AMD
AMD(Asynchronous Module Definition)异步模块定义;
// 采用异步加载模块,模块的加载不影响它后面语句的运行,所有依赖这个模块的语句,都定义在一个回调函数中,
// 等加载完成之后,这个回调函数才会运行;
// AMD也采用require()语句加载模块,但是它要求两个参数:
require([module],callback);
// module:是一个数组,里面的成员就是要加载的模块;
// callback:是加载成功之后的回调函数;
require(['math'],function(math){
math.add(2,3);
});
// math.add()与math模块加载不是同步的,浏览器不会发生假死;所以,AMD比较适合浏览器环境;

第三章 JavaScript模块化编程(三):require.js的用法
一 为什么使用require.js
// 需要依次加载多个js文件;
// 缺点:
// 1.加载的时候,浏览器会停止网页渲染,加载文件越多,网页失去响应的时间就会越长;
// 2.由于js文件之间存在依赖关系,因此必须严格保证加载顺序,当依赖关系很复杂的时候,代码的编写和维护都会变得困难;
// 所以require.js解决了这两个问题:
// 1.实现js文件的异步加载,避免网页失去响应;
// 2.管理模块之间的依赖性,便于代码的编写和维护;

二 require.js的加载
1.加载require.js
输出的变量名),表明这个模块外部调用时的名称;
比如:jQuery的插件
shim:{
'jquery.scroll':{
deps:['jquery'],
exports:'jQuery.fn.scroll'
}
};

七 require.js插件

1.domready:可以让回调函数在页面DOM结构加载完成之后运行;
require(['domready!'],function(doc){
// called once the DOM is ready;
})
2.text和image:允许require.js加载文本和图片文件;
define(['text!review.txt','image!cat.jpg'],function(review,cat){
console.log(review);
document.body.appendChild(cat);
});

人气教程排行