从RequireJS'中排除任意文件;s r.js优化并异步加载

Exclude arbitrary files from RequireJS's r.js optimisation and load them async

本文关键字:优化 js 加载 异步 任意 RequireJS 排除 文件      更新时间:2023-09-26

我已经很好地实现了RequireJS,以及一个基于Grunt的构建过程,该过程通过r.js将JS应用程序优化为一个文件,也很好地工作。我的所有应用程序文件都连接到一个文件中,以实现高效的生产部署。

r.js优化还将我的所有模板也包含在主应用程序JS文件中,这对于应用程序启动后或启动后不久需要的模板来说也很好。对于那些可能永远看不到的视图,或者可能在应用程序生命周期中很久以后才看到的视图来说,这并不太好,如果这些模板根据需要异步加载会更好。

所以我的问题是,有没有一种方法可以任意地将我的模板排除在单片应用程序JS文件中,并由RequireJS异步加载,或者不支持这种方法?如果不支持,有什么方法可以在异步中加载模板?

我使用的是tpl文本模板插件和Backbone.Marionette。我的模板使用情况目前看起来有点像这样:

define(function (require) {
    var Backbone = require("backbone");
    var tpl = require("tpl!./some-view-template.tpl");
    return Backbone.Marionette.ItemView.extend({
        template: tpl
    });
});

我认为RequireJS模块将解决您的问题。我还没有尝试过只加载模板,但您可以将组件(视图、模型、模板(分离到RequireJS模块中并进行延迟加载。

Ben Nadel关于这个话题的博客文章对这个话题非常深入。http://www.bennadel.com/blog/2404-Compiling-Optimizing-A-Subset-Of-A-RequireJS-Application.htm