成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

個(gè)人小結(jié)--javascript實(shí)用技巧和寫(xiě)法建議

WilsonLiu95 / 1058人閱讀

摘要:類(lèi)似的情況還有,方法和方法等。今天我說(shuō)一個(gè)最簡(jiǎn)單。代碼如下和也可以實(shí)現(xiàn),但是生成的是一個(gè)整數(shù),如下分割線其它類(lèi)型數(shù)據(jù)轉(zhuǎn)布爾數(shù)據(jù)下面的轉(zhuǎn)換,大家一看就明白了,不多說(shuō)。緩存變量循環(huán)緩存分割線第一段就是每一次循環(huán)的時(shí)候,都要查詢(xún)一次。

1.前言

從大學(xué)到現(xiàn)在,接觸前端已經(jīng)有幾年了,感想方面,就是對(duì)于程序員而言,想要提高自己的技術(shù)水平和編寫(xiě)易于閱讀和維護(hù)的代碼,我覺(jué)得不能每天都是平庸的寫(xiě)代碼,更要去推敲,去摸索和優(yōu)化代碼,總結(jié)當(dāng)中的技巧,積極聽(tīng)取別人的建議,這樣自己的技術(shù)水平會(huì)提高的更快。那么今天,我在這里就分享一下關(guān)于javascript方面的寫(xiě)作的實(shí)用技巧和建議,這些技巧和建議是我平常在開(kāi)發(fā)項(xiàng)目上會(huì)用到的,希望能讓大家學(xué)到知識(shí),更希望能起到一個(gè)交流意見(jiàn)的作用,也就是說(shuō)大家有什么好的技巧或者建議,歡迎分享,或者覺(jué)得我的想法存在什么問(wèn)題,歡迎指出!

2.更短的數(shù)組去重寫(xiě)法
[...new Set([2,"12",2,12,1,2,1,6,12,13,6])]
//[2, "12", 12, 1, 6, 13]
//es6的新特性
3.對(duì)象深淺拷貝

關(guān)于對(duì)象的深淺拷貝,我個(gè)人見(jiàn)解就是有一下幾點(diǎn):

1.深拷貝和淺拷貝只針對(duì)像Object, Array這樣的引用類(lèi)型數(shù)據(jù)。

2.淺拷貝是對(duì)對(duì)象引用地址進(jìn)行拷貝,并沒(méi)有開(kāi)辟新的棧,也就是拷貝后的結(jié)果是兩個(gè)對(duì)象指向同一個(gè)引用地址,修改其中一個(gè)對(duì)象的屬性,則另一個(gè)對(duì)象的屬性也會(huì)改變。

3.深拷貝則是開(kāi)啟一個(gè)新的棧,兩個(gè)對(duì)象對(duì)應(yīng)兩個(gè)不同的引用地址,修改一個(gè)對(duì)象的屬性,不會(huì)改變另一個(gè)對(duì)象的屬性。

淺拷貝
var myInfo={name:"守候",sex:"男"};

var newInfo=myInfo;

newInfo.sex="女";

console.log(myInfo)   //{name: "守候", sex: "女"}
假-深拷貝

假-深拷貝這個(gè)是自己隨性命名的,大家看看就好,別當(dāng)真!

var myInfo={name:"守候",sex:"男"}; 

var newInfo=Object.assign({},myInfo)

newInfo.sex="女";

console.log(myInfo)   //{name: "守候", sex: "男"}
console.log(newInfo)   //{name: "守候", sex: "女"}
真-深拷貝

真-深拷貝這個(gè)是自己隨性命名的,大家看看就好,別當(dāng)真!

看著深淺拷貝,區(qū)別寫(xiě)法很簡(jiǎn)單,但是那個(gè)上面的深拷貝寫(xiě)法是有問(wèn)題的??聪旅姘咐?/p>

var arr=[{a:1,b:2},{a:3,b:4}]
var newArr=Object.assign([],arr)
//截?cái)鄶?shù)組
newArr.length=1
console.log(newArr)//[{a:1,b:2}]
console.log(arr)//[{a:1,b:2},{a:3,b:4}]
//操作newArr,這里看著對(duì)arr沒(méi)影響,實(shí)際上已經(jīng)挖了一個(gè)坑,下面就跳進(jìn)去
newArr[0].a=123
//修改newArr[0]這個(gè)對(duì)象,也是影響了arr[0]這個(gè)對(duì)象
console.log(arr[0])//{a: 123, b: 2}

為什么會(huì)這樣呢,因?yàn)镺bject.assign并不是深拷貝,是披著深拷貝外衣的淺拷貝。最多也是Object.assign會(huì)課拷貝第一層的值,對(duì)于第一層的值都是深拷貝,而到第二層的時(shí)候就是 復(fù)制引用。類(lèi)似的情況還有,slice方法和concat方法等。
要解決這個(gè)問(wèn)題,就得自己封裝方法!如下

//利用遞歸來(lái)實(shí)現(xiàn)深拷貝,如果對(duì)象屬性的值是引用類(lèi)型(Array,Object),那么對(duì)該屬性進(jìn)行深拷貝,直到遍歷到屬性的值是基本類(lèi)型為止。  
function deepClone(obj){    
  if(!obj&& typeof obj!== "object"){      
    return;    
  }    
  var newObj= obj.constructor === Array ? [] : {};    
  for(var key in obj){       
    if(obj[key]){          
      if(obj[key] && typeof obj[key] === "object"){  
        newObj[key] = obj[key].constructor === Array ? [] : {}; 
        //遞歸
        newObj[key] = deepClone(obj[key]);          
      }else{            
        newObj[key] = obj[key];         
      }       
    }    
  }    
  return newObj; 
}
var arr=[{a:1,b:2},{a:3,b:4}]
var newArr=deepClone(arr)
console.log(arr[0])//{a:1,b:2}
newArr[0].a=123
console.log(arr[0])//{a:1,b:2}

還有一個(gè)方法就是簡(jiǎn)單粗暴法,我現(xiàn)在在用的一個(gè)方法!原理很簡(jiǎn)單,就是先把對(duì)象轉(zhuǎn)成字符串,再把字符串轉(zhuǎn)成對(duì)象!也能實(shí)現(xiàn)同樣效果

var newArr2=JSON.parse(JSON.stringify(arr));
console.log(arr[0])//{a:1,b:2}
newArr2[0].a=123
console.log(arr[0])//{a:1,b:2}

上面所說(shuō)的淺拷貝,真假深拷貝(自己隨性命名的),這幾種情況,在開(kāi)發(fā)上都有可能要用到,至于要使用哪一種方式,視情況而定!

4.使用事件委托

一個(gè)簡(jiǎn)單的需求,比如想給ul下面的li加上點(diǎn)擊事件,點(diǎn)擊哪個(gè)li,就顯示那個(gè)li的innerHTML。這個(gè)貌似很簡(jiǎn)單!代碼如下!



    
        
        
    
    
        
  • 0
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

很簡(jiǎn)單,這樣就實(shí)現(xiàn)了,實(shí)際上這里有坑,也待優(yōu)化!
1.for循環(huán),循環(huán)的是li,10個(gè)li就循環(huán)10次,綁定10次事件,100個(gè)就循環(huán)了100次,綁定100次事件!
2.如果li不是本來(lái)就在頁(yè)面上的,是未來(lái)元素,是頁(yè)面加載了,再通過(guò)js動(dòng)態(tài)加載進(jìn)來(lái)了,上面的寫(xiě)法是無(wú)效的,點(diǎn)擊li是沒(méi)有反應(yīng)的!
所以就者需要用事件委托(即使不考慮上面的第二種情況,也是建議使用事件委托)!代碼如下



    
        
        
    
    
        
  • 0
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

這樣寫(xiě),即使是動(dòng)態(tài)添加進(jìn)來(lái)的li點(diǎn)擊也有反應(yīng),還有一個(gè)就是ul只有一個(gè),事件綁定在ul上,無(wú)論li多少個(gè),都是添加一次事件!但是也是可能會(huì)有問(wèn)題,如果li下面還有子元素,那么點(diǎn)擊的時(shí)候,target可能不是li,而是鼠標(biāo)點(diǎn)擊那個(gè)位置的最底層元素!如下圖,如果鼠標(biāo)點(diǎn)擊白色區(qū)域,那個(gè)target就是body元素,鼠標(biāo)點(diǎn)擊綠色區(qū)域target就是div元素,鼠標(biāo)點(diǎn)擊藍(lán)色區(qū)域target就是ul,點(diǎn)擊橙色就是li。

5.使用對(duì)象作為函數(shù)參數(shù)

大家試想下這樣一個(gè)函數(shù)--函數(shù)接受幾個(gè)參數(shù),但是這幾個(gè)參數(shù)都不是必填的,函數(shù)該怎么處理?是不是下面這樣

function personInfo(name,phone,card){
    ...
}
//以上函數(shù),可以任意傳參數(shù)。比如我想傳card等于1472586326。這下是不是這樣寫(xiě)
personInfo("","","1472586326")

有沒(méi)有覺(jué)得上面寫(xiě)法奇怪,不太優(yōu)雅?下面這里看著舒服一點(diǎn)!

function personInfo(opt){
    ...
}
personInfo({card:"1472586326"})

再想一下,如果一個(gè)函數(shù),參數(shù)很多,怎么處理?

function test(arg1,arg2,arg3,arg4,arg5,arg6,arg7){
    ...
}

密集恐懼癥復(fù)發(fā)沒(méi)有復(fù)發(fā)?下面這樣看著會(huì)舒服一點(diǎn)!

function personInfo(opt){
    ...
}

最后再想一下,如果需求改了,操作函數(shù)也要改!函數(shù)也要增加一個(gè)參數(shù)。

//原來(lái)函數(shù)
function personInfo(name,phone,card){
    ...
}
//修改后
function personInfo(name,age,phone,card){
    ...
}

這樣就是參數(shù)修改一次,函數(shù)的參數(shù)就要修改一次!如果是用對(duì)象,就不會(huì)出現(xiàn)這樣問(wèn)題!

//修改前后都是這樣,變得是函數(shù)的操作內(nèi)容和調(diào)用時(shí)候的傳參!
function personInfo(opt){
    ...
}

看了上面的幾個(gè)栗子,總結(jié)來(lái)說(shuō),就是當(dāng)函數(shù)的參數(shù)不固定的時(shí)候,參數(shù)多(三個(gè)或者三個(gè)以上)的時(shí)候,建議用一個(gè)對(duì)象記錄參數(shù),這樣會(huì)比較方便,也為以后如果參數(shù)要改留了條后路!

6.使用push和apply合并數(shù)組

合并數(shù)組這個(gè)已經(jīng)是老生常談的話題了,方法也是多種多樣!

concat
var arr1=[1,2,3,4,5],arr2=[6,7,8,9,10];
arr1=arr1.concat(arr2)
console.log(arr1)//[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

concat會(huì)一個(gè)全新的數(shù)組,表示arr1和arr2兩個(gè)數(shù)組的組合,并讓arr1和arr2不變。簡(jiǎn)單吧?
但如果arr1和arr2的長(zhǎng)度都很長(zhǎng),那就產(chǎn)生了一個(gè)很長(zhǎng)很長(zhǎng)的數(shù)組,內(nèi)存又被占用了那么多。但是數(shù)組長(zhǎng)度沒(méi)限制!

for
var arr1=[1,2,3,4,5],arr2=[6,7,8,9,10];
for(var i=0,len=arr2.length;i

這里是往arr1循環(huán)添加arr2的元素,但是有一個(gè)情況,arr1的長(zhǎng)度遠(yuǎn)小于arr2的長(zhǎng)度,是不是循環(huán)arr1性能更好,循環(huán)次數(shù)更少。處理這個(gè)很簡(jiǎn)單,但是萬(wàn)一不知道arr1和arr2到底哪個(gè)長(zhǎng)度更少呢?而且,for循環(huán)不夠優(yōu)雅!(當(dāng)然,這個(gè)可以用迭代方法來(lái)替代)

reduce
var arr1=[1,2,3,4,5],arr2=[6,7,8,9,10];
arr1 = arr2.reduce( function(coll,item){
     coll.push( item );
     return coll;
 }, arr1 );
 console.log(arr1)//[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

逼格高了一點(diǎn),而且用ES6的箭頭函數(shù)還可以減少一些代碼量,但它仍然需要一個(gè)函數(shù),每個(gè)元素都需要調(diào)用一次。

push.apply
var arr1=[1,2,3,4,5],arr2=[6,7,8,9,10];
arr1.push.apply(arr1,arr2);
console.log(arr1)//[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

逼格看著高,代碼少,也不會(huì)產(chǎn)生新的數(shù)組,也不難理解,就是調(diào)用arr1.push這個(gè)函數(shù)實(shí)例的apply方法,同時(shí)把arr2當(dāng)作參數(shù)傳入,這樣arr1.push這個(gè)方法就會(huì)遍歷arr2數(shù)組的所有元素,達(dá)到合并的效果。相當(dāng)于arr1.push.apply(arr1,[6,7,8,9,10]);,最后相當(dāng)于arr1.push(6,7,8,9,10)。遺憾的就是,這個(gè)方法對(duì)數(shù)組長(zhǎng)度有限制,網(wǎng)上說(shuō)法是不同瀏覽器,不同的長(zhǎng)度限制,一般不超過(guò)10萬(wàn)!

之前是建議用push.apply,但是現(xiàn)在保留意見(jiàn),就是大家覺(jué)得哪個(gè)方式用哪個(gè)方式!這個(gè)沒(méi)有一定的對(duì)錯(cuò)!

7.toFixed保留整數(shù)

在開(kāi)發(fā)上,經(jīng)常會(huì)遇到最多保留多少位小數(shù)或者類(lèi)似的問(wèn)題,針對(duì)這個(gè),使用toFixed可以很簡(jiǎn)單的解決問(wèn)題,但是如果數(shù)據(jù)是要和后臺(tái)交互的,而且后臺(tái)存儲(chǔ)的數(shù)據(jù)一般是保存數(shù)字類(lèi)型,而使用toFixed后生成的是一個(gè)字符串,這下,就需要把toFixed生成的是一個(gè)字符串轉(zhuǎn)成數(shù)字類(lèi)型,轉(zhuǎn)發(fā)很多。今天我說(shuō)一個(gè)最簡(jiǎn)單--+。代碼如下

var a=123.36896335.toFixed(2)
console.log(a)//"123.37"
a=+a
console.log(a)//123.37

PS:a=a|0和~~a也可以實(shí)現(xiàn),但是生成的是一個(gè)整數(shù),如下

var a=123.36896335.toFixed(2)
console.log(a)//"123.37"
a=a|0  
console.log(a)//123 
//---------------------------------分割線
var a=123.36896335.toFixed(2)
console.log(a)//"123.37"
a=~~a  
console.log(a)//123        
8.其它類(lèi)型數(shù)據(jù)轉(zhuǎn)布爾數(shù)據(jù)

下面的轉(zhuǎn)換,大家一看就明白了,不多說(shuō)。

console.log(!!"123")
//true
!!12
//true
!!-1
//true
!![]
//true
!!""
//false
!!null
//false
9.緩存變量 for循環(huán)緩存length
var arr=[1,2,3,4,5,6]
for(var i=0,i

第一段就是每一次循環(huán)的時(shí)候,都要查詢(xún)一次arr.length。第二段代碼就是緩存了arr.length,每次對(duì)比len就好,理論上是第二段代碼的寫(xiě)法比較好,性能比較高!但是隨著瀏覽器的發(fā)展,這個(gè)細(xì)節(jié)的性能上的影響貌似遠(yuǎn)遠(yuǎn)小于預(yù)期,現(xiàn)在還是建議緩存!我寫(xiě)了下面的測(cè)試用例(谷歌瀏覽器測(cè)試)!

var arr100=[], arr10000=[];
for(var i=0;i<100;i++){
    arr100.push(i)
}
for(var i=0;i<10000;i++){
    arr10000.push(i)
}
//緩存情況
function testCache(arr){
    console.time();
    for(var i=0,len=arr.length;i
元素事件

這里我用jquery來(lái)講解,比較容易理解,原生js也是這個(gè)道理!如下代碼

$(".div1").click(function(){
   ...
})
//--------------------------分割線   
var $div1=$(".div1");
$div1.click(function(){
   ...
})

上面的代碼,改變的也是緩存了$(".div1"),但是這里就建議是第二種寫(xiě)法了,因?yàn)榈谝环N點(diǎn)擊一次就要查詢(xún)一次.div1,Dom的操作還是能減少就減少!

10.使用innerHTML添加元素

比如有一個(gè)需求,往ul里面添加10個(gè)li,兩種方法,如下代碼



    
        
        
    
    
        

大家把代碼用瀏覽器打開(kāi),發(fā)現(xiàn)基本是第二種方式更快,第8點(diǎn)也說(shuō)了,DOM操作能少就少!第一種要操作10次DOM,第二種只需要操作1次DOM。還有一個(gè)就是,這個(gè)只是很簡(jiǎn)單的li,如果是下面的列表呢?用第一種方式,得createElement多少次,innerHTML多少次,appendChild多少次?代碼多,各個(gè)節(jié)點(diǎn)的邏輯和嵌套關(guān)系也亂!用第二種方式就是一個(gè)拼接字符串的操作,比第一種方式好多了,如果用es6的模板字符串,就更簡(jiǎn)單了!

11.將參數(shù)轉(zhuǎn)成數(shù)組

函數(shù)里的arguments,雖然擁有l(wèi)ength屬性,但是arguments不是一個(gè)數(shù)組,是一個(gè)類(lèi)數(shù)組,沒(méi)有push,slice等方法。有些時(shí)候,需要把a(bǔ)rguments轉(zhuǎn)成數(shù)組,轉(zhuǎn)的方法也不止一個(gè),推薦的是是下面的寫(xiě)法!

var _arguments=Array.prototype.slice.apply(arguments)
12.函數(shù)節(jié)流

這里拿一個(gè)栗子說(shuō),比如mousemove,onscroll,onresize這些事件觸發(fā)的時(shí)候,可能已經(jīng)觸發(fā)了60次事件,這樣很消耗性能,而且實(shí)際上,我們并不需要這么頻繁的觸發(fā),只要大約100毫秒觸發(fā)一次就好!那么這樣就需要函數(shù)節(jié)流了!

普通寫(xiě)法

var count = 0;
function beginCount() {
    count++;
    console.log(count);
}
document.onmousemove = function () {
   beginCount();
};

效果

節(jié)流寫(xiě)法

var count = 0;
function beginCount() {
    count++;
    console.log(count);
}
function delayFn(method, thisArg) {
    clearTimeout(method.props);
    method.props = setTimeout(function () {
        method.call(thisArg)
    },100)
}
document.onmousemove = function () {
    delayFn(beginCount)
};

效果

這種方式,其實(shí)是有問(wèn)題的,在不斷觸發(fā)停下來(lái)等待100ms才開(kāi)始執(zhí)行,中間操作得太快直接無(wú)視。于是在網(wǎng)上找到下面這種方案!

第二種節(jié)流寫(xiě)法

function delayFn2 (fn, delay, mustDelay){
     var timer = null;
     var t_start;
     return function(){
         var context = this, args = arguments, t_cur = +new Date();
         //先清理上一次的調(diào)用觸發(fā)(上一次調(diào)用觸發(fā)事件不執(zhí)行)
         clearTimeout(timer);
         //如果不存觸發(fā)時(shí)間,那么當(dāng)前的時(shí)間就是觸發(fā)時(shí)間
         if(!t_start){
             t_start = t_cur;
         }
         //如果當(dāng)前時(shí)間-觸發(fā)時(shí)間大于最大的間隔時(shí)間(mustDelay),觸發(fā)一次函數(shù)運(yùn)行函數(shù)
         if(t_cur - t_start >= mustDelay){
             fn.apply(context, args);
             t_start = t_cur;
         }
         //否則延遲執(zhí)行
         else {
             timer = setTimeout(function(){
                 fn.apply(context, args);
             }, delay);
         }
     };
}
var count=0;
function fn1(){
    count++;
    console.log(count)
} 
//100ms內(nèi)連續(xù)觸發(fā)的調(diào)用,后一個(gè)調(diào)用會(huì)把前一個(gè)調(diào)用的等待處理掉,但每隔200ms至少執(zhí)行一次
document.onmousemove=delayFn2(fn1,100,200)

我現(xiàn)在函數(shù)節(jié)流用得很少,這兩個(gè)寫(xiě)法是比較基礎(chǔ)的,希望大家能共享下自己的比較好的方法!
13.其他寫(xiě)作建議

關(guān)于其它的一些寫(xiě)法技巧和建議,都是比較老生常談的,比如命名規(guī)范,函數(shù)單一性原則等。這一部分內(nèi)容我自己總結(jié)和別人寫(xiě)的基本一致!我就不展開(kāi)說(shuō)了(感覺(jué)展開(kāi)說(shuō)也基本是復(fù)制粘貼別人的文章,這事我不干),所以我推薦大家去看這篇文章(如何優(yōu)雅的編寫(xiě) JavaScript 代碼)。有些知識(shí)我也是從這里獲得的!

14.小結(jié)

好了,關(guān)于我自己總結(jié)的一些實(shí)用技巧和建議,就到這里了!關(guān)于javascript的技巧和建議,這點(diǎn)大家還是要多看網(wǎng)上的資源,也要自己多總結(jié),畢竟我自己總結(jié)的只是我自己發(fā)現(xiàn)的,只是冰山一角。但還是希望這篇文章能幫到大家,讓大家學(xué)習(xí)到知識(shí)。當(dāng)然,更希望的是能起到一個(gè)交流意見(jiàn)的作用。如果大家有什么建議,技巧。也歡迎分享。覺(jué)得我哪里寫(xiě)錯(cuò)了,寫(xiě)得不夠好,也歡迎指出!讓大家一起互相幫助,互相學(xué)習(xí)!

-------------------------華麗的分割線--------------------
想了解更多,關(guān)注關(guān)注我的微信公眾號(hào):守候書(shū)閣

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/88391.html

相關(guān)文章

  • css寫(xiě)作建議性能優(yōu)化小結(jié)

    摘要:前言還有幾天就到國(guó)慶中秋了,快要放假了,先祝大家節(jié)日快樂(lè)之前寫(xiě)過(guò)的寫(xiě)作建議和技巧,那么今天就來(lái)聊聊吧說(shuō)到,每一個(gè)網(wǎng)頁(yè)都離不開(kāi),但是對(duì)于,很多開(kāi)發(fā)者的想法就是,只要能用來(lái)布局,把效果圖排出來(lái)就可以了,其它的細(xì)節(jié)或者優(yōu)化,不需要怎么考慮。 1.前言 還有幾天就到國(guó)慶中秋了,快要放假了,先祝大家節(jié)日快樂(lè)!之前寫(xiě)過(guò)js的寫(xiě)作建議和技巧,那么今天就來(lái)聊聊css吧!說(shuō)到css,每一個(gè)網(wǎng)頁(yè)都離不開(kāi)c...

    lifesimple 評(píng)論0 收藏0
  • css寫(xiě)作建議性能優(yōu)化小結(jié)

    摘要:前言還有幾天就到國(guó)慶中秋了,快要放假了,先祝大家節(jié)日快樂(lè)之前寫(xiě)過(guò)的寫(xiě)作建議和技巧,那么今天就來(lái)聊聊吧說(shuō)到,每一個(gè)網(wǎng)頁(yè)都離不開(kāi),但是對(duì)于,很多開(kāi)發(fā)者的想法就是,只要能用來(lái)布局,把效果圖排出來(lái)就可以了,其它的細(xì)節(jié)或者優(yōu)化,不需要怎么考慮。 1.前言 還有幾天就到國(guó)慶中秋了,快要放假了,先祝大家節(jié)日快樂(lè)!之前寫(xiě)過(guò)js的寫(xiě)作建議和技巧,那么今天就來(lái)聊聊css吧!說(shuō)到css,每一個(gè)網(wǎng)頁(yè)都離不開(kāi)c...

    hiYoHoo 評(píng)論0 收藏0
  • 2017-09-06 前端日?qǐng)?bào)

    摘要:前端日?qǐng)?bào)精選專(zhuān)題之函數(shù)記憶插件編寫(xiě)與實(shí)戰(zhàn)源碼解析系列一簡(jiǎn)單渲染個(gè)人小結(jié)實(shí)用技巧和寫(xiě)法建議從入門(mén)到工程實(shí)踐中文技術(shù)周刊從前端小白到技術(shù)專(zhuān)家,這里有點(diǎn)可執(zhí)行的建議你真的需要一個(gè)實(shí)用工具集嗎深入理解時(shí)序函數(shù)聊聊與特性英文 2017-09-06 前端日?qǐng)?bào) 精選 JavaScript專(zhuān)題之函數(shù)記憶Vue 插件編寫(xiě)與實(shí)戰(zhàn)Preact 源碼解析系列一 :簡(jiǎn)單DOM渲染個(gè)人小結(jié)--javascript...

    ningwang 評(píng)論0 收藏0
  • 【回顧九月份第二周】 前端你該知道的事兒

    摘要:順便一說(shuō),這首歌的原唱是秋田,中島當(dāng)年嗓子壞了,才有這歌。中文是直接翻譯來(lái)的,作曲是秋田。一部電影春夏秋冬又一春春夏秋冬又一春是由金基德執(zhí)導(dǎo),金英民吳英秀金基德主演的一部韓國(guó)電影。年月日于韓國(guó)上映。 原鏈接: http://bluezhan.me/weekly/#/9-2 1、web前端 Angular vs. React vs. Vue: A 2017 comparison 9 S...

    sixgo 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<