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!
优化模块时,stubbingtext!
插件将导致RequireJS失败。 -
对于尚未优化的模块,RequireJS会提示
text!
加载模块。
除非采取特殊措施, r.js
自动包含整个text!
当它发现它在一个模块包的依赖关系之中时。
因此,要特别排除文本模块,请使用excludeShallow
选项。 你的新命令行/ bat文件看起来像这样:
node r.js -o name=Main excludeShallow=text out=main-master-built-text-path.js
- 如何连接到“主机:端口”,但没有使用浏览器,只是节点JS / Javascript?
- express(4.0)定制中间件在路由器的两个实例上运行,即使它只声明为一个
- Express.js和passport.js,但不能获得/login
- 如何检测Angular2中Date对象的变化?
- 在Meteor中pipe理asynchronouscallback
- asynchronous等待或承诺不返回stream事件
- WebSocket连接到'wss:// localhost:44300 / Home / websocketcon'失败:WebSocket握手期间出错:意外的响应代码:404
- Node.js服务器“404找不到”消息到404.html页面
- Babel / Mocha:摩卡在全球安装,但describe()没有定义