微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

javascript – 如何通过浏览器js控制台触发的require.js重新加载文件

在初始应用程序启动时由require.js加载文本文件(下划线模板):

define(['text!templates/template.html'], function(Template){ ... };

当我现在正在对此文件进行更改并希望重新加载该单个文件而不必重新加载整个页面并重新启动整个应用程序时,这可能吗?

我想从浏览器的javascript控制台触发这个.

用例是通过require.js加载下划线模板的场景,当对其中一个模板文件进行更改时,我可以轻松地将新文件“注入”到正在运行的应用程序,手动触发视图渲染方法并查看更改而不必从一开始就重新加载一切.

谢谢你的想法.

解决方法:

一般来说,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取消定义模块.

我有一个repo说明了整个事情.如果编辑file.html文件并单击“重新加载”按钮,则段落的文本将替换为文件内容.要获得一个函数,您可以从控制台调用,只需将其分配给窗口字段(例如window.reload).

该按钮应该被称为加载/重新加载(因为它执行初始加载和重新加载)但我不打算修复它.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐