Javascript r、 js优化器-使用一些模块和垫片构建一个包罗万象的js
当所有脚本都单独加载时,一切都像一个符咒一样工作。我现在正在尝试优化 然而,因为加载的一些.js是垫片,所以它不工作,控制台中没有JavaScript错误,看起来好像什么都没有执行 testRjs.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": "./
({
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
将导致代码失败。这不是非优化代码的问题