2014-02-18 3 views
5

Имея всевозможные проблемы с получением Sails для работы с RequireJS, в основном потому, что я не могу найти какой-либо окончательный источник для наилучшего способа сделать это. Есть несколько сообщений, которые обсуждают это, но они старше и все делают по-другому. Было бы очень приятно видеть, что Создатели просвещают сообщество надлежащим образом, чтобы сделать это, учитывая изменения в структуре приложений Sails, процесс компоновщика и т. Д. В последних версиях (.0.9.9,, 0.10)Конфигурация Sails.js + RequireJS

Итак, сначала вопрос будет ... если я планирую использовать подход AMD/RequireJS + Backbone для моего клиентского кода и хочу использовать оптимизатор R.js в grunt для создания моего JS-файла и автоматически разрешить все вложенные зависимости (вместо того, чтобы перечислить их вручную), не следует ли мне создавать приложение с параметром -linker и вручную управлять процессом сборки grunt?

Кроме того, где в структуре каталогов должен быть размещен каталог «vendor», который содержит все зависимые JS-библиотеки, такие как Underscore, jQuery, Backbone и т. Д.?

ответ

0

Для других, имеющих ту же проблему, быстрый, но только частичное исправление отключить инъекции сценария, удалив следующие из layout.ejs:

<!-- SCRIPTS --> 

<!-- SCRIPTS END --> 

Тогда просто разместить прямые ссылки на файл require.js:

<script src="/linker/js/components/requirejs/require.js"></script> 

Я говорю это лишь частичное исправление, потому что GruntFile нужно будет необходимо реализовать require задачу, чтобы правильно конкатенации файлов.

1

Я решил эту проблему:

  1. Установить плагин для grunt-requirejs

  2. написал конфиг для запуска строить в папке /tasks/config/requirejs.js

Пример :

module.exports = function(grunt) { 
    grunt.config.set('requirejs', { 
    dev: { 
     options: { 
      baseUrl: "assets/", 
      name: 'main', 
      optimize: "uglify2",//'none',//"uglify2", 
      //wrap: true, 
      paths: { 
       // Major libraries 
        jquery: '../vendor/jquery', 
        underscore: '../vendor/underscore', 
        backbone: '../vendor/backbone', 
        // Require.js plugins 

       }, 
       removeCombined: true, 
       inlineText: true, 
       useStrict: true, 
       out: "build/main.js", 
       waitSeconds: 200 
      }, 
     } 
    }); 

    grunt.loadNpmTasks('grunt-contrib-requirejs'); 
}; 
  1. добавил в автозагрузку в задачах/регистрация/compileAssets.js

Пример:

module.exports = function (grunt) { 
    grunt.registerTask('compileAssets', [ 
     'clean:dev', 
     'jst:dev', 
     'less:dev', 
     'copy:dev', 
     'coffee:dev', 
     'requirejs:dev' 
    ]); 
}; 

Вы также должны настроить только хрюкать на себя и не бойтесь ничего менять. Во время разработки лучше хранить скрипты в папке «Активы», потому что это удобно.

+0

Я следил за этим руководством, но по какой-то причине мой 'build/main.js' не заполнен должным образом. Он содержит только 'define (" main ", function() {}); ' – danba

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