Javascript r、 js优化器-使用一些模块和垫片构建一个包罗万象的js

Javascript r、 js优化器-使用一些模块和垫片构建一个包罗万象的js,javascript,requirejs,rjs,Javascript,Requirejs,Rjs,当所有脚本都单独加载时,一切都像一个符咒一样工作。我现在正在尝试优化 然而,因为加载的一些.js是垫片,所以它不工作,控制台中没有JavaScript错误,看起来好像什么都没有执行 testRjs.js文件 ({ baseUrl: "./dist/", paths: { "requireLib": "./require", "app": "./app", "main": "./main", "jquery": "./

当所有脚本都单独加载时,一切都像一个符咒一样工作。我现在正在尝试优化

然而,因为加载的一些.js是垫片,所以它不工作,控制台中没有JavaScript错误,看起来好像什么都没有执行

testRjs.js文件

({
    baseUrl: "./dist/",
    paths: {
        "requireLib": "./require",
        "app": "./app",
        "main": "./main",
        "jquery": "./jquery-2.1.4",
        "jqbsace": "./jqbsace",
        "datatables": "./jquery.dataTables",
        "moment": "./moment",
        "momentTZ": "./moment-timezone",
        "momentDF": "./moment-duration-format",
        "datarangepicker": "./daterangepicker/daterangepicker",
        "highstock": "./highstock",
        "bootstrap": "./bootstrap",
        "aceconcat": "./aceconcat",
        "jstz": "./jstz-1.0.4.min",
        "shared": "./controllers/shared1",
        // Controller modules
        "casnodes/chronicnodes": "./controllers/casnodes/chronicnodes"
    },
    shim: {
        "datarangepicker": ["jquery"],
        "highstock": ["jquery"],
        "jstz": {
            exports: "jstz"
        },
        "bootstrap": ["jquery"],
        "aceconcat": ["bootstrap"],
        "momentTZ": ["moment"],
        "momentDF": ["moment"]
    },
    name: "casnodes/chronicnodes",
    out: "chronicnodesTest.js",
    wrapShim: true,
    include: ["requireLib"]
})
计时节点模块:

define(["jquery", "datatables", "highstock", "moment", "datarangepicker", "aceconcat"], function($) {

    $('#allChronicView').DataTable({
        ajax: {
            url: ajaxUrl
        },
        dom: 'Bfrtip',
        buttons: [{
                extend: 'excel',
                text: 'Export (Excel)'
            },

            {
                extend: 'csv',
                text: 'Export (CSV)'
            },

            {
                extend: 'pdf',
                text: 'Export (PDF)'
            }
        ],
        'columns': [{
            'type': 'num',
            'data': 'NodeId',
            render: function(data, type, row) {
                return '<a id="http://shield?id=' + data + '" onclick="return false;"> ' + data + ' </a>'
            }
        }, {
            'data': 'Name'
        }, {
            'data': 'Alias'
        }, {
            'type': 'string'
        }, {
            'type': 'string'
        }, {
            'type': 'date',
            'data': 'DateQuery'
        }, {
            'type': 'num',
            'data': 'Condition'
        }, {
            'type': 'num',
            'data': 'TimeSecLastCondition'
        }, {
            'type': 'num',
            'data': 'Occur'
        }, ],
        "columnDefs": [{
            "targets": 0,
            "visible": false
        }, {
            // The `data` parameter refers to the data for the cell (defined by the
            // `data` option, which defaults to the column being worked with, in
            // this case `data: 0`.
            "render": function(data, type, row) {
                var mDate = moment(data);
                return mDate.tz(jstz.determine().name()).format('M/D/YYYY HH:mm:ss z');
            },
            "targets": 5
        }, {
            "render": function(data, type, row) {
                var str = row["Name"].substring(3, 5);
                return str;
            },
            "targets": 3
        }, {
            "render": function(data, type, row) {
                var str = row["Name"].substring(5, 9);
                return str;
            },
            "targets": 4
        }]
    });
});
<script>
        var ajaxUrl = '@Url.Content(url)';
</script>
<script src="~/Scripts/chronicnodesTest.js"></script>
define([“jquery”、“datatables”、“highstock”、“moment”、“datarangepicker”、“aceconcat”]),函数($){
$('#allChronicView')。数据表({
阿贾克斯:{
url:ajaxUrl
},
dom:'Bfrtip',
按钮:[{
扩展:“excel”,
文本:“导出(Excel)”
},
{
扩展:“csv”,
文本:“导出(CSV)”
},
{
扩展:“pdf”,
文本:'导出(PDF)'
}
],
“列”:[{
'type':'num',
“数据”:“节点ID”,
呈现:函数(数据、类型、行){
返回“”+数据+“”
}
}, {
“数据”:“名称”
}, {
“数据”:“别名”
}, {
“类型”:“字符串”
}, {
“类型”:“字符串”
}, {
“类型”:“日期”,
“数据”:“日期查询”
}, {
'type':'num',
“数据”:“条件”
}, {
'type':'num',
“数据”:“TimeSecLastCondition”
}, {
'type':'num',
“数据”:“发生”
}, ],
“columnDefs”:[{
“目标”:0,
“可见”:错误
}, {
//`data`参数指的是单元格的数据(由
//`data`选项,默认为正在使用的列,在
//本例为“数据:0”。
“渲染”:函数(数据、类型、行){
var mDate=力矩(数据);
返回mDate.tz(jstz.determinate().name()).format('M/D/YYYY HH:mm:ss z');
},
“目标”:5
}, {
“渲染”:函数(数据、类型、行){
var str=行[“名称”]。子字符串(3,5);
返回str;
},
“目标”:3
}, {
“渲染”:函数(数据、类型、行){
var str=行[“名称”]。子字符串(5,9);
返回str;
},
“目标”:4
}]
});
});
像这样的建筑:

节点r.js-o testRjs.js

在HTML中包含如下内容:

define(["jquery", "datatables", "highstock", "moment", "datarangepicker", "aceconcat"], function($) {

    $('#allChronicView').DataTable({
        ajax: {
            url: ajaxUrl
        },
        dom: 'Bfrtip',
        buttons: [{
                extend: 'excel',
                text: 'Export (Excel)'
            },

            {
                extend: 'csv',
                text: 'Export (CSV)'
            },

            {
                extend: 'pdf',
                text: 'Export (PDF)'
            }
        ],
        'columns': [{
            'type': 'num',
            'data': 'NodeId',
            render: function(data, type, row) {
                return '<a id="http://shield?id=' + data + '" onclick="return false;"> ' + data + ' </a>'
            }
        }, {
            'data': 'Name'
        }, {
            'data': 'Alias'
        }, {
            'type': 'string'
        }, {
            'type': 'string'
        }, {
            'type': 'date',
            'data': 'DateQuery'
        }, {
            'type': 'num',
            'data': 'Condition'
        }, {
            'type': 'num',
            'data': 'TimeSecLastCondition'
        }, {
            'type': 'num',
            'data': 'Occur'
        }, ],
        "columnDefs": [{
            "targets": 0,
            "visible": false
        }, {
            // The `data` parameter refers to the data for the cell (defined by the
            // `data` option, which defaults to the column being worked with, in
            // this case `data: 0`.
            "render": function(data, type, row) {
                var mDate = moment(data);
                return mDate.tz(jstz.determine().name()).format('M/D/YYYY HH:mm:ss z');
            },
            "targets": 5
        }, {
            "render": function(data, type, row) {
                var str = row["Name"].substring(3, 5);
                return str;
            },
            "targets": 3
        }, {
            "render": function(data, type, row) {
                var str = row["Name"].substring(5, 9);
                return str;
            },
            "targets": 4
        }]
    });
});
<script>
        var ajaxUrl = '@Url.Content(url)';
</script>
<script src="~/Scripts/chronicnodesTest.js"></script>

var ajaxUrl='@Url.Content(Url)';
另一方面,chronicnodes.js文件没有任何东西都嵌套在$(document).ready()中,这可能是个问题吗


非常感谢您的帮助。

您应该检查
垫片的使用情况

例如
时刻时区
调用
定义
,如您所见:

因此,它不需要一个
垫片
。将垫片与调用
define
的代码一起使用会导致未定义的行为。有时它没有效果,但有时会导致问题。因此,对于
时刻时区
不必要的
垫片
在优化之前不会导致问题,但这并不特别令人惊讶之后会导致问题

您应该检查的另一件事是,是否有任何使用
shim
的模块需要有
exports
选项。您使用的一些模块显然不需要
exports
。例如,Bootstrap本身安装了一个jQuery插件,而不是在全局空间中声明符号。但是,其他模块不需要如果没有
wrapshem:true
,您可能需要
exports
(我不熟悉您使用的所有模块,所以我不确定。)如果没有
wrapshem:true
,您可以避免缺少
exports
,但是如果启用此选项,缺少
exports
将导致代码失败。这不是非优化代码的问题