一、css js 壓縮工具
- JavaScript Minifier
- JSMIni
- JSCompress
- Minifier
- Gulp.js
- Uglifyjs
- Grunt
- Koala
- Prepros
- Ajax Minifier
- Smaller
- Ultra Minifier
- Require JS
- Online JavaScript/CSS Compressor
- Minify
二以故、javascript和jquery修改a標(biāo)簽的href屬性
document.getElementById("myId").setAttribute("href","www.xxx.com");
document.getElementById("myId").href = "www.xxx.com";
$("#myId").attr("href","www.xxx.com");
三簇捍、[理解HTTP/304響應(yīng)(HTTP原理中的緩存機(jī)制)]
(http://blog.csdn.net/soonfly/article/details/50953814)
四鞍陨、react 生命周期
實(shí)例化
首次實(shí)例化
getDefaultProps
getInitialState
componentWillMount
render
componentDidMount
實(shí)例化完成后的更新
getInitialState
componentWillMount
render
componentDidMount
存在期
組件已存在時(shí)的狀態(tài)改變
componentWillReceiveProps
shouldComponentUpdate
componentWillUpdate
render
componentDidUpdate
銷毀&清理期
componentWillUnmount
說明
生命周期共提供了10個(gè)不同的API洪燥。
1.getDefaultProps
作用于組件類霉祸,只調(diào)用一次轻姿,返回對(duì)象用于設(shè)置默認(rèn)的props犁珠,對(duì)于引用值逻炊,會(huì)在實(shí)例中共享。
2.getInitialState
作用于組件的實(shí)例犁享,在實(shí)例創(chuàng)建時(shí)調(diào)用一次余素,用于初始化每個(gè)實(shí)例的state,此時(shí)可以訪問this.props炊昆。
3.componentWillMount
在完成首次渲染之前調(diào)用桨吊,此時(shí)仍可以修改組件的state。
4.render
必選的方法凤巨,創(chuàng)建虛擬DOM视乐,該方法具有特殊的規(guī)則:
只能通過this.props和this.state訪問數(shù)據(jù)
可以返回null、false或任何React組件
只能出現(xiàn)一個(gè)頂級(jí)組件(不能返回?cái)?shù)組)
不能改變組件的狀態(tài)
不能修改DOM的輸出
5.componentDidMount
真實(shí)的DOM被渲染出來后調(diào)用磅甩,在該方法中可通過this.getDOMNode()訪問到真實(shí)的DOM元素炊林。此時(shí)已可以使用其他類庫來操作這個(gè)DOM。
在服務(wù)端中卷要,該方法不會(huì)被調(diào)用渣聚。
6.componentWillReceiveProps
組件接收到新的props時(shí)調(diào)用,并將其作為參數(shù)nextProps使用僧叉,此時(shí)可以更改組件props及state奕枝。
componentWillReceiveProps: function(nextProps) {
if (nextProps.bool) {
this.setState({
bool: true
});
}
}
7.shouldComponentUpdate
組件是否應(yīng)當(dāng)渲染新的props或state,返回false表示跳過后續(xù)的生命周期方法瓶堕,通常不需要使用以避免出現(xiàn)bug隘道。在出現(xiàn)應(yīng)用的瓶頸時(shí),可通過該方法進(jìn)行適當(dāng)?shù)膬?yōu)化郎笆。
在首次渲染期間或者調(diào)用了forceUpdate方法后谭梗,該方法不會(huì)被調(diào)用
8.componentWillUpdate
接收到新的props或者state后,進(jìn)行渲染之前調(diào)用宛蚓,此時(shí)不允許更新props或state激捏。
9.componentDidUpdate
完成渲染新的props或者state后調(diào)用,此時(shí)可以訪問到新的DOM元素凄吏。
10.componentWillUnmount
組件被移除之前被調(diào)用远舅,可以用于做一些清理工作,在componentDidMount方法中添加的所有任務(wù)都需要在該方法中撤銷痕钢,比如創(chuàng)建的定時(shí)器或添加的事件監(jiān)聽器图柏。
五、JavaScript判斷變量是否為數(shù)組的方法(Array)
1.typeof
//首先看代碼
var ary = [1,23,4];
console.log(typeof ary); //輸出結(jié)果是Object
2.instanceof 判斷
var ary = [1,23,4];
console.log(ary instanceof Array)//true;
3.原型鏈方法
var ary = [1,23,4];
console.log(ary.__proto__.constructor==Array);//true
console.log(ary.constructor==Array)//true 這兩段代碼是一樣的
這個(gè)辦法開起來好高大上哦~任连,利用了原型鏈的方法蚤吹,但是但是,這個(gè)是有兼容的哦随抠,在IE早期版本里面__proto__是沒有定義的哦而且距辆,這個(gè)仍然有局限性余佃,我們現(xiàn)在就來總結(jié)一下第2種方法和第3種方法局限性
總結(jié)一下第2種方法和第3種方法局限性
instanceof 和constructor 判斷的變量,必須在當(dāng)前頁面聲明的跨算,比如爆土,一個(gè)頁面(父頁面)有一個(gè)框架,框架中引用了一個(gè)頁面(子頁面)诸蚕,在子頁面中聲明了一個(gè)ary步势,并將其賦值給父頁面的一個(gè)變量,這時(shí)判斷該變量背犯,Array == object.constructor;會(huì)返回false坏瘩;
原因:
1、array屬于引用型數(shù)據(jù)漠魏,在傳遞過程中倔矾,僅僅是引用地址的傳遞。
2柱锹、每個(gè)頁面的Array原生對(duì)象所引用的地址是不一樣的哪自,在子頁面聲明的array,所對(duì)應(yīng)的構(gòu)造函數(shù)禁熏,是子頁面的Array對(duì)象壤巷;父頁面來進(jìn)行判斷,使用的Array并不等于子頁面的Array瞧毙;切記胧华,不然很難跟蹤問題!
4.通用的方法
var ary = [1,23,4];
function isArray(o){
return Object.prototype.toString.call(o)=='[object Array]';
}
console.log(isArray(ary));
具體Object.prototype.toString 的用法宙彪,請(qǐng)參照 Object.prototype.toString的用法