国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當(dāng)前位置: 首頁(yè) > news >正文

網(wǎng)站窗口建設(shè)活動(dòng)營(yíng)銷(xiāo)推廣方案

網(wǎng)站窗口建設(shè),活動(dòng)營(yíng)銷(xiāo)推廣方案,害羞的兔兔y1f6m9byfa,中國(guó)建設(shè)銀行網(wǎng)官方網(wǎng)站本文主要是分享一下平時(shí)前端工程師,在寫(xiě)前端代碼過(guò)程中的一些代碼優(yōu)化,以及使用的一些小技巧,來(lái)使我們的代碼更加簡(jiǎn)潔,可讀性更強(qiáng),更易維護(hù)。 1. 字符串的自動(dòng)匹配(includes的優(yōu)化) includes是…

本文主要是分享一下平時(shí)前端工程師,在寫(xiě)前端代碼過(guò)程中的一些代碼優(yōu)化,以及使用的一些小技巧,來(lái)使我們的代碼更加簡(jiǎn)潔,可讀性更強(qiáng),更易維護(hù)。

1. 字符串的自動(dòng)匹配(includes的優(yōu)化)

includes是ES7新增的 API,與indexOf不同的是includes直接返回的是Boolean值,indexOf則返回的索引值, 數(shù)組和字符串都有includes方法。

我們經(jīng)常需要檢查某個(gè)字符串是否是符合我們的規(guī)定的字符串之一。最常見(jiàn)的方法就是使用||===去進(jìn)行判斷匹配。但大量的使用這種判斷方式,會(huì)使得我們的代碼變得十分臃腫,寫(xiě)起來(lái)也很累。其實(shí)我們可以使用Array.includes來(lái)幫我們自動(dòng)去匹配。

代碼示例:

// 未優(yōu)化前的代碼
if(code==='202' || code === '203' || code === '204') {return 1
}else{return 2
}
// 優(yōu)化后的寫(xiě)法
if(['202','203','204'].includes(code)){retrun 1
}else{return 2
}

2. 三目運(yùn)算符

代碼示例:

// 未優(yōu)化前的代碼
let demo
if(code==='201') {demo = 1
}else if (code==='202'){demo = 2
}else{demo = 99
}
// 優(yōu)化后的寫(xiě)法
let demo = code==='201' ? 1 : code==='202' ? 2 : 99

雖然三目簡(jiǎn)潔一些,但是復(fù)雜的邏輯,不建議使用。
因?yàn)閺?fù)雜邏輯會(huì)導(dǎo)致代碼可讀性變差,所以在實(shí)際使用中需要我們根據(jù)情況去取舍。

3. 解構(gòu)

代碼示例:

// 未優(yōu)化前的代碼
const demo1 = {name: '回憶哆啦沒(méi)有A夢(mèng)',age: 27,skill:['js','vue','python','react']
}
const demo2 = {name: demo2.name,age: demo2.age,
}
console.log(demo2) //  {name: '回憶哆啦沒(méi)有A夢(mèng)',age: 27}
// 優(yōu)化后的寫(xiě)法
const demo1 = {name: '回憶哆啦沒(méi)有A夢(mèng)',age: 27,skill:['js','vue','python','react']
}
const {name,age} = demo1
const demo2 ={name, age}
console.log(demo2) //  {name: '回憶哆啦沒(méi)有A夢(mèng)',age: 27}
console.log(name) //  '回憶哆啦沒(méi)有A夢(mèng)'
console.log(age) //  27

使用解構(gòu)語(yǔ)法,開(kāi)發(fā)人員可以快速將數(shù)組中的值或?qū)ο笾械膶傩越獍街付ǖ淖兞恐小?/p>

4. 使用可選的鏈接運(yùn)算符(?.

?.作用與 . 操作符類(lèi)似。

不同的是 ?. 如果對(duì)象鏈上的引用是 null 或者 undefined 時(shí), . 操作符會(huì)像前言中的例子拋出一個(gè)錯(cuò)誤,而 ?. 操作符則會(huì)按照短路計(jì)算的方式進(jìn)行處理,返回 undefined。

可選鏈操作符也可用于函數(shù)調(diào)用,如果操作符前的函數(shù)不存在,也將會(huì)返回 undefined。

代碼示例:

// 未優(yōu)化前的代碼
let code;
if (data?.code) {code = data.code;
} else {code = "201";
}
// 優(yōu)化后的寫(xiě)法
const code = data?.code || "201";

?.提供了一種方法來(lái)簡(jiǎn)化被連接對(duì)象的值訪問(wèn),保證訪問(wèn)數(shù)據(jù)的安全性。它可以用于對(duì)象、數(shù)組、函數(shù)中。這個(gè)語(yǔ)法很有用,在項(xiàng)目中使用可以達(dá)到事半功倍的效果。

5. 將參數(shù)作為對(duì)象傳遞

代碼示例:

// 未優(yōu)化前的代碼
const creatData = (name,skill,age)=>{// ...
}
creatData('回憶哆啦沒(méi)有A夢(mèng)',['js','vue','python','react'],27)
// 優(yōu)化后的寫(xiě)法
const creatData = ({name,age,skill})=>{// ...
}
creatData({name: '回憶哆啦沒(méi)有A夢(mèng)',age: 27,skill:['js','vue','python','react']
})

這樣傳遞參數(shù)的方式的好處:

  • 參數(shù)的順序不再重要,開(kāi)發(fā)人員可以專(zhuān)注于交付高質(zhì)量的代碼,而不必反復(fù)檢查功能定義。
  • 由于IDE將專(zhuān)注于您提供的特定參數(shù),因此自動(dòng)完成變得更加容易。
  • 當(dāng)函數(shù)調(diào)用指定每個(gè)屬性的值時(shí),此方法以明確的方式傳達(dá)意圖,后續(xù)維護(hù)的時(shí)候,也不必害怕因?yàn)閭麇e(cuò)參數(shù)順序?qū)е聢?zhí)行錯(cuò)誤。
  • 大型代碼庫(kù)將從附加的詳細(xì)信息中受益匪淺。

6. 用對(duì)象代替switch/case,if/else選擇結(jié)構(gòu)

我們經(jīng)常遇到復(fù)雜邏輯判斷的情況,通常會(huì)用if/else或者switch/case來(lái)實(shí)現(xiàn)多個(gè)條件判斷,但這樣會(huì)有個(gè)問(wèn)題,隨著邏輯復(fù)雜度的增加,代碼中的if/else/switch/case會(huì)變得越來(lái)越臃腫,越來(lái)越看不懂,所以我們可以這樣優(yōu)化下代碼。

代碼示例:

// 未優(yōu)化前的代碼
let activeText;
switch (code) {case 500:activeText= "通用錯(cuò)誤消息";break;case 501:activeText= "無(wú)法識(shí)別請(qǐng)求";break;case 502:activeText= "網(wǎng)關(guān)或者代理錯(cuò)誤";break;case 503:activeText= "服務(wù)器維護(hù)或者過(guò)載";break;case 504:activeText= "未收到響應(yīng)";break;case 505:activeText= "服務(wù)器不支持";break;
}

借助 Object{ key: value } 結(jié)構(gòu),我們可以在 Object 中枚舉所有的情況,然后將 key 作為索引,直接通過(guò) Object.key 或者 Object[key] 來(lái)獲取內(nèi)容。

// 優(yōu)化后的寫(xiě)法
const texts = {500: "通用錯(cuò)誤消息",501: "無(wú)法識(shí)別請(qǐng)求",502: "網(wǎng)關(guān)或者代理錯(cuò)誤",503: "服務(wù)器維護(hù)或者過(guò)載",504: "未收到響應(yīng)",505: "服務(wù)器不支持",
};
const activeText = texts [code];

7. 判斷一個(gè)變量是否為null、undefined、0false、NaN、""

如果你想要判斷一個(gè)變量是否為null、undefined0、falseNaN、”'',你就可以使用邏輯非(!)取反,來(lái)幫助我們來(lái)判斷,而不用每一個(gè)值都用===來(lái)判斷。

代碼示例:

// 未優(yōu)化前的代碼
const isFalsey = (value) => {if (value === null ||value === undefined ||value === 0 ||value === false ||value === NaN ||value === "") {return true;}return false;
};
// 優(yōu)化后的寫(xiě)法
const isFalsey = (value) => !value;

8. 等到多個(gè)Promise完成

我們?cè)陂_(kāi)發(fā)中,經(jīng)常會(huì)遇到一個(gè)需求,有a,b, 2個(gè)http請(qǐng)求,我們需要等到a,b, 2個(gè)接口都請(qǐng)求成功,返回?cái)?shù)據(jù)后才能去做動(dòng)作c

這時(shí)候, 每當(dāng)您需要執(zhí)行多個(gè)任務(wù)等待它們完成時(shí),此技巧就很重要。由于每個(gè)任務(wù)都是異步運(yùn)行的,因此可以并行處理它們,并且一旦所有承諾都得到解決,就可以使用返回的數(shù)據(jù)。

const promiseA = = new Promise((resolve, reject) => {resolve('成功了')
});
const promiseB = new Promise((resolve, reject) => {resolve('success')
});
let promiseC = Promse.reject('失敗')Promise.all([promiseA , promiseB ]).then((result) => {console.log(result)               // ['成功了', 'success']
}).catch((error) => {console.log(error)
})Promise.all([promiseA ,promiseB ,promiseC ]).then((result) => {console.log(result)
}).catch((error) => {console.log(error)      // 失敗了,打出 '失敗'
})

Promse.all在處理多個(gè)異步處理時(shí)非常有用,比如說(shuō):一個(gè)頁(yè)面上需要等兩個(gè)或多個(gè)ajax的數(shù)據(jù)回來(lái)以后才正常顯示,在此之前只顯示loading圖標(biāo)。

除了Promse.all,還有個(gè)Promse.racerace就是“賽跑”。
Promse.race 意思就是說(shuō),Promise.race([promiseA , promiseB ,promiseC])里面哪個(gè)結(jié)果獲得的快,就返回那個(gè)結(jié)果,不管結(jié)果本身是成功狀態(tài)還是失敗狀態(tài)。

9. for-of 使用

for-of,可以幫助我們自動(dòng)遍歷Array和object中的每一個(gè)元素,不需要我們手動(dòng)跟更改索引來(lái)遍歷元素。

代碼示例:

// 未優(yōu)化前的代碼
const arr = ['a',' b', 'c'];
for (let i = 0; i < arr.length; i++) {const demo = arr[i];console.log(demo);
}
// 優(yōu)化后的寫(xiě)法
for (const demo of arr) {console.log(demo);
}
// a
// b
// c

不推薦使用 for-in,因?yàn)?for-in性能很差 ,他會(huì)迭代所有的私有和共有屬性,原型鏈一級(jí)級(jí)查很耗性能。

未完待續(xù),持續(xù)更新…

http://aloenet.com.cn/news/46190.html

相關(guān)文章:

  • 怎么給網(wǎng)站做鏈接今日國(guó)際新聞?wù)畻l
  • 虎門(mén)仿做網(wǎng)站搜索引擎優(yōu)化方案
  • 簡(jiǎn)單個(gè)人博客模板網(wǎng)站網(wǎng)站內(nèi)容管理系統(tǒng)
  • 京東網(wǎng)站建設(shè)步驟關(guān)鍵詞排名關(guān)鍵詞快速排名
  • 做網(wǎng)站獨(dú)立云服務(wù)器什么意思網(wǎng)址大全瀏覽器
  • 網(wǎng)站建設(shè)平臺(tái)漢龍網(wǎng)頁(yè)制作官方網(wǎng)站
  • 自己做的個(gè)人網(wǎng)站無(wú)法備案廣東東莞今日最新消息
  • 新手學(xué)做網(wǎng)站必備軟件seo技術(shù)培訓(xùn)課程
  • 網(wǎng)站支付功能怎么做全自動(dòng)推廣引流軟件免費(fèi)
  • 日本做暖網(wǎng)站推廣網(wǎng)站要注意什么
  • 寧德住房和城鄉(xiāng)建設(shè)部網(wǎng)站怎樣做網(wǎng)絡(luò)推廣營(yíng)銷(xiāo)
  • 新網(wǎng)站怎么做權(quán)重國(guó)際新聞軍事最新消息
  • 廣東網(wǎng)站制作百度客服人工電話(huà)24小時(shí)
  • 拼多多網(wǎng)站分析百度網(wǎng)站登錄
  • 做類(lèi)似交易貓的網(wǎng)站如何優(yōu)化網(wǎng)頁(yè)
  • 六安網(wǎng)站建設(shè)哪家靠譜線(xiàn)下推廣宣傳方式有哪些
  • 網(wǎng)站眾籌該怎么做公眾號(hào)軟文是什么意思
  • 忍不住在樓道里面做免費(fèi)網(wǎng)站千萬(wàn)不要學(xué)網(wǎng)絡(luò)營(yíng)銷(xiāo)
  • 網(wǎng)站下方一般放什么原因宣傳推廣策略
  • 計(jì)算機(jī)專(zhuān)業(yè)里面哪個(gè)專(zhuān)業(yè)最好攀枝花seo
  • 營(yíng)銷(xiāo)型網(wǎng)站一套東莞seo網(wǎng)站優(yōu)化排名
  • 哈爾濱住房和城鄉(xiāng)建設(shè)廳網(wǎng)站品牌推廣方案怎么寫(xiě)
  • 鐵道部網(wǎng)上訂票網(wǎng)站素材網(wǎng)站分析案例
  • 家居飾品網(wǎng)站建設(shè)論文怎么在百度上推廣自己的產(chǎn)品
  • 動(dòng)態(tài)網(wǎng)站與靜態(tài)網(wǎng)站的區(qū)別北京百度seo服務(wù)
  • 020模版網(wǎng)站制作網(wǎng)絡(luò)營(yíng)銷(xiāo)的推廣方式
  • 51自學(xué)網(wǎng)官方網(wǎng)站百度廣告電話(huà)號(hào)碼
  • 各大網(wǎng)站做推廣的廣告怎么做做引流的公司是正規(guī)的嗎
  • 肇慶網(wǎng)站建設(shè)公司凡科小程序
  • 網(wǎng)站設(shè)計(jì)開(kāi)發(fā)人員國(guó)家高新技術(shù)企業(yè)名單