- construtor和super;this.functionName = this.functionName.bind(this)
contrutor(props)和super(props)一般是要么不出現重付,要么同時出現鹃唯,意義實際上就是繼承古程,前者就是一個一般意義的構造函數,相當于es5里面的
function FucntionName(props){
this.props = props;
}
super (props)則是繼承父類的屬性绣版。
2.state稱為狀態(tài)渲染機,
3.react+redux的主體流程:
(1)通過action獲得model(數據),并將其作為state存儲到store
(2)傳遞給react component,按照莫中設計呈現model數據涉波,
(3)調用action發(fā)起update請求,從而調用reducer生成新的state存儲到store中
(4)redux 通知react component重新render
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width,inital-scale=1.0,minimum-scale=1.0,maximum-scake=1.0,user-scalable=no" />
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-status-bar-style" content="block" />
<meta name="fromat-detecition" content="telephone=no" />
<link rel="stylesheet" type="text/css" href="css/base.css" />
<link rel="stylesheet" type="text/css" href="css/content.css" />
<link rel="stylesheet" type="text/css" href="css/main.css" />
<title></title>
<script type="text/javascript" src="lib/jquery-1.8.2.min.js"></script>
<script type="text/javascript" src="lib/base.js"></script>
</head>
<body>
</body>
</html>
4.websocket與http
websocket是HTML5出的協議茂装,是一個持久化的協議怠蹂,相對于http這種非持久的協議來說。
http的生命周期通過request來界定少态,也就是一個request一個response,這次請求就結束了易遣。
websocket是基于http協議的彼妻,或者說借用了http的協議來完成一部分握手。
典型的websocket握手:
GEt /chat HTTP/1.1
Host: server.example.com
Upgrade: websocket /告訴服務器,我發(fā)起的是websocket協議/
Connetion: Upgrade
Sec-Websocket-Key: x3JJHMbDL1EzLkh9GBhXDw== /至是瀏覽器隨機生成的侨歉,告訴服務器屋摇,驗證是否是websocket/
Sec-Websocket-Protocol: chat, superchat /用戶自定義的字符串,/
Sec-Websocket-Version: 13
Origin: http://example.com
然后服務器返回下列幽邓,表示已經接受到請求炮温,成功建立websocket
HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade /告訴客戶,已經成功切換協議啦/
Sec-Websocket-Accpet: HSmrc0sMlYUkAGmm5OPpG2HaGWk= /服務器/
Sec-Websocket-Protocol: chat
websocket的出現服務器端可以主動推送信息給客戶端(彼此相互推送信息)牵舵。解決了要反復解析HTTP協議柒啤。
websocket API使用:
//創(chuàng)建一個socket實例
var socket = new Websocket('ws://localhost:8080');
//打開socket
socket.onopen = function(event){
//發(fā)送一個初始化消息
socket.send('I am the client and I'm listening!);
//監(jiān)聽消息
socket.onmessage = function(event){
console.log('client received a message', event);
}
//監(jiān)聽socket的關閉
socket.onclose = function(event) {
console.log('client notified socket has closed', event);
}
//關閉socket
socket.close();
}
5.單頁面應用
單頁面應用利用js實現了頁面的動態(tài)化,用戶使用時基本感知不到網頁是如何實現的畸颅,
react-router,讓你的單頁面應用支持頁面的跳轉以及動態(tài)渲染
function convert(source){
var tmp = {}, parent, n;
for(n in source){
var item = source[n];
if(item.ID == item.ParentID){
parent = item.ID;
}
if(!tmp[item.ID]){
tmp[item.ID] = {};
}
tmp[item.ID].Name = item.Name;
tmp[item.ID].ID = item.ID;
if(!('children' in tmp[item.ID])) {
tmp[item.ID].children = [];
}
if(item.ID!=item.ParentID){
if(tmp[item.ParentID]){
tmp[item.ParentID].children.push(tmp[item.ID]);
}
else {
tmp[item.ParentID] = {children:[tmp[item.ID]]};
}
}
}
return tmp[parent];
}
6.數組的方法
(1)splice()用于插入担巩,刪除或替換數組的元素
(2)for,map没炒,forEach的區(qū)別涛癌?
傳遞給map()的函數應該有返回值,返回的是新數組送火;
7.http?
(1)method:
get 請求獲取request-URL所標識的資源
post 在request-URL所標識的資源后附加新的數據, 常用表單提交
head
put
delete
options
(2)狀態(tài)碼
1XX:指示信息--表示請求已接收拳话,繼續(xù)處理
2XX:成功--表示請求已被接收、理解种吸、接受
3XX:重定向--要完成請求必須進行更一步的操作
4XX:客戶端錯誤--請求有語法錯誤或者請求無法實現
5XX:服務器端錯誤--服務器未能實現合法的請求
8.正向代理弃衍?反向代理?
9.jquery的ajax
$(document).ready(function){
$('#b01').click(function(){
htmlobj = $.ajax({url: 'jquery/test1.txt',async:false});
$('#myDiv').html(htmlobj.responseText);
})
}
10.http的header里面包含哪些字段骨稿,每個字段都有哪些含義笨鸡?
content-type,host,origin,referer,user-Agent,accept,
Accept-Encoding指定瀏覽器可以支持的web服務器返回內容壓縮編碼類型。
Accept-Language,connection,
11.JSONP請求坦冠?
function getJSONP(url, callback){
var cbnum = 'cb' + getJSONP.counter++;
var cbname = 'getJSONP.' + cbnum;
if (url.indexOf('?') === -1){
url += '?=jsonp' + cbname;
}
else {
url += '&jsonp' + cbname;
}
var script = document.createElement('script');
getJSONP[cbnum] = function(response){
try{
callback(response);
}
finally{
delete.getJSONP[cbname];
script.parentNode.removeChild(script);
}
}
script.src = url;
document.body.appendChild(script);
}
getJSONP.counter = 0;
描述:
(1)將回調函數名添加到URL查詢部分形耗,
(2)創(chuàng)建script標簽;
(3)定義將被腳本執(zhí)行的回調函數辙浑,
(4)觸發(fā)http請求激涤;設置腳本的URL到src中,把該標簽添加到文檔中