我正在开发一个使用 require.js 的网络应用程序。我对应用程序和 requirejs 都很陌生,并且想知道解决我遇到的问题的最佳解决方案是什么。我们一直在 PHP 包含文件中加载带有脚本标签的第三方用户分析/跟踪库。我们不为这些使用 requirejs,因为 php 正在设置一些 js 运行时值。
这是一个这样的块的示例:
<script src="//js.revsci.net/gateway/gw.js?csid=A08723"></script>
<script type="text/javascript">
<?php
global $base_url;
$host = parse_url( $base_url, PHP_URL_HOST );
?>
if( typeof DM_cat != 'undefined' ) {
DM_cat('Track');
DM_tag();
}
</script>
现在我同意了,像这样结合js和php并不理想,但是所有的分析代码都是这样写的,而且还有很多。我没有时间(或知识)以 requirejs 的方式重构它,所以我暂时坚持使用这种结构。现在我被要求将这些第三方脚本设为“异步”或“延迟”。如果可能的话,我更喜欢异步,但两者都是可以接受的解决方案。所以我想改变这个:
<script src="//js.revsci.net/gateway/gw.js?csid=A08723"></script>
对此:
<script src="//js.revsci.net/gateway/gw.js?csid=A08723" defer></script>
我的问题是,如何使用 Require 加载第三方脚本并防止在加载脚本之前执行内联 javascript 块?从我尝试编写的代码中,我不断收到“不匹配的匿名定义()模块”错误。我已经阅读了错误,但我无法理解它。即使我粘贴了一个基本示例,我也会不断收到该错误。例如,我什至无法让这个测试代码工作:
define(["testcode"], function(testcode){
window.foo = "bar";
});
define(["foo"], function(){
alert(window.foo); // "bar"
});
错误信息:
Uncaught Error: Mismatched anonymous define() module: function
(testcode){ window.foo = "bar"; }
我不明白这个错误,谁能帮我指出正确的方向?提前致谢!