从RequireJS的r.js优化中排除任意文件并将其加载为异步

时间:2013-02-25 10:02:02

标签: javascript web-applications requirejs r.js

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

r.js优化也将我的所有模板都包含在主应用程序JS文件中,这对于应用程序启动时或之后很快就会需要的模板也很有用。对于可能永远不会被看到的视图,或者可能在应用程序生命周期中稍后看到的视图,它不是那么好,如果这些模板根据需要加载异步,那就更好了。

所以我的问题是,有没有办法随意排除我的模板被包含在整体应用程序JS文件中并由RequireJS加载异步,或者这是不支持的?如果不支持在async中加载模板的方法是什么?

我正在使用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
    });
});

1 个答案:

答案 0 :(得分:1)

我认为Require JS模块可以解决您的问题。我没有试过延迟加载模板,但你绝对可以将组件(视图,模型,模板)分离为Require JS模块并延迟加载它们。

Ben Nadel关于此主题的博客文章对此主题非常透彻。 http://www.bennadel.com/blog/2404-Compiling-Optimizing-A-Subset-Of-A-RequireJS-Application.htm