Встраивание текста require.js! используя Grunt
Я экспериментировал с Grunt и Require JS сегодня днем. Я большой поклонник text
модуль и использовать его, чтобы ввести в мои шаблоны. В не основанных на Grunt проектах я использовал inlineText
а также stubModules
Требуются параметры JS, чтобы встроить файлы шаблона, и это прекрасно работает. Однако у меня проблемы с тем, чтобы заставить это работать с Грантом.
Требовать Конфиг
require.config({
paths: {
// Using Bower for dependency management
text: '../components/requirejs-text/text'
}
});
использование
define(['text!template.html'], function (html) {
// Do stuff with html
});
Gruntfile.js
requirejs: {
dist: {
options: {
baseUrl: 'app/scripts',
optimize: 'none',
preserveLicenseComments: false,
useStrict: true,
wrap: true,
inlineText: true,
stubModules: ['text']
}
}
}
После запуска grunt
Я получаю различные ошибки в консоли:
- Файл не найден в
/dist/components/requirejs-text/text.js
Load timeout for modules: text!template.html_unnormalized2
Два вопроса тогда:
- Кажется, он не встраивается (а затем не заглушает)
text.js
код - Кажется, это не
template.html
файл
Есть идеи, почему это не работает?
1 ответ
Вы видите ошибку, потому что вам нужно указать r.js
где text
модуль.
Вы можете сделать это, добавив конфигурацию путей:
requirejs: {
dist: {
options: {
baseUrl: 'app/scripts',
optimize: 'none',
preserveLicenseComments: false,
useStrict: true,
wrap: true,
inlineText: true,
stubModules: ['text'],
paths: {
'text': 'libs/text' // relative to baseUrl
}
}
}
}
Тогда вам нужно скачать text.js
модуль в соответствующий каталог.
Но почему твой require.config
не работает?
Поскольку r.js
Необходимо оценить конфигурацию в какой-то момент. Вы не упомянули в вопросе, где ваш require.config
, но в случае, если вы хотите оценить это, вам нужно указать, где находится r.js
(см. https://github.com/jrburke/r.js/blob/master/build/example.build.js#L35):
requirejs: {
dist: {
options: {
baseUrl: 'app/scripts',
optimize: 'none',
preserveLicenseComments: false,
useStrict: true,
wrap: true,
inlineText: true,
stubModules: ['text'],
mainConfigFile: '../config.js' // here is your require.config
// Optionally you can use paths to override the configuration
paths: {
'text': 'libs/text' // relative to baseUrl
}
}
}
}