2013-12-09 3 views
0

im пытается выяснить, есть ли у него хорошая идея использовать r.js из require.js для создания файла build.js из моих файлов javascript, чтобы загружать только один файл на производство. Но им интересно, если это хорошая идея в моем случае, так как кажется, что она просто загружает абсолютно все в DOM, используя большую память. Возможно, я понял это неправильно.r.js: Понимать оптимизатор r.js requirejs

Посмотрите на один из моих оснований на основе основы, реализованный с использованием require.js. Как я знаю, r.js возьмет этот файл и оптимизирует его и поместит в окончательный файл build.js со всеми остальными видами, моделями и коллекциями, определенными одинаково.

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. Не занимает слишком много памяти, так как мне не нужно все, чтобы загружаться с самого начала. Имеет ли смысл называть require ('путь/to/my/view'), когда он уже загружен через файл build.js?

+0

По умолчанию (если вы не установите для параметра 'findNestedDependencies' значение true), r.js включает только модули, которые в любом случае будут' require'd при запуске. Единственное различие заключается в том, что эти ресурсы будут загружены в один HTTP-запрос, а не один запрос на модуль. – kryger

ответ

2

Возможно, для вашего приложения может не иметь смысла оптимизировать все модули в один файл. r.js поддерживает такой сценарий. Что вам нужно сделать, это использовать опцию modules и определить столько выходных файлов, сколько вам нужно. Родовое иллюстрацией этого может быть:

modules: [ 
    { 
     name: 'main', 
     exclude: [ "viewA", "viewB" ], 
    }, 
    { 
     name: 'viewA', 
     exclude: ['core'] 
    }, 
    { 
     name: 'viewB', 
     exclude: ['core'] 
    } 
] 

Установка выше, предполагает, что источник должен быть оптимизирован имеет модули с именем main, viewA и viewB. Он создаст 3 оптимизированных пакета: core, который будет содержать все основные модули, которые будут загружены в любом случае, viewA, который представляет группу модулей, подлежащих загрузке в обстоятельствах так или иначе, и viewB, который представляет группу модулей, которые должны быть загружен в других обстоятельствах.

Как вы должны настроить свой параметр modules, зависит от особенностей вашего приложения.

+0

не знал об этом. что дает мне больше «силы» в том, как оптимизировать мой файл. Благодарю. – NovumCoder

Смежные вопросы