- 浏览: 2620492 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (1286)
- js-oop (2)
- js-window (10)
- js-event (19)
- js-string (37)
- js-array (27)
- js-page (4)
- js-dom (62)
- js-lang (8)
- js-number (7)
- js-platform (3)
- js-object (15)
- js-element (3)
- js-browser (7)
- js-url (6)
- js-date (10)
- css基础 (48)
- css优化 (15)
- html基础 (17)
- html标签 (19)
- js基础 (117)
- js-兼容性差异 (33)
- js引擎 (3)
- js性能 (14)
- json (6)
- jQuery源码浅析 (43)
- web mobile开发资料 (78)
- js跨域 (2)
- html5 (74)
- html5-canvas (7)
- css3 (53)
- 浏览器 (5)
- api设计学 (3)
- js-加载 (3)
- linux (37)
- 架构师 (1)
- php (2)
- self开发的脚本库--凤凰 (2)
- web应用名词 (6)
- javascript新特性翻译 (8)
- ajax (6)
- jQuery动画效果 (7)
- prototype的解读 (13)
- 优秀插件翻译 (1)
- css解决方案 (26)
- 数据库 (2)
- english daily (59)
- 浏览器内核探究 (1)
- jQuery插件介绍 (9)
- jquery基础篇 (26)
- chrome浏览器问题整理 (14)
- js选择器那些事 (3)
- 前端框架 (26)
- Firefox私有属性 (11)
- webkit私有属性集合 (17)
- 书籍推荐 (21)
- 数据结构 (1)
- 网站建设相关 (7)
- 好文翻译 (2)
- 个人作品 (3)
- kissy的解读 (4)
- css-layout(布局研究) (5)
- less研究 (1)
- YUI探究 (1)
- hash探究 (1)
- js动画 (7)
- 前端面试题 (37)
- css书写规范 (1)
- js模板引擎 (6)
- js模块化 (19)
- 编写高质量代码 (3)
- 性能探究--应用协议 (2)
- 前端图像处理 (19)
- Mac OS相关 (21)
- 正则表达式 (11)
- 离线应用相关 (0)
- 前端工具 (65)
- nodeJS (55)
- jquery优化篇 (2)
- 设计模式探究系列 (3)
- windows7 (2)
- IE10 (10)
- 微博开放平台探究 (2)
- 常用web服务接口 (1)
- 数据存储相关 (8)
- 零时文件 (2)
- jQuery Mobile (16)
- backbone (15)
- underscore (22)
- sass (11)
- android (3)
- phonegap (10)
- IE私有 (11)
- qwrap (8)
- git (14)
- chrome extensions (5)
- freemarker (11)
- angularJS (3)
- seo (2)
- markdown (3)
- css动画 (4)
- 安卓开发 (2)
- React (7)
- 活动页技术 (1)
- 网络安全 (3)
- grunt (7)
- Lo-Dash (3)
- 前端国际化 (4)
- 版本控制 (2)
- 盒模型 (4)
- 微信开发 (1)
- Mock数据工具 (1)
- sails (1)
- vim (1)
- js-color (1)
- iOS 基础 (43)
最新评论
-
jertom:
<div id="showInfo" ...
addEventListener等事件监听的参数细谈 -
乌托邦国王:
引用[u][/u]
css3动画属性系列之transform细讲移动translate -
hvang1988:
能提供附件下载吗,找不到js库,google封了访问不了
Syntaxhighlighter---代码高亮插件介绍 -
sscsacdsadcsd:
我的天 那到底是为什么function是object我看und ...
typeof func ==='function'的疑惑 -
wkjiangwk:
试了,没用,你们从不去测试。
介绍一下x-webkit-speech -------实现语音输入
前面介绍了一下AMD相关的东西,这篇我们来看看CMD相关的。
CMD ------- Common Module Definition
在CMD规范里面,一个模块就是一个Javascript文件。代码书写格式如下:
define(factory);
- define是全局函数,来定义模块
- 仅接收一个factory参数,可以是函数,对象,字符串等类型
1、factory为对象、字符串等非函数类型时候,表示模块的接口是该对象、字符串等值
define({ "foo":"bar" });
通过字符串定义模版模块
define('I am a template.My name is {{name}}.');
2、factory为函数时候,表示模块的构造方法。
执行该方法,可以得到模块向外提供的接口。默认3个参数:require 、 exports 、 module
define(function(require,exports,module){ //... });
require
--------- 是一个方法,用来获取其他模块提供的接口。
define(function(require){ var a = require('./a'); a.doSomething; });
require接受模块标识作为唯一参数,模块标识书写需要遵循一些规范。
require.async
---------- 可以用来异步加载模块,并在加载完成后执行指定的回调。
define(function(require,exports,module){ //异步加载b require.async('./b',function(b){ b.doSomething; }); //异步加载多个模块 require.async(['./c','./d'],function(c,d){ // ........ }) });
require.resolve
--------- 使用模块系统内部的路径解析机制来返回模块的路径。该函数不会加载模块,只返回解析后的绝对路径。
define(function(require,exports){ console.log(require.resolve('./b')); //../b.js });
require.cache
---------- 可以查看模块系统加载过的所有模块。
某些情况下,需要重新加载某个模块,可以得到该模块的url,然后通过delete require.cache[url] 来将其信息删除。
exports
-------- 是一个对象,用来向外提供模块接口。
define(function(require,exports){ exports.foo = "bar"; exports.doSomething = function(){ ............... } });
除了给exports对象增加成员,还可以以return的方式直接向外提供接口。
define(function(require,exports,module){ return { fool: "bar", doSomething:function(){ ............. } }; });
当然如果只是返回一个对象,可以直接:
define({ foo: "bar", doSomething:function(){} });
注释:在factory里面给exports重新赋值是没有意义的,因为exports仅仅是module.exports的一个引用,直接给exports重新赋值并不会修改module.exports的值。
看下面这个错误的例子:
define(function(require,exports,module){ exports = { foo: "bar", doSomething:function(){} } });
正确的应该是:
define(function(require,exports,module){ module.exports = { foo: "bar", doSomething:function(){} } });
module
module 是一个对象,存储了与当前模块关联的一些属性和方法。
- module.id
---------- 模块标识
define(function(require,exports,module){ console.log(require(module.id) === exports); // true });
- module.uri
------------ 根据模块系统的路径解析规则得到的模块绝对路径
- module.dependencies
------------ 是一个数组,标识当前模块的依赖列表
- module.parent
------------ 指向初始化调用当前模块的模块。可以得到模块初始化的callstack
- module.factory
------------ 指向define(factory)中的factory参数
------------ 当前模块的状态,是一个数值
- module.exports
------------ 当前模块对外提供的接口
传给factory构造方法的exports参数是module.exports对象的一个引用。
比如当模块的接口是某一个类的实例时候,需要通过module.exports来实现
define(function(require,exports,module){ console.log(module.exports === exports); // true module.exports = new SomeClass(); console.log(module.exports === exports); //false });
- module.require
在module环境中运行require,一般用于插件开发
扩展阅读:
评论
2 楼
zhangyaochun
2012-12-04
key232323 写道
当然如果只是返回一个对象,可以直接:
Js代码
define(function(){
foo: "bar",
doSomething:function(){}
});
这个代码是不是语法错误?
应该是
define(function(){
return {
foo: "bar",
doSomething:function(){}
};
});
吧?
Js代码
define(function(){
foo: "bar",
doSomething:function(){}
});
这个代码是不是语法错误?
应该是
define(function(){
return {
foo: "bar",
doSomething:function(){}
};
});
吧?
恩,笔误了,其实就是定义一个对象
define({
foo: "bar",
doSomething:function(){}
});
1 楼
key232323
2012-11-20
当然如果只是返回一个对象,可以直接:
Js代码
define(function(){
foo: "bar",
doSomething:function(){}
});
这个代码是不是语法错误?
应该是
define(function(){
return {
foo: "bar",
doSomething:function(){}
};
});
吧?
Js代码
define(function(){
foo: "bar",
doSomething:function(){}
});
这个代码是不是语法错误?
应该是
define(function(){
return {
foo: "bar",
doSomething:function(){}
};
});
吧?
发表评论
-
require相关
2013-05-02 18:00 0require 是AMD规范下的 ... -
element.onafterscriptexecute
2013-01-05 11:19 1542场景: 在<script>标签的代码执行 ... -
element.onbeforescriptexecute
2013-01-05 11:12 2015场景: 当script标签要执行前触发,当时如果是动 ... -
document.currentScript
2013-01-05 10:51 3479场景: 如何得到正在执行的script元素? ... -
CMD与AMD的区别
2012-10-21 20:06 8096本文来自玉伯在zhihu上的一个回答,个人整理学习! ... -
谈谈requireJS与seaJS的异同
2012-10-21 19:35 2301主要内容来自seajs的issues,个人整理学习用! ... -
谈谈getAttribute来获取节点的src值
2012-10-10 17:29 2843此代码片段来源与seajs 首先关于hasA ... -
判断是否是css文件
2012-10-10 15:04 1363此代码片段来自seajs var IS_CS ... -
seajs相关探究如何包裹基础库
2012-10-10 12:24 1669问题: 在使用seajs的时候,我们其实也需要使用一 ... -
seajs相关探究模块寻址
2012-10-09 13:04 1565在前面介绍了一下seajs加载模块对于的api http:// ... -
seajs相关探究模块加载api
2012-10-08 18:02 2083require --------- ... -
seajs源码相关之dirname
2012-10-08 17:35 1668其实很多寻址需求里面都会有这样的api设计 举例: ... -
seajs源码相关之模块文件路径名相关的api
2012-10-08 17:08 1332判断文件路径相关,来源于seajs的源码 fun ... -
seajs相关探究开篇
2012-10-08 16:50 1580前言: 各种关于seajs的介绍就不具体介绍了,如果你 ... -
模块化之何为模块系统
2012-10-03 20:41 1353本文来自 lifesinger 在seajs里面的一篇issu ... -
模块化之require书写约定
2012-10-03 19:11 1428书写模块代码的时候我们有一些约定: ... -
Module.STATUS的意义
2012-10-03 16:39 1635在CMD规范那篇里面简单地提了一下module对象下有一个属性 ... -
翻译一下Modules/Wrappings规范
2012-09-30 23:45 1770全文来自common.js的wiki里面的关于Modules/ ... -
模块化之AMD
2012-09-30 22:14 3216前言: 即将又是在北京的一个十一,突然想起了什么,去 ... -
模块化相关的整理
2012-05-15 14:02 01、模块化: 软件总体结构体现模块化思想 ...
相关推荐
本文将根据“模块化的js.pdf”文档内容,深入探讨模块化的JavaScript,包括其开发之痛、模块化简介、实现原理以及具体案例分析。 一.JavaScript开发之痛 在传统的JavaScript开发中,开发者常常面临两个主要问题:...
JS模块化标准技术.JAVASCRIPT的几种模块化技术 作为前端重要组成部分的javascript语言,其面向对象...所以要实现代码的模块化,需要一些标准:AMD,CMD 针对2种模块化也有现成的js模块化库SeaJs,require.js 今天来个教程
引入模块的方式SeaJS的使用举例(自定义模块)1、创建项目结构在工程文件中新建如下目录:| modules2、下载SeaJS,并导入官网: https://s
### 浅析AMD、CMD与CommonJS规范——JavaScript模块化加载学习心得总结 #### 一、引言 在现代Web开发中,随着项目规模的不断扩大和技术复杂度的提高,JavaScript模块化成为了一种非常重要的编程实践。通过将复杂的...
引入模块的方式SeaJS的使用举例(自定义模块)1、创建项目结构在工程文件中新建如下目录:| modules2、下载SeaJS,并导入官网: https://s
JavaScript模块化开发库之SeaJS 在Web开发中,JavaScript代码的组织和管理是一个重要的问题。随着项目的复杂性增加,代码的模块化变得至关重要。SeaJS便是一个专注于JavaScript模块化开发的库,它提供了一种在...
CMD(Common Module Definition)是一种流行于国内的模块化规范,主要由Sea.js 推动。本话题将深入探讨如何将现有的JavaScript库改写为符合CMD规范的模块,以便更好地在项目中利用和管理这些库。 CMD规范的核心思想...
除了解决命名冲突和依赖管理,使用 Sea.js 进行模块化开发还可以带来很多好处: 模块的版本管理。通过别名等配置,配合构建工具,可以比较轻松地实现模块的版本管理。 提高可维护性。模块化可以让每个文件的职责...
模块化前端UI框架是现代Web开发中的重要工具,它提供了高效、可复用和易于维护的界面组件。这里我们以“layui”为例,它是一个流行的开源JavaScript框架,以其优雅的模块化设计和丰富的UI组件而受到开发者欢迎。解压...
在Windows系统中,命令行接口(Command Prompt,通常简称为CMD)是执行系统级任务和自动化脚本的一种方式。CMD.ec模块的引入,让易语言程序可以执行系统命令、读取命令输出、管理文件和目录等,极大地扩展了易语言的...
CMD 是一种广泛应用于前端开发的模块化规范,与 AMD(Asynchronous Module Definition)相对,CMD 强调的是同步加载和依赖的就近书写,而 gulp-fangfis-combo 正是为了简化这一过程,提高开发效率而设计的。...
还可以结合其他易语言模块,实现自动化脚本,进行系统维护和优化。 需要注意的是,使用CMD模块时,应确保对命令的使用有充分理解,避免执行可能对系统造成影响的危险命令。同时,由于CMD命令行的权限较高,开发者...
目前主流的模块化实现方式包括CommonJS、AMD、ES6以及CMD规范。 1. **CommonJS**:最初是为服务器端JavaScript设计的一种模块化标准,它允许在文件中定义模块,并通过`require`函数来导入其他模块。尽管CommonJS...
前端模块化是现代Web开发中不可或缺的一部分,它允许开发者将复杂的应用程序分解为多个独立的模块,从而提高代码的可读性、可维护性和复用性。模块化的核心思想是将一个大型程序划分为若干个模块,每个模块都有自己...
《模块化系列》彻底理清 AMD,CommonJS,CMD,UMD,ES6
模块化开发及AMD、CMD、Require.js、sea.js、common.js、ES6的对比;模块化开发就是封装细节,提供使用接口,彼此之间互不影响,每个模块都是实现某一特定的功能。模块化开发的基础就是函数
### 模块化与组件化的区别 随着软件项目的规模逐渐增大,如何有效地组织代码成为了一个重要的议题。在软件工程领域,模块化与组件化是两种常见的解决方案,它们各自有着独特的特性和应用场景。本文将深入探讨模块化...
- 对于`pagination.css`,CMD规范没有直接涉及CSS模块化,但我们可以利用CSS预处理器(如Sass、Less)或者CSS模块系统(如CSS Modules)来实现更模块化的CSS。如果没有这些工具,可以将CSS文件保持原样,但在使用时...
易语言是一种基于中文编程的计算机程序设计语言,旨在降低...这将有助于开发者在没有图形界面的情况下执行系统操作,或者在自动化脚本中集成CMD命令,提高工作效率。对于易语言的进阶学习,掌握这种技术是非常有用的。
js模块系统介绍的ppt,简要介绍js现有的几个模块规范,包括commonJS模块规范,amd,cmd,es6模块系统。并详细对比seaJS和requireJS的异同