前端學(xué)習(xí)記錄
1.nginx
- 代理:本地運(yùn)行的時(shí)候,vue框架可以幫我們進(jìn)行代理,不需要考慮跨域之類的問題,也便于書寫。
在項(xiàng)目打包運(yùn)行,部署測試、試生產(chǎn)、生產(chǎn)環(huán)境,vue框架的那些代理就不行了,我們需要脫離編輯器將代碼運(yùn)行起來,nginx就可以。 - 負(fù)載均衡:后端的服務(wù)會(huì)部署好幾個(gè),前端可以將他們代理到同一個(gè)api下,會(huì)有不同的分配策略(默認(rèn)應(yīng)該是按循序輪詢分配),就可以降低單一服務(wù)器的壓力,運(yùn)轉(zhuǎn)起來就快;但是如果部分服務(wù)壞了,在有的策略下有的接口就沒有辦法正常運(yùn)轉(zhuǎn),有的會(huì)策略下會(huì)跳過這個(gè)錯(cuò)誤的服務(wù)的正常分配。
dns可以解析同一個(gè)域名后面的不同ip,所以對于大型的前端(并發(fā)及其高的c端產(chǎn)品),前端部署可以用多個(gè)nginx對外設(shè)置成為一個(gè)域名,然后設(shè)置運(yùn)行的策略,會(huì)比較智能的將你轉(zhuǎn)到一個(gè)離你比較近、比較空閑的服務(wù)器。
2.跨域
- 接口跨域:后端解決,他們部署的時(shí)候nginx可以進(jìn)行處理;
- 本地文件的跨域:(直接運(yùn)行html文件讀取本地文件),前端可以選擇servez、nginx這些將他們發(fā)布成為服務(wù)然后進(jìn)行調(diào)用
3.前端發(fā)布更新
- 是否更到最新:找一個(gè)插件,直接記錄打包的時(shí)間戳,在測試環(huán)境這種需要頻繁更新的地方,直接在element里面看打包時(shí)間;
也可以手動(dòng)修改版本,但是事務(wù)繁雜的時(shí)候熱更新之類的,在敏捷的開發(fā)方式下,總會(huì)忘記自己修改版本號。
3.vue3與react開發(fā)的異同
react里面很多東西都要自己優(yōu)化,從vue轉(zhuǎn)react并不容易
- usememo 跟computed 功能相同
- useeffect 包含了數(shù)據(jù)監(jiān)聽(watch)與生命周期的鉤子的一些功能-onMounted onBeforeDestory update(監(jiān)聽值修改的時(shí)候會(huì)觸發(fā),每一次修改都會(huì)重新執(zhí)行一邊整個(gè)里面的副作用,如果是在里面定義的變量之類的會(huì)重新被賦值)
- useref在定義變量的時(shí)候,是同步的變量,用.current來獲取數(shù)據(jù),跟vue的useref大同小異,都可以用來獲取組件的ref,同時(shí)useref是解決上面的重新賦值的一種方法
- usestate 這個(gè)就是異步修改的變量,這里如果作為useeffect的依賴,變化的話就會(huì)引起update,useref的變化則不會(huì)
4.requestAnimationFrame
一個(gè)瀏覽器提供的方法,會(huì)在瀏覽器下一次渲染你之前調(diào)用,做js動(dòng)畫的時(shí)候會(huì)比settimeInterval要流暢,因?yàn)楹笳呤呛旰瘮?shù)到指定時(shí)間間隔之后還需要排隊(duì),就沒有辦法保證每一次的執(zhí)行時(shí)間是一樣的就會(huì)出現(xiàn)卡頓
每一次執(zhí)行都會(huì)生成一個(gè)標(biāo)識(shí)用于排隊(duì),執(zhí)行結(jié)束的就會(huì)釋放,所以要做持續(xù)的東西必須再每次執(zhí)行完成之后重新調(diào)用賦值
cancelAnimationFrame 取消的是準(zhǔn)備執(zhí)行動(dòng)畫
用法
let id=null;
function startAnimate(){
animate(){
id=requestAnimationFrame(animate)
}
id=requestAnimationFrame(animate)
};
function stopAnimate(){
cancelAnimation(id)
}

浙公網(wǎng)安備 33010602011771號