第一组:刘聪 w3wp.exe进程消失问题
在前后台分离的情况下我们利用vs调试需要在IIS(因特网信息服务器)与应用程序池相关联的一个进程w3wp.exe附加到进程。然而经常会出现附加进程时找不到配置网站相关的w3wp.exe进程。其实原因是IIS把进程干掉了。Iis默认设置是20分钟没有request进来就会自动回收进程。当我们再次发送新的request时就又会启动该进程。操作方法是在IIS中浏览该网站:
我们也可以在iis应用程序池中设置应用程序池的默认设置中的闲置时间进行控制:
第二组:赵彩凤 键盘控制
之前做计算器时,实现了键盘控制。通过键值,确定按下的键。
使用键盘输入会产生输入抖动,加一个休眠就可以避免。
function sleep(n) {
var start = new Date().getTime();
while (true) if (new Date().getTime() - start > n) break;
}
第三组: JS与DOM编程艺术——JavaScript语法
最近在看《JavaScript与DOM编程艺术》,然后对书中还不是很熟练的地方进行了记录,下面是整理记录。
最好的做法是把<script>标签放在HTML文档最后,</body>标签之前。
JS中,变量与其他语法元素的名字都是区分大小写的,变量名允许包含字母、数字和下划线,但第一个字符不能为数字。
通常用驼峰命名法命名函数名,方法名和对象属性名
可以随意选用引号,但最好是根据字符串所包含的字符来选择。如果字符串包含双引号,就把整个字符串放在单引号里,如果字符串包含单引号,就把整个字符串放在双引号里
如果在某个函数中使用了var,那个变量就将被视为一个局部变量,它只存在于这个函数的上下文中;反之,如果没有使用var,那个变量就将被视为一个全局变量,如果脚本里已经存在一个与之同名的全局变量,这个函数就会改变那个全局变量。
在定义一个函数时,我们一定要把它内部的变量全都明确地声明为局部变量。如果你总是在函数里使用var关键字来定义变量,就能避免任何形式的二义性隐患。
第四组:李俊 JavaScript小技巧
1、使用 === 代替 ==
==(或者!=)做对比的时候会将进行对比的两者转换到同一类型再比较。===(或者!==)则不会,他会将进行对比的两者做类型对比和值对比,相对于 == ,=== 的对比会更加严谨。
[10] == 10 // true
[10] === 10 // false
"10" == 10 // true
"10" === 10 // false
[] == 0 // true
[] === 0 // false
"" == false // true 但是 true == "a" 是false
"" === false // false
2、转换数值的更加的方法
将字符串转换为数字是非常常见的。最简单和最快的(jspref)的方式来实现,将使用+(加)算法。
var one = '1';
var numberOne = +one; // Number 1
你也可以使用-(减号)算法的转换类型并且变成负数值。
var one = '1';
var negativeNumberOne = -one; // Number -1
3、清空一个数组
你定义一个数组,并希望清空它的内容。通常,你会这样做:
var list = [1, 2, 3, 4];
function empty() {
//清空数组
list = [];
}
empty();
但是还有一种更高性能的方法。
你可以使用这些代码:
var list = [1, 2, 3, 4];
function empty() {
//清空数组
list.length = 0;
}
empty();
list =[] 将一个变量指定个引用到那个数组,而其他引用都不受影响。这意味着,对于先前数组的内容的引用仍然保留在内存中,从而导致内存泄漏。
list.length = 0 删除数组内的所有东西,这不需要引用任何其他的东西
然而,如果你有一个copy的数组(A和copy-A),如果你使用list.length = 0 删除其内容,副本也会失去它的内容。
var foo = [1,2,3];
var bar = [1,2,3];
var foo2 = foo;
var bar2 = bar;
foo = [];
bar.length = 0;
console.log(foo, bar, foo2, bar2);
//[] [] [1, 2, 3] []
StackOverflow上的更多详情:difference-between-array-length-0-and-array
4、对数组排序进行"洗牌"(随机排序)
这段代码在这里使用Fisher Yates洗牌算法给一个指定的数组进行洗牌(随机排序)。
function shuffle(arr) {
var i,
j,
temp;
for (i = arr.length - 1; i > 0; i--) {
j = Math.floor(Math.random() * (i + 1));
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
return arr;
};
案例:
var a = [1, 2, 3, 4, 5, 6, 7, 8];
var b = shuffle(a);
console.log(b);
// [2, 7, 8, 6, 5, 3, 1, 4]
5、返回对象的函数能够用于链式操作
当创建面向对象的JavaScript对象的function时,函数返回一个对象将能够让函数可链式的写在一起来执行。
function Person(name) {
this.name = name;
this.sayName = function() {
console.log("Hello my name is: ", this.name);
return this;
};
this.changeName = function(name) {
this.name = name;
return this;
};
}
var person = new Person("John");
person.sayName().changeName("Timmy").sayName();
//Hello my name is: John
//Hello my name is: Timmy
6、字符串安全连接
假设你有一些类型未知的变量,你想将它们连接起来。可以肯定的是,算法操作不会在级联时应用:
var one = 1;
var two = 2;
var three = '3';
var result = ''.concat(one, two, three); //"123"
这样的连接不正是你所期望的。相反,一些串联和相加可能会导致意想不到的结果:
var one = 1;
var two = 2;
var three = '3';
var result = one + two + three; //"33" 而不是 "123"
谈到性能,对join和concat进行比较,他们的执行速度是几乎一样的。你可以在MDN了解更多与concat相关的知识
7、更快的四舍五入
今天的技巧是关于性能。见到过双波浪线"~~"操作符吗?它有时也被称为double NOT运算符。你可以更快的使用它来作为Math.floor()替代品。为什么呢?
单位移~将32位转换输入-(输入+1),因此双位移将输入转换为-(-(输入+1)),这是个趋于0的伟大的工具。对于输入的数字,它将模仿Math.ceil()取负值和Math.floor()取正值。如果执行失败,则返回0,这可能在用来代替Math.floor()失败时返回一个NaN的时候发挥作用。
// 单位移
console.log(~1337) // -1338
// 双位移
console.log(~~47.11) // -> 47
console.log(~~-12.88) // -> -12
console.log(~~1.9999) // -> 1
console.log(~~3) // -> 3
//失败的情况
console.log(~~[]) // -> 0
console.log(~~NaN) // -> 0
console.log(~~null) // -> 0
//大于32位整数则失败
console.log(~~(2147483647 + 1) === (2147483647 + 1)) // -> 0
虽然~~可能有更好的表现,为了可读性,请使用Math.floor()。
8、Node.js:让module在没被require的时候运行
在node里,你可以根据代是运行了require('./something.js')还是node something.js,来告诉你的程序去做两件不同的事情。如果你想与你的一个独立的模块进行交互,这是很有用的。
if (!module.parent) {
// 运行 `node something.js`
app.listen(8088, function() {
console.log('app listening on port 8088');
})
} else {
// 使用 `require('/.something.js')`
module.exports = app;
}
更多信息,请看the documentation for modules
第五组:周倩宇 5个优质jquery分页插件推荐
来源:https://www.w3cschool.cn/jquery/jquery-paging.html
1、Pagination.js
Pagination.js是一款简单实用且功能齐全的jQuery分页插件。该jQuery分页插件提供多种数据源方式,众多的配置参数,回调函数,显示控制等。
2、类似媒体播放器的分页插件
类似媒体播放器的分页插件:一款类似媒体播放器的jQuery分页插件,有点类似于媒体播放器的效果.带有数码翻页,可前后翻页,首页到最后一页。
3、结合CSS3实现的jQuery分页插件
结合CSS3实现的jQuery分页插件:一款结合CSS3实现的非常简洁漂亮的jQuery分页插件,附件里提供了三个效果,代码简洁。
4、jquery列表分页并带左右滚动的效果
jquery列表分页并带左右滚动的效果:当每一页文章条数超过3条就会分一页,并带有索引按钮,点击按钮能左右切换,效果不错而且好用。
5、简单实用的分页插件
简单实用的分页插件:这是一款兼容IE8及以上浏览器,配置简单实用。