Я пишу jquery плагин. Поскольку плагин содержит много кода, я решил разделить код на несколько файлов и использовать require.js. Я пытаюсь добиться двух вещей:использовать r.js для оптимизации файлов require.js
- Возможность запуска моей тестовой страницы с использованием require.js с разделенной версией плагина и тем самым сможет отлаживать код.
- Возможность использования оптимизатора require.js (называемого r.js) и создания одного оптимизированного (объединенного и мини-файла) из этих нескольких файлов плагина.
Мой index.html содержит:
<script data-main="js/site" src="js/vendor/require.js"></script>
My Js/site.js содержит:
require([
'jquery',
....
....
'main' //<---- main plugin file
], function($) {
$(function() {
$('#elem').photosGrid();
});
});
И мой файл main.js содержит:
define([
'photos-grid' //<---- Class that initialized and build the plugin
], function(PhotosGrid) {
jQuery.fn.photosGrid = function(options) {
var photosGrid = new PhotosGrid(this, options);
this.data('photosGrid', photosGrid);
return this;
};
return jQuery;
});
В для настройки r.js, я добавил файл build.js:
({
baseUrl: '.',
name: "main",
out: "main-built.js"
})
Когда я запускаю свой index.html, мой плагин отлично работает. Но когда я бегу node r.js
я получаю следующее сообщение об ошибке:
Error: Mismatched anonymous define() module
Когда я определяю main.js с именем:
define('module-name', ['photos-grid'], function(PhotosGrid) { .....
node r.js
не возвращает ошибку, но нет выхода выйти. Кроме того, index.html не загружает зависимости main.js ('photos-grid'), и в результате сайт не работает.
Что я делаю неправильно? Как правильно использовать r.js?
Вы уверены, что вы прошли '-o' флаг? (согласно http://requirejs.org/docs/optimization.html#basics) Вы не упомянули об этом, так кто знает? – kryger
@kryger: Ты прав, чувак! Благодаря! Создайте ответ для этого, пожалуйста. – Naor