Как перезагрузить файл через require.JS запускается из браузеров JS console
наличие текстового файла (шаблоны подчеркивания), загруженного require.js на начальном запуске приложения:
define(['text!templates/template.html'], function(Template){ ... };
когда я сейчас делаю изменения в этом файле и хочу потребовать перезагрузить этот файл без необходимости перезагрузки всей страницы и перезапустить все приложение, возможно ли это?
Я хотел бы вызвать это из консоли javascript в браузере.
Use case-это сценарий с шаблонами подчеркивания, загруженными через require.Яш, при внесении изменений в один из этих файлов шаблонов я мог бы легко "вставить" новый файл в запущенное приложение, запустить метод визуализации представлений вручную и увидеть изменения без необходимости начинать с самого начала, перезагружая все.
Спасибо за ваши идеи.
1 ответов
RequireJS не предназначен для перезагрузки модулей, вообще говоря.
однако, если вы тщательно разработаете свое приложение, вы можете получить RequireJS для перезагрузки некоторых модулей. Вот пример:
<body>
<p id="contents">Nothing loaded.</p>
<button id="reload">Reload</button>
<script>
require.config({
baseUrl: "./js",
paths: {
jquery: '//cdnjs.cloudflare.com/ajax/libs/jquery/2.0.3/jquery.min',
}
});
require(["jquery"], function ($) {
var $contents = $("#contents");
function reload() {
require.undef("text!../file.html");
require(["text!../file.html"], function (file) {
$contents.empty();
$contents.append(file);
});
}
$("#reload").click(reload);
});
</script>
</body>
ключ, чтобы позвонить require.undef
определения модуля до перегрузки.
у меня есть РЕПО иллюстрируя все это дело. Если вы отредактируете файл.html-файл и нажмите кнопку "Перезагрузить", текст абзаца будет заменить содержимое файла. Чтобы получить функцию, которую вы можете вызвать из консоли, просто назначьте ее полю window
(например,window.reload
).
кнопка действительно должна называться Load / Reload (потому что она выполняет начальную загрузку и перезагрузка), но я не собираюсь это исправить.