【问题标题】:RequireJS non-AMD filesRequireJS 非 AMD 文件
【发布时间】:2014-05-12 19:45:26
【问题描述】:

我正在尝试将 LeafletJS 与 requireJS 和一些 LeafletJS 插件一起使用。我知道如果您使用的文件不是 AMD 模块,则需要在配置中填充它们。这是否意味着我必须使用 LeafletJS 依赖项填充每个单独的插件?例如:

require.config({
    paths: {
        'leaflet':         'vendor/leaflet/leafletjs',
        'leafletplugin1':         'vendor/leaflet/leafletplugin1',
        'leafletplugin2':         'vendor/leaflet/leafletplugin2'
    },
    shim: {
        'leafletplugin1': {
            deps: 'leaflet'
        },
        'leafletplugin2': {
            deps: 'leaflet'
        }
    }
});

问题是我计划有许多带有许多插件的库,并且这个配置会变得非常长,因为我不仅要填充每个单独的插件,还要为每个插件提供一个路径。有没有更简单的方法来做到这一点?如果我什至可以在一个模块中定义一个仅用于该模块的 require.config,那就太好了,这样我就可以让我的项目更好地组织起来并且不那么混乱。

此外,没有其他方法可以简单地 require(['leafletplugin1'], function(){}); 不填充它,对吗?

编辑:澄清一下,这不一定是 LeafletJS 特定的问题/答案。这只是我正在使用的当前示例。

【问题讨论】:

    标签: javascript requirejs amd


    【解决方案1】:

    选项 1:取决于您的构建过程和..

    • 插头数量
    • 插件的总大小

    会将所有“叶子”插件连接到一个文件中。

    选项 2:将所有插件转换为适当的模块。

    这意味着有一个~/leaf 目录和一个~/leafModule 目录,并让构建过程将每个插件“包装”到一个适当的模块中。

    在类似的情况下,我选择了选项 2。相当简单,并且使我的其余代码更容易处理。

    【讨论】:

    • 让构建过程将它们包装到一个模块中,这是 requireJS 将为您做的事情,还是自己添加到我的 grunt 工作流程中的一些事情?我假设您的意思是手动将代码包装在 define() 中以返回 Leaflet 对象?
    猜你喜欢
    • 1970-01-01
    • 2015-05-18
    • 1970-01-01
    • 1970-01-01
    • 2012-04-14
    • 2013-12-26
    • 1970-01-01
    • 1970-01-01
    • 2017-10-30
    相关资源
    最近更新 更多