Require.JS是适合这项工作的工具吗?

时间:2015-02-05 12:03:26

标签: javascript object module requirejs

好的我对JavaScript来说相对较新,可能真的大约需要4-5个月的时间。但是我希望改进我的JavaScript以匹配我一般编码的方式。

我通常是一名PHP开发人员,并使用Composer加载我的类来使用。 Require.JS允许我这样做吗?例如,我称之为模块的快速摘录是:

var tabs = function(paramOps) {
    var _this = this;
    _this.opts = {
        header: {
            target: 'tabbedHeader'
        },
        content: [{
            id: '',
            title: 'Default Title',
            descr: 'Data is yummy'
        }]
    }
    $.extend(true, _this.opts, paramOpts);
    _this.render = function() {
        // YOU GET THE IDEA
    }
    return _this;
}

然后我会使用:

加载我的模块
var tabs = new tabs();
tabs.render(paramOpts); // paramOpts is defined elsewhere

好的,如果没有应用程序JS文件的野兽,我可以使用Require.JS将它们作为模块加载吗?

1 个答案:

答案 0 :(得分:0)

  

好的,如果没有应用程序JS文件的野兽,我可以使用Require.JS将它们作为模块加载吗?

是。假设您在tabs.js中定义了它。那你就做了:

var Tabs = require("./tabs.js");

(我不是需要专家,所以我不知道为什么需要领先的./,但是it's shown in this example linked from the Require website,所以......)

但它可以进一步很多。例如,您可以在define中使用tabs.js为其命名,而不是文件名,例如:

tabs.js

define("tabs", function() {
    // ...create your Tabs function

    return Tabs;
});

然后使用它:

var Tabs = require("tabs");

或者,如果您在应用中的其他组件中使用它,可能是ui.js,并且您想在define中使用ui.js,那么:

ui.js

define("ui", ["tabs"], function(Tabs) {
    // Use Tabs here

    // Return whatever it is the 'ui' module defines
});

设置依赖项:RequireJS知道加载ui必须涉及加载tabs,所以它也是如此,然后将ui的依赖项作为{{1}的参数提供回调。


附注:最好坚持约定,如果你要将一个函数作为构造函数调用(例如,通过define),它应该是最初的上限:new,不是Tabs