【问题标题】:Redefining a RequireJS module -- is it possible?重新定义一个 RequireJS 模块——有可能吗?
【发布时间】:2012-06-02 23:23:30
【问题描述】:

基本上,我访问的一个页面使用RequireJS。我想对这个页面进行调整,所以我去了一个用户脚本的路线。在查看客户端代码时,我看到有一个这样定义的模块:

define("settings", [], function() {
    return {
    SETTINGA: "100",
    SETTINGB: "200",
    etc.
    }
})

我想将我自己的项目添加到设置数组中,并更改一些设置,而不必在我的用户脚本中重新定义模块(使用更改)然后删除/读取它。是否可以只对这个模块进行调整?


附:我正在使用 Script Injection 技术让我的用户脚本与原始页面中的其他 javascript 进行交互。

此外,在 Javascript 控制台中执行 require("settings") 会返回一个对象(不是数组),因此我不能执行 require("settings")[0]require("settings").push(...) 之类的操作,但是我可以通过执行 require("settings").SETTINGA 来访问设置。所以,我不知道如何添加/重新定义设置,因为它不是一个数组?

【问题讨论】:

    标签: javascript google-chrome requirejs userscripts


    【解决方案1】:

    使用这个:

    require('settings').new_property = 'new value';
    

    【讨论】:

    • 谢谢!在网上浏览了更复杂的解决方案之后,很高兴看到这样一个简单的解决方案。我现在正在使用这种方法来排除我被测组件的内部依赖关系。
    【解决方案2】:

    您无法检索或添加设置到“设置数组”的原因是您一开始没有创建数组。 {foo:bar} 是一个对象字面量,而不是一个数组字面量 ([foo,bar])。

    【讨论】:

      猜你喜欢
      • 2011-12-15
      • 1970-01-01
      • 1970-01-01
      • 2014-03-15
      • 2014-10-05
      • 1970-01-01
      • 2013-08-01
      • 2014-11-02
      • 1970-01-01
      相关资源
      最近更新 更多