Javascript Require.JS是该作业的正确工具吗?

Javascript Require.JS是该作业的正确工具吗?,javascript,object,module,requirejs,Javascript,Object,Module,Requirejs,好的,我对JavaScript比较陌生,大概有4-5个月的涉猎时间。然而,我想改进我的JavaScript,使之与我通常的编码方式相匹配 我通常是一名PHP开发人员,使用Composer在我的类中加载要使用的内容。Require.JS允许我这样做吗?例如,我称之为模块的一个快速片段是: var tabs = function(paramOps) { var _this = this; _this.opts = { header: { tar

好的,我对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
好吧,如果没有beast的应用程序JS文件,我是否能够使用Require.JS将它们作为模块加载

好吧,如果没有beast的应用程序JS文件,我是否能够使用Require.JS将它们作为模块加载

对。假设您在
tabs.js
中定义了它。然后你会做:

var Tabs = require("./tabs.js");
(我不是需求专家,所以我不知道为什么需要领先的
/
,但是,所以…)

但它可以走得更远。例如,您可以在
tabs.js
中使用
define
为其指定一个解析名称,而不是文件名,例如:

tabs.js

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

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

    // Return whatever it is the 'ui' module defines
});
然后使用它:

var Tabs = require("tabs");
或者,如果您正在应用程序的其他组件中使用它,可能是
ui.js
,并且您想在
ui.js
中使用
define
,那么:

ui.js

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

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

    // Return whatever it is the 'ui' module defines
});
这就建立了一个依赖项:RequireJS知道加载
ui
必须涉及加载
选项卡
,它也是这样做的,然后提供
ui
及其依赖项作为
define
回调的参数



旁注:最好遵守约定,如果您要将函数作为构造函数调用(例如,通过
new
),则应首先对其进行封顶:
选项卡
,而不是
选项卡

对不起!我只是习惯于格式化我的标记!使用“立即编辑”
var tabs=new tabs()
是一个非常棘手的例子,您可能想要
var t=newtabs()或其他内容(例如,名称不同)。谢谢!我通常会用PHP来做这件事,但是由于缺乏OOP JavaScript的经验,我不确定最好的方法是什么。所以在你的例子中,我是否能够像以前一样访问Tabs.render()??这对我来说是最好的方法吗?@JustSteveKing:您从
require
获得的
选项卡是对您从
define
返回的对象的引用,我添加了更多示例。@JustSteveKing:不用担心。我不是专家,所以一定要仔细阅读文档和示例。上面的一些可能需要调用
requirejs.config
来设置。