繁体   English   中英

.js文件中仅包含require([“”,”“,...,function(){}])

[英].js file with just a require([“ ”,“ ”,…, function(){}]) inside

我的问题是关于“ require”语句JavaScript的使用。 我开始使用JS和Dojo,遇到以下问题:

我正在开发一个网站插件,该插件的主要Java类通过主要的Web应用程序API进行引用。 .js

public String getScript() {
    return "SampleSearchChoiceListPlugin.js";
}

这个SampleSearchChoiceListPlugin.js只是一个require,带有一个路径数组和一个覆盖其内部两个函数的函数。 (未列出功能代码,因为我认为这无关紧要)。 它具有以下内容:

require(["dojo/_base/declare",
         "dojo/_base/lang",
         "ecm/widget/SinglePropertyEditorFactory",
         "sampleSearchChoiceListPluginDojo/SearchChoicePane"
         ],function(declare, lang, SinglePropertyEditorFactory, SearchChoicePane) {     
    /* Use this function to add any global JavaScript methods your plug-in requires.*/
    SinglePropertyEditorFactory.prototype.createSinglePropertyEditor = function(kwArgs) {
         },
    SinglePropertyEditorFactory.prototype._createSearchChoiceListEditor = function(baseConstraints, kwArgs) {

    };
});

由于Firebug会识别脚本,因此将SampleSearchChoiceListPlugin.js加载到目标Web应用程序中。 我在ProImageLayoutPlugin.js上设置了一些断点,并检查了该JavaScript是否正在被任何可能触发此JavaScript的动作运行或触发。

我是JS开发的新手,如果有人可以向我解释这些“需求”脚本的工作原理,或将我引到一个解释该问题的链接,那将很棒 我读到这可能与requirejs有关,但不确定...谢谢

require不是常规JavaScript的一部分,而是AMD模块的一部分。

从特定的语法,我猜您正在查看RequireJS

在Dojo中, require是AMD加载程序。 您可以将其视为导入模块的一种方式,类似于Java和Python中的import语句(等)。

  • 第一个参数是字符串数组,这是您要加载的模块的路径。
  • 第二个参数是函数回调,它命名您在模块数组中指定的每个模块。 通常,如果第一个数组具有n元素,则此函数应采用n参数。

在函数回调内部,可以使用模块。 请记住,它们是作用域的,因此在此功能之外,无法访问这些模块。

这是从require语句运行的代码示例,该语句创建一个警报“ Hello,world!”的按钮。 单击时:

require([
    'dijit/form/Button', 
    'dojo/on', 
    'dojo/dom', 
    'dojo/dom-construct'
], function(Button, on, dom, domConstruct) {
    var btn = new Button({ label: 'Hello!' });
    on(btn, 'click', function(e) {
        alert('Hello, world!');
    });
    domConstruct.place(dom.byId('someNodeID'), btn.domNode);
});

如果要运行插件,则需要将其转换为模块。 幸运的是,这很容易用define来完成,它与require相似,不同的是它用于创建模块(认为是“类”),而不仅仅是为代码块定义必需的组件。 这是DojoToolkit参考指南中的示例:

define([
    "dojo/_base/declare",
    "dojo/dom",
    "app/dateFormatter"
], function(declare, dom, dateFormatter) {
    return declare(null, {
        showDate: function(id, date){
            dom.byId(id).innerHTML = dateFormatter.format(date);
        }
    });
});

这定义了具有公共showDate函数的模块。 您可以类似地构造插件,并在加载模块中调用它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM