Requirejs定义模块

模块可以很好的定义作用域来避免全局名称空间污染,它可以显示的定义出函数间的依赖关系,而不需要引用全局变量。

RequireJS可以加载多个不同的模块,虽然加载的顺序不一样,但是能保证依赖的顺序是正确的。

1.  当模块中只有键值对时,可通过如下方式定义。

define({
    name : "beautiful",
    color: "yellow",
    size: "3M"});

2. 当模块中没有依赖,只有函数时,模块的格式如下

define(function() {
return {           
        name : "beautiful",
    color: "yellow",
    size: "3M"
    }
});

3. 当模块中有依赖函数时,先定义出依赖函数的路径,依赖的函数的别名。

define(["./cart", "./inventory"], function(cart, inventory) {    
    return {                
        name : "beautiful",
    color: "yellow",
    size: "3M"
    addToCart: function() {
        inventory.decrement(this);
        cart.add(this);
    }
        }
    }
);
4. 将模块定义为函数
define(["my/cart", "my/inventory"], function(cart, inventory) {        
    return function(title) {            
        return title ? (window.title = title) :
                   inventory.storeName + ‘ ‘ + cart.name;
        }
    }
);
通过上面的例子也许你已经注意到了,模块中的注册的函数或对象都是在return中返回的。如果你自定义了一些函数应该模块通过return返回,否则模块是无法找到你定义的函数的。
时间: 2024-11-05 22:47:01

Requirejs定义模块的相关文章

requirejs 定义模块中含有prototype

因为我对requirejs不熟悉,不清楚如何定义带有prototype的模块, 在看了:https://gist.github.com/jonnyreeves/2474026 的demo之后,就明白了,呦西. person.js的注释中提到requireJS simply requires us to return  a single value (function / Object) which represents this definition. In our case, we will

关于js模板技术,使用requireJS定义模块(一)

前段时间查看了extjs的源代码,大概就看了20多分钟,我看了个大概,曾经推测Extjs动态创建组件其实也是使用了标签模板,如今看过源码之后证实了我的猜测,extjs拥有自己的一套模块加载器,所以能够自由的编写自定义组件等更多强大的功能.       现在我也想仿写一套extjs这么强大工具,那么我就需要考虑组件模块化的问题,其次就是模板的编写,样式的自由扩展和模块的自由定义等,不过还好,js这么强大的语言周边的工具总是很多,模块化的组件例如requireJS和seaJS都是非常不错的选择,se

[DikeJS]关于js模板技术,使用requireJS定义模块(七)

最近由于需求改变,我又改写了Template模板方法,此次的改动增加了XXX:{XXX}的标签替换和独立的{XXX}替换,执行顺序为XXX={XXX} -> XXX:{XXX} -> {XXX},代码如下: /**  * @Author Dike.Li  * @Date 2015/8/14  * @class Template  * @public  * @Description Template Label Replace  */ define(function (require) {   

[DikeJS]关于js模板技术,使用requireJS定义模块(四)

前几次对模板技术进行了分析和编写,发现不是很合理,现在发上新的改良代码: /**  * @Author Dike.Li  * @Date 2015/7/30  * @class Template  * @public  * @Description Template Label Replace  */ define(function (require) {     /**      * 提取模板中 XXX='{XXX}' || XXX="{XXX}"      * @type {Reg

关于js模板技术,使用requireJS定义模块(二)

昨天编写了第一版的模板标签替换代码,发现有很多不足的地方,不足内容如下: 1:正则无法匹配模板中存在的空格问题 2:无法删除属性项中不存在的标签 根据昨天的不足,经过修正后,新的模板替换方法如下: /**  * @Author Dike.Li  * @Date 2015/7/30  * @Description Template Label Replace  */ define(function (require, exports, module) {     /**      * 要求模板中的

requirejs定义的模块返回的永远是单例对象,可以借助javascript中的类解决模块间的相互干扰问题

RequireJS中定义一个模块,总的来说有2种方式:简单键值对和函数依赖式. 1.简单键值对:一个模块仅含有值对,没有任何依赖 define({ color: "black", size: 1, method1: function() {}, method2: function() {} }); 这种写法虽然简单,但是有很大的局限性,仅仅是定义了该模块的返回值,不能做一些额外的初始化工作. 通过下面下面这种方式来定义模块,灵活性更高,我们可以在函数体内写一些模块初始化的代码. def

收藏文章 写的很好 可惜有些还是看看不懂额。。。RequireJS进阶:模块的定义与加载

文 RequireJS进阶:模块的定义与加载 javascript requirejs 两仪 2014年12月01日发布 推荐 4 推荐 收藏 15 收藏,6.9k 浏览 概述 模块不同于传统的脚本文件,它良好地定义了一个作用域来避免全局名称空间污染.它可以显式地列出其依赖关系,并以函数(定义此模块的那个函数)参数的形式将这些依赖进行注入,而无需引用全局变量.RequireJS的模块是模块模式的一个扩展,其好处是无需全局地引用其他模块. RequireJS的模块语法允许它尽快地加载多个模块,虽然

requireJs的模块加载和依赖机制的分析和简单实现。

requireJs的文件加载和依赖管理确实非常好用,相信大家都有这个体会.在此之前,我们的html文件头部总是要有一长串的script标签来引入js文件,并且还必须非常注意script标签的先后顺序. 这篇文章对requireJs的核心功能做了简单实现,希望能帮助大家更好理解requireJs. 下面的思路是我参考了requireJs 0.0.7版本实现的.之前有尝试理解当前版本的requireJs的源码,不过最后发现,这特么不是短时间能搞的定的. 无奈之下找了github上先前较早的版本,那时

跟我一起学extjs5(11--自定义模块的设计)

跟我一起学extjs5(11--自定义模块的设计) 从这一节开始我们来设计并完成一个自定义模块.我们先来确定一个独立的模块的所能定义的一些模块信息.以下信息只是我自己在开发过程中想到或用到的,希望有新的想法的或者有建议的跟贴回复. 一个独立模块包含以下信息: 1.模块的基本信息 模块ID号:一个数字的ID号,可以根据此ID号的顺序将相同分组的模块放在一块. 模块分组:模块分到哪个组里,比如说业务模块1.业务模块2.系统设置.系统管理等. 模块标识:系统中唯一的模块的标识,一般这个标识等同于数据库