javascript - 使用 RequireJS 加载其他地方不需要的文件

标签 javascript requirejs build-process gruntjs dependency-management

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

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

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

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

3 - 然后将这些串联文件放入第一个文件中,这样我就有一个 JS 文件。

我有一个 Less 和 Handlebars 进程,可以搜索每个 Less/CSS/Handlebars 文件并对它们进行排序,我想知道 RequireJS 是否有类似的东西?

下面是我的 RequireJS grunt 流程:

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 列表的构建过程,而是在主核心以正确的顺序优化后搜索文件夹。

谢谢

最佳答案

As a developer we're trying to make it as simple as possible to add a plugin and not edit a JSON file.

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

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

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

关于javascript - 使用 RequireJS 加载其他地方不需要的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19412264/

相关文章:

javascript - 在 React-Native 中制作指南针

javascript - jQuery(element) 是逐个选择每个元素还是一次性选择所有元素?

javascript - 停止将引荐来源网址发送到目的地的链接

vue.js - 与 RequireJS 结合使用时出现“Vue 未定义”问题

javascript - 如何使用浏览器并行加载但仍然使用 RequireJS 保持脚本的顺序

svn - 我可以在团队城市从我的存储库更新之前在团队城市中运行步骤吗?

javascript - 如何防止 iOS4 中右侧弹出面板的水平滚动?

javascript - 通过 requirejs 自动加载模块

ios - 是否可以在 iOS 的同一项目中为两个不同的构建(例如开发和生产)设置两个不同的 URL 模式?

visual-studio - 将 Visual Studio 项目构建到公共(public)目录而不是 bin?