RequireJS优化和文本插件

我正在使用RequireJS优化器来优化也使用文本插件的模块。 为了没有文字! 插件一遍又一遍地加载每个优化的模块,我这样做

node r.js -o stubModules=text name=Main out=main-master-built.js 

其中的作品,部分产生以下

 define("text",{load:function(e){throw new Error("Dynamic load not allowed: "+e)}}) define("text!f.htm",[],function(){return"<h3>Hello World</h3>\r\n<h4>Bam</h4>"}) 

不幸的是,如上所示,我不能再使用“正常”的文本插件。 上面的错误抛出存根使我无法添加文本! 调用一个未优化的依赖列表。

有没有办法解决? 有没有什么select,我可以把,比如说,改变这些text引用飞行到texto ,然后做类似的事情

 define("texto",{load:function(e){throw new Error("Dynamic load not allowed: "+e)}}) define("texto!f.htm",[],function(){return"<h3>Hello World</h3>\r\n<h4>Bam</h4>"}) 

或者一些其他的select,将优化与文本依赖关系模块,而不是也杀死我的能力,继续dynamic使用它?

这是交易。 如果一切都通过text!加载text! 已经使用r.js进行了优化,那么所有的文本都被包含在r.js的输出中,并且可以对插件进行存根。

但是,如果你想有使用text!的能力text! 加载还没有通过优化过程的text! ,那么你必须有text! 插件在运行时可用。 在这种情况下,你不能存根,否则RequireJS将无法加载你没有优化的文本片断,因为不会有text! 用于RequireJS的插件。

在包含由text!加载的模块的应用程序中text! 已被优化和模块加载的text! 那还没有被优化,下面会发生:

  • 对于已经被优化的模块,RequireJS会find一个模块名称的define调用(因为这是r.js一部分)。 例如, define("text!foo", [...], function(...) 。在这种情况下,RequireJS将不会尝试使用text!插件来加载这个模块。 (这必须是真实的,否则在需要使用任何使用text!优化模块时,stubbing text!插件将导致RequireJS失败。

  • 对于尚未优化的模块,RequireJS会提示text! 加载模块。

除非采取特殊措施, r.js自动包含整个text! 当它发现它在一个模块包的依赖关系之中时。

因此,要特别排除文本模块,请使用excludeShallow选项。 你的新命令行/ bat文件看起来像这样:

 node r.js -o name=Main excludeShallow=text out=main-master-built-text-path.js