阻止RequireJScachingNodej上所需的脚本

我正在使用像airbnb的rendr ,即我自己的实现共享客户端和服务器之间的主干代码 ,以使用在客户端上使用相同的骨干模型,视图,集合和模板在服务器上构build完整的HTML。 我的文件/模块被定义为requirejs模块,这样我可以轻松地在客户端上共享它们。 在开发模式中,当我刷新浏览器(不重新启动服务器)时,我想让requirejs从光盘中重新读取/重新加载任何模块,所以我得到我的服务器渲染使用最新的模板和JavaScript来最终为我提供最新的HTML。

当在服务器上使用requirejs和nodejs时, 将下面的参数添加到 urlArgs中的技巧不起作用,即服务器不会从光盘上重新加载/重新获取任何模块

urlArgs: "bust=v2" 

我想知道,如果重新加载/ refetching从磁盘空间requirejs模块,而不重新启动服务器是可能的节点? 具体来说,这对于模板的require-text插件将非常有用。 此外,将重新加载仅限于一组受限制的模块将会很好。

我从来没有这样做,但快速search显示几个选项 ,包括aututomating服务器重新启动:

  • nodemon
  • 节点主pipe

你也可以做一些类似的创意:

  • delete require.cache['/home/shimin/test2.js']

几乎可以肯定地清除RequireJS在caching中的版本,迫使它重新加载它,尽pipe我怀疑节点只是再次提供旧文件。

最后,也许看看热重新加载 ,这似乎是无需重新启动服务器( 例如 )的caching。

和OP一样,我正在寻找一种方法,使RequireJS的开发更容易,更快捷。 就我而言,我在节点中使用RequireJS和grunt watch任务,并且希望能够强制RequireJS始终从文件系统获取最新版本的模块。 幸好,我find了一个非常简单的解决scheme !

我不得不略微修改Henning Kvinnesland的build议,增加超时时间,但现在它像一个魅力:

 var requirejs = require('requirejs'); // Set up requirejs.config here... // Disable caching of modules requirejs.onResourceLoad = function(context, map) { setTimeout(function() { requirejs.undef(map.name); }, 1); };