【问题标题】:Using RequireJS to load files that are not required else where使用 RequireJS 加载其他地方不需要的文件
【发布时间】:2013-10-16 19:39:25
【问题描述】:

我目前正在构建一个需要某种脚本依赖加载器的大型网络应用程序。我开始使用 RequireJS,发现它非常适合将我的代码优化成一个以正确的依赖顺序加载的大 JS 文件。

但是我有插件 - 这些插件在任何地方都不需要,因为我的网络应用程序不知道文件夹中有哪些插件。对于 grunt-contrib-requirejs 流程,我想要的是:

1 - 获取我所有的核心文件并根据它们的依赖关系将其加载到一个文件中。

2 - 然后我希望它在我的两组插件文件夹中运行,并根据它们的依赖关系按顺序加载它们。

3 - 然后将这些连接的文件放入第一个文件中,这样我就有了一个 JS 文件。

我有一个 Less 和 Handlebars 进程,它搜索每个 Less/CSS/Handlebars 文件并将它们整理出来,我想知道 RequireJS 是否有类似的东西?

下面是我对 RequireJS 的抱怨过程:

requirejs: {
  compile: {
    options: {
      name: "core/js/app",
      baseUrl: "src",
      mainConfigFile: "./config.js",
      out: "./build/adapt/js/adapt.min.js"
    }
  }
}

这是我的 config.js 文件:

'use strict';

require.config({
deps: ['core/js/app'],
paths: {
    jquery: 'core/js/libraries/jquery.v2',
    underscore: 'core/js/libraries/underscore',
    backbone: 'core/js/libraries/backbone',
    modernizr: 'core/js/libraries/modernizr',
    handlebars: 'core/js/libraries/handlebars',
    imageReady: 'core/js/libraries/imageReady',
    inview: 'core/js/libraries/inview',
    scrollTo: 'core/js/libraries/scrollTo',
    coreJS: 'core/js',
    components: 'components'
},
shim: {
    jquery: [],
    backbone: {
        deps: ['core/js/libraries/underscore', 'core/js/libraries/jquery.v2'],
        exports: 'Backbone'
    },
    underscore: {
        exports: '_'
    },
    handlebars: {
        exports: 'Handlebars'
    }
}
});

我承认我对 RequireJS 还很陌生,所以最好能得到一些关于解决方案的建议。但就像我上面所说的 - 我需要一个不通过 JSON 列表的构建过程,而是在以正确的顺序优化主核心后搜索文件夹。

谢谢

【问题讨论】:

  • 我不确定你在问什么。您的插件与加载 Backbone、Underscore 等的方式有何不同?你能解释一下为什么你希望 Grunt 搜索你的文件夹而不是 JSON 文件吗?另外你打算如何知道插件应该连接的顺序?
  • 该项目需要能够搜索插件文件夹并通过这些进行某种需求优化器,因为开发人员可以将插件添加到文件夹中 - 运行构建过程并期望文件将其添加到主 JS 文件中。我们可以创建一个 JSON 文件,这很好 - 但我希望有另一种方法可以做到这一点?作为一名开发人员,我们试图让添加插件而不是编辑 JSON 文件变得尽可能简单。但也许这是我们需要做的事情?

标签: javascript requirejs build-process gruntjs dependency-management


【解决方案1】:

作为开发人员,我们正努力让添加 插件,而不是编辑 JSON 文件。

这是文档解决的问题,而不是自动化。向 require 配置添加一行比编写 Grunt 任务自动执行相同操作要容易然后维护该文件。即使它是自动完成的,您将如何处理用户定义的配置?是否会设置一些样板,然后将其与某个目录中自动生成的 .js 文件列表连接起来?您仍然必须使用 run grunt generaterequireconf 或类似的方式记录此内容。

只需记录添加jQuery插件的过程:下载,安装到指定目录,然后在require config中添加主JS文件的路径,这里是路径。

我还想说的是看看 Bower,看看你是否可以让人们使用它来管理第三方制作的插件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-11-16
    • 1970-01-01
    • 2018-10-11
    • 2011-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多