Javascript 模块化概述
模块化的目的
当网站开发得越来越复杂,会经常遇到以下问题:
- 命名冲突
- 文件依赖
Sea.js
一个适合web前端的模块加载器,遵守 CMD (Common Module Definition)模块定义规范
- 解决上面两个问题
- http://seajs.org
- 模块化的概念
Sea.js的使用方法
1. 引入Sea.js库
2. 定义模块
define(function(require,exports,module){//参数名写法不变
function tab(){
alert('hi');
}
//exports:对外的接口
exports.tab=tab;
});
3. 调用模块
//参数:模块的地址(相对seajs的地址),回调函数
seajs.use('path.js',function(ex){//回调函数的参数就是模块中的exports
ex.tab();//很好的解决了命名冲突的问题
});
4. 依赖模块
define(function(require,exports,module){
//require:依赖的接口
var dep = require('path.js');//如果地址指向模块,返回模块中的exports
dep.tab();
function tab(){
alert('hi');
}
//exports:对外的接口
exports.tab=tab;
});
进阶
1. 参数module
与 exports 类似,用来在模块内部对外提供接口。
define(function(require, exports, module) {
// 对外提供接口
module.exports = {
name: 'a',
doSomething: function() {};
};
});
2. 异步接口
require.async();
好处:无需等待,按需加载
require.async('./scale.js',function(ex){
ex.scale(a,b);
});
3. 调用多个模块
seajs.use(['main.js','main2.js'],function(ex,ex2){
//do something...
});
4. seajs.config
- alias:模块别名
- preload:预加载
- debug:调试
5. 插件
- 文本插件
- shim插件:js框架转模块化。
模块化的历史
- ECMAScript 6 将正式支持模块语法。
- 因nodeJS发展起来,服务器端需要模块化。
- commonJS规范,针对服务器端js开发,请求文件在本地,所以请求速度快,而浏览器端需要向服务器请求文件,会有所延迟,所以跟适合异步加载。
- AMD(Asynchromous Module Definition) 异步模块加载规范和CMD (Common Module Definition)通用模块定义,适合前端js开发。
- requireJS
- 和seaJS类似,模块化插件。
- requireJS采用AMD((Asynchromous Module Definition)规范,seaJS采用CMD规范。AMD与CMD的区别
- seaJS与requireJS的区别
Javascript 模块化概述的更多相关文章
- Javascript模块化编程详解
在这篇文章中,我将会回顾一下js模块化编程的基础,并且将会讲到一些真的非常值得一提的进阶话题,包括一个我认为是我自创的模式. 模块化编程是一种非常常见Javascript编程模式.它一般来说可以使得代 ...
- Javascript模块化编程(三):require.js的用法
Javascript模块化编程(三):require.js的用法 原文地址:http://www.ruanyifeng.com/blog/2012/11/require_js.html 作者: 阮一峰 ...
- Javascript模块化编程(二):AMD规范
Javascript模块化编程(二):AMD规范 作者: 阮一峰 原文地址:http://www.ruanyifeng.com/blog/2012/10/asynchronous_module_d ...
- Javascript模块化编程(一):模块的写法
Javascript模块化编程(一):模块的写法 作者: 阮一峰 原文链接:http://www.ruanyifeng.com/blog/2012/10/javascript_module.html ...
- Javascript模块化编程(二):AMD规范(转)
这个系列的第一部分介绍了Javascript模块的基本写法,今天介绍如何规范地使用模块. (接上文) 七.模块的规范 先想一想,为什么模块很重要? 因为有了模块,我们就可以更方便地使用别人的代码,想要 ...
- Javascript模块化编程(一):模块的写法(转)
随着网站逐渐变成"互联网应用程序",嵌入网页的Javascript代码越来越庞大,越来越复杂. 网页越来越像桌面程序,需要一个团队分工协作.进度管理.单元测试等等......开发者 ...
- Javascript模块化规范
Javascript模块化规范 一.前端js模块化由来与演变 CommonJS 原来叫 ServerJS,推出 Modules/1.0 规范后,在 Node.js 等环境下取得了很不错的实践.09年下 ...
- Javascript模块化开发,使用模块化脚本加载工具RequireJS,提高你代码的速度和质量。
随着前端JavaScript代码越来越重,如何组织JavaScript代码变得非常重要,好的组织方式,可以让别人和自己很好的理解代码,也便于维护和测试.模块化是一种非常好的代码组织方式,本文试着对Ja ...
- Javascript 模块化开发上线解决方案
最近又换部门了,好频繁地说...于是把这段时间搞的小工具们简单整理了一下,作了一个小的总结.这次用一个简单业务demo来向大家介绍一下Javascript模块化开发的方式和自动化合并压缩的一些自己的处 ...
随机推荐
- application.yml和application.properties文件的区别
maven项目 .yml文件时树状结构,层级浅时比较方便,层级深的时候就比较麻烦了 .properties文件时属性访问结构,层级深浅对它来说是一样的,而且相较于.yml类型的文件比较好配置,但缺点也 ...
- Python线程池与进程池
Python线程池与进程池 前言 前面我们已经将线程并发编程与进程并行编程全部摸了个透,其实我第一次学习他们的时候感觉非常困难甚至是吃力.因为概念实在是太多了,各种锁,数据共享同步,各种方法等等让人十 ...
- requirejs之demo
具体的理论就不讲了,可以参考 http://www.ruanyifeng.com/blog/2012/10/javascript_module.html http://www.ruanyifeng.c ...
- Java嵌套类,内部类和外部类
1.嵌套类,内部类 嵌套类是指被定义在一个类内部的类: JAVA的嵌套类有很多种类:1.静态成员类:2.非静态成员类:3.匿名类:4.局部类:其中,除了静态成员类之外,其他的都是内部类,因为静态成员类 ...
- JZOJ2018提高组-测绘
测绘 题目大意 为了研究农场的气候, \(Betsy\) 帮助农夫 \(John\) 做了 \(N(1 <= N <= 100)\) 次气压测量并按顺序记录了结果 \(M_1...M_N( ...
- C#中Linq查询List与DataTable和Dictionary
查询DataTable返回List List<string> listNation = dtNation.AsEnumerable().Select(d => d.Field< ...
- 《Spring全局异常处理》从零掌握@ControllerAdvice注解
一.开门见山 在前后端分离框架的大趋势下,前后端基本的职责已经确定. 前端主要负责界面的处理以及基本的判空检验.数据来源则通过vue调用后端发布的接口. 后端的原型还是mvc的模式: controll ...
- CRLF injection 简单总结
CRLF injection 简单总结 简介 CRLF是"回车 + 换行"(\r\n)的简称,即我们都知道在HTTP协议中,HTTP Header与HTTP Body是用两个CRL ...
- Django框架05 /orm单表操作
Django框架05 /orm单表操作 目录 Django框架05 /orm单表操作 1. orm使用流程 2. orm字段 3. orm参数 4. orm单表简单增/删/改 5. orm单表查询 5 ...
- C#程序安装为windows服务的方式
项目开发中,需要将采集程序以windows服务的形式进行部署,可分为定时采集程序以及监控采集程序. 1.定时采集程序 采用Quartz.net框架实现定时任务,针对该种情形,可采用批处理文件的形式进行 ...