Как перезагрузить файл через 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 (потому что она выполняет начальную загрузку и перезагрузка), но я не собираюсь это исправить.