如何使用require JS为数据表配置多个源?

时间:2015-12-09 20:57:41

标签: javascript requirejs

我正在尝试使用此data table。 但是需要多个JS资源,我不确定如何为RequireJS配置两者?我试图创建一个垫片,但桌子没有渲染。

以下是所需的两个文件:

 jquery.dataTables.min.js

 dataTables.bootstrap.min.js 

到目前为止,我使用以下配置进行部分工作和渲染:

require.config({

    paths: {
        jquery: 'https://code.jquery.com/jquery-1.11.3.min',
        dataTable: 'https://cdn.datatables.net/1.10.10/js/jquery.dataTables.min',

          // How do I create a shim for this?
        dataTableBootstrap: 'https://cdn.datatables.net/1.10.10/js/dataTables.bootstrap.min'

    }
});

在此实例化:

require(["jquery", "dataTable"], function ($) {

    $(function () {

        $('#example').dataTable( {
            "pagingType": "simple_numbers",
            scrollY:        '50vh',
            scrollCollapse: true,
            "scrollX": true,
            "bPaginate": true,
            "bFilter": false,
            "bInfo": true
        } );

});

1 个答案:

答案 0 :(得分:1)

你不需要为任何一个垫片。它们被识别为requirejs模块并管理它们自己的依赖项而不是您。它们都有universal module definition格式。他们都创建自己作为require模块与define()并尝试获得他们的依赖。这个依赖项已命名,它的名称是在paths requirejs配置中定义的路径或名称。

现在从这些库中我可以找到他们需要的模块名称。

dataTable boostrap需要2个依赖["jquery","datatables.net"]。 jquery已在您的paths配置中很好地定义,但datatables.net无法找到,因为您为其定义了不同的名称dataTable

这意味着您需要更改dataTable

datatables.net路径
datatables.net: 'https://cdn.datatables.net/1.10.10/js/jquery.dataTables.min',

这样,您需要定义/要求作为依赖项jquerydataTableBootstrap

define(["jquery", "dataTableBootstrap"], function ($) {
    // code here
}

这应该解决问题,但我没有测试它。

至于垫片。它仅适用于非requirejs(非AMD)depdencenies,因为您需要自己指定它们的依赖关系。 AMD模块改为管理他们的依赖。