首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >r.js:理解需求的r.js优化器

r.js:理解需求的r.js优化器
EN

Stack Overflow用户
提问于 2013-12-09 11:34:58
回答 1查看 287关注 0票数 0

我试图弄清楚使用来自require.js的require.js来生成一个build.js文件是否是一个好主意,它只在生产中加载一个文件。但我想知道,在我的例子中,这是否是一个好主意,因为它似乎只是简单地将所有东西加载到DOM中,消耗了大量内存。也许我搞错了。

看看我使用require.js实现的基于主干的视图之一。我知道,r.js将接受这个文件并对其进行优化,并将其放入最终的build.js文件中,所有其他视图、模型和集合都将以相同的方式定义。

代码语言:javascript
复制
define(function (require) {
  "use strict";

  var $                   = require('jquery'),
      _                   = require('underscore'),
      Backbone            = require('backbone'),
      tpl                 = require('text!tpl/start.html'),
      Mustache            = require('mustache'),
      template            = Mustache.compile(tpl);

  return Backbone.View.extend({
    initialize: function () {
    },

    render: function () {
      this.$el.html(template());
      return this;
    },

    events: {
      'click #submit': "start"
    },

    start: function (event) {
       // stuff to do ...
    }
  });
});

我想最终的build.js只是简单地接受上面的代码并将它们连接到其中,对吗?因此,这意味着当我更新index.html加载require.js然后更新build.js文件时,它将简单地将所有视图、模型和集合加载到DOM中。不会占用太多的内存,因为我不需要从一开始就加载所有的东西。当它已经通过build.js文件加载时调用require('path/ to /my/view')有意义吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-09 11:53:17

对于您的应用程序来说,将所有模块优化到一个文件中确实是没有意义的。r.js支持这种场景。您需要做的是使用modules选项,并根据需要定义尽可能多的输出文件。这方面的一个一般例子可以是:

代码语言:javascript
复制
modules: [
    {
        name: 'main', 
        exclude: [ "viewA", "viewB" ],
    },
    {
        name: 'viewA',
        exclude: ['core']
    },
    {
        name: 'viewB',
        exclude: ['core']
    }
]

上面的设置假设要优化的源有名为mainviewAviewB的模块。它将创建3个优化的捆绑包:一个core,包含在任何情况下都要加载的所有核心模块;viewA,它代表在特定情况下将要加载的一组模块;viewB,表示在其他情况下将要加载的一组模块。

如何设置modules参数取决于应用程序的具体情况。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20469611

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档