我正在编写一个插件,尝试加载datatables JavaScript库。问题是,在加载外部资源时,我遇到了冲突,因为当我调用require时,datatables与某些内容发生了冲突。
<!-- DataTables -->
<script type="text/javascript" charset="utf8" src="//cdnjs.cloudflare.com/ajax/libs/datatables/1.9.4/jquery.dataTables.min.js"></script>
...
<script type="text/javascript">
require(['forum/admin/footer']); <-- crashes here, line 281
</script>
这是错误信息:
Uncaught Error: Mismatched anonymous define() module: function (h){var j=function(e){function o(a,b){var c=j.defaults.columns,d=a.aoColumns.length,c=h.extend({},j.models.oColumn,c,{sSortingClass:a.oClasses.sSortable,sSortingClassJUI:a.oClasses.sSor...<omitted>...ch require.js:8
B require.js:8
M require.js:15
d require.js:26
requirejs require.js:31
(anonymous function) (index):281
由于这是一个插件,我有一些限制需要解决,例如无法在开头调用 require.config() 来指定资源路径。我看到有人使用了 define
函数,像这样:
define('resource', ['http://cdn.ajax.blah']);
在这篇博客中,
但它似乎不能以这种方式使用,因为其他所有示例的第二个参数都是一个函数。
define
等。第二个不起作用,因为DataTables的开发人员决定版本1.10-dev将调用define("datatables", ...)
。我的答案是根据最后发布的版本编写的,该版本不会这样做。结果是从1.10开始,您必须通过名称“datatables”请求DataTables,并设置路径以查找实际文件。之前的版本不需要这样做。 - Louis