BrD*_*aHa 12 javascript jquery datatables requirejs
我正在尝试在我正在编写的插件中加载datatables javascript库.问题是我在加载外部资源时遇到冲突,因为当我调用require时,数据表与某些内容冲突.
<!-- 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>
Run Code Online (Sandbox Code Playgroud)
这是错误消息:
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
Run Code Online (Sandbox Code Playgroud)
由于这是一个插件,我有一些限制我正在尝试解决,例如无法在开头调用require.config()来指定资源的路径.我看到有人在这篇博客中使用了这个define调用
define('resource', ['http://cdn.ajax.blah']);
,
但它看起来并不像那样使用,因为其他每个例子都有一个函数作为第二个参数.
Lou*_*uis 12
问题中使用的方法不起作用,因为DataTables是AMD感知的.如果它检测到有一个AMD风格的加载器(RequireJS是),那么它将自己定义为一个模块.但是,加载AMD模块无效<script>,因此出现错误消息.
forum/admin/footer应该定义模块以便需要DataTables:
define([...,
'//cdnjs.cloudflare.com/ajax/libs/datatables/1.9.4/jquery.dataTables.min.js'],
function (...) {
});
Run Code Online (Sandbox Code Playgroud)
(不需要与DataTables模块对应的参数,因为它是一个jQuery插件.)
关于在已配置RequireJS的站点中集成此插件的更广泛问题的一些附加说明:
require.config可以多次调用以添加配置.但是,如果插件和主代码之间不需要协调,则可能认为这是不可接受的.
RequireJS有一个上下文的概念.该文档讨论了它加载多个版本,但也许它可以有效地适应允许特定于插件的配置.
你刚试过一个简单的事情:
require(['//cdnjs.cloudflare.com/ajax/libs/datatables/1.9.4/jquery.dataTables.min.js']);
Run Code Online (Sandbox Code Playgroud)
毫无疑问,它适用于本地文件.
| 归档时间: |
|
| 查看次数: |
26993 次 |
| 最近记录: |