【问题标题】:requirejs path mapping for prefixed script filesrequirejs 前缀脚本文件的路径映射
【发布时间】:2013-06-04 16:56:07
【问题描述】:

尝试用谷歌搜索我的内心内容,并在 requirejs 上搜索 API 文档,但无济于事。

是否可以根据我将使用的脚本文件/模块的前缀指定 requirejs 使用的路径前缀?

我想在所有对“kendo.xxxModuleNamexxx.min.js”的调用前加上“kendo/kend.xxxModuleNamexxx.min.js”——为了让我的解决方案保持整洁并且没有一个巨大的脚本文件夹:)

结构:

  • 索引
    • 脚本
    • jquery.min.js
    • isotope.min.js
    • knockout.min.js
    • someothermodules.js
    • 需要js.js
    • main.js
    • 剑道
      • kendo.web.min.js
      • kendo.combobox.min.js
      • kendo.fx.min.js

仅供参考 - 所有 kendo 脚本都与 AMD 兼容,并报告它们的模块 ID 作为前缀:kendo.moduleName.....等。

更新:不幸的是,由于我的目录中有许多其他脚本,我仍然要求我的 baseUrl 是“/scripts”文件夹。 (剑道脚本的数量如此之多,这就是为什么我要为这些前缀脚本创建一个单独的基本文件夹)

提前致谢:)

詹姆斯

【问题讨论】:

  • 你试过 requirejs.config({ baseUrl: '[Your base url]', })?
  • 是的,抱歉我的问题可能不清楚,我仍然希望我的 baseUrl 映射到“脚本”目录...我会更新问题。不过谢谢-还有其他想法吗? :)
  • 您是否尝试将文件名替换为返回新路径的函数?
  • @Antoine 我将在哪里替换文件名/我需要为所有模块 ID 这样做吗?如果可能的话,我宁愿有一个更通用的解决方案,这样我就不需要维护单个文件/文件夹了
  • 是的,它需要对所有文件执行此操作。另一个想法:用这样的东西替换整个剑道包含部分:(function() { .... })(),所以它将在运行时执行。在里面你可以读取包含所有文件的目录,创建一个哈希,然后将它返回给 requirejs。我不确定它是否清楚,如果你不能把你当前的 requirejs 代码,我会用我的意思编辑它。

标签: javascript requirejs amd


【解决方案1】:

您可以编写自己的规范化插件来协调资源名称并加载“kendo”脚本。不幸的是,我不知道是否有办法加载没有前缀的插件。所以你需要在所有依赖项前加上kendo!

//see https://requirejs.org/docs/plugins.html

define('kendo', (require, exports, module) => {
    return {
        normalize: function (name, normalize) {
            return 'kendo/' + name
        },
        load: function (name, req, onload, config) {           
            req([name], function (value) {
                onload(value);
            });
        }
    }
})

用法:

require(['kendo!a.js', 'kendo!b.js'], (a, b) => { return ... }

【讨论】:

    猜你喜欢
    • 2015-01-30
    • 1970-01-01
    • 1970-01-01
    • 2012-05-20
    • 2012-01-21
    • 1970-01-01
    • 2014-05-27
    • 2011-10-11
    • 1970-01-01
    相关资源
    最近更新 更多