知識點記錄


## 簡述ES6的新特性
*Default Parameters(默認參數) in ES6
*Template Literals (模板文本)in ES6
*Multi-line Strings (多行字符串)in ES6
*Destructuring Assignment (解構賦值)in ES6
*Enhanced Object Literals (增強的對象文本)in ES6
*Arrow Functions (箭頭函數)in ES6
*Promises in ES6
*Block-Scoped Constructs Let and Const(塊作用域構造Let and Const)
*Classes(類) in ES6
*Modules(模塊) in ES6

## Koa 與 Express 比較
1. **語法區別**

experss 異步使用 回調
koa1 異步使用 generator + yeild
koa2 異步使用 await/async

2. **中間件區別**

koa采用洋蔥模型,進行順序執行,出去反向執行,支持context傳遞數據
express本身無洋蔥模型,需要引入插件,不支持context
express的中間件中執行異步函數,執行順序不會按照洋蔥模型,異步的執行結果有可能被放到最后,response之前。
這是由於,其中間件執行機制,遞歸回調中沒有等待中間件中的異步函數執行完畢,就是沒有await中間件異步函數

3. **集成度區別**

express 內置了很多中間件,集成度高,使用省心,
koa 輕量簡潔,容易定制

## 什么是服務端渲染,服務端渲染的優點
***服務端渲染***:在早期的時候,由於頁面比較簡單,前后端分離還沒有做的比較完善,所以當時一般頁面渲染還是在服務端完成html文件的拼裝,然后瀏覽器接收到這個文件,就可以直接解析展示。
如今前端頁面的復雜性提高,前端已經不再僅僅是普通的頁面展示了,現在前端頁面功能更加完善,也更加復雜。同時伴隨着ajax的興起,使得現在越來越崇尚前后端分離的開發方式。后端不再提供完整的html頁面,而是提供一些API使得前端可以獲取需要的json數據,然后前端拿到數據后在前端完成html頁面的拼裝,然后展示在瀏覽器上,這就是***客戶端渲染***。 
**優點**
1.*前端耗時少*。因為后端拼接完了html,瀏覽器只需要直接渲染出來。
2.*有利於SEO*。因為在后端有完整的html頁面,所以爬蟲更容易爬取獲得信息,更有利於seo。
3.*無需占用客戶端資源*。即解析模板的工作完全交由后端來做,客戶端只要解析標准的html頁面即可,這樣對於
4.*客戶端的資源占用更少*,尤其是移動端,也可以更省電。
5.*后端生成靜態化文件*。即生成緩存片段,這樣就可以減少數據庫查詢浪費的時間了,且對於數據變化不大的頁面非常高效 。
**缺點**:
1.*不利於前后端分離,開發效率低*。使用服務器端渲染,則無法進行分工合作,則對於前端復雜度高的項目,不利於項目高效開發。另外,如果是服務器端渲染,則前端一般就是寫一個靜態html文件,然后后端再修改為模板,這樣是非常低效的,並且還常常需要前后端共同完成修改的動作; 或者是前端直接完成html模板,然后交由后端。另外,如果后端改了模板,前端還需要根據改動的模板再調節css,這樣使得前后端聯調的時間增加。
2.*占用服務器端資源*。即服務器端完成html模板的解析,如果請求較多,會對服務器造成一定的訪問壓力。而如果使用前端渲染,就是把這些解析的壓力分攤了前端,而這里確實完全交給了一個服務器。

## React 組件間信息傳遞
1.父組件向子組件傳值:父組件通過屬性進行傳遞,子組件通過props獲取
2.子組件向父組件傳值:觸發父組件傳給子組件的函數傳值
3.兄弟組件傳值:可以用上面兩種方法一點一點方法傳給相同父組件在傳下去
                使用context傳遞數據
                利用redux傳遞數據

## 為什么有時連續多次setState只有一次生效?
原因就是 React會批處理機制中存儲的多個 setState進行合並,來看下 React源碼中的 _assign函數,類似於 Object的 assign:
React會對多次連續的 setState進行合並,如果你想立即使用上次 setState后的結果進行下一次 setState,可以讓 setState 接收一個函數而不是一個對象。這個函數用上一個 state 作為第一個參數,將此次更新被應用時的 props 做為第二個參數。

## React狀態管理工具都有哪些?redux actionCreator都有什么?
一種是將Redux進一步封裝的如dva、refrect、refast等,二是采用observable的方案如MobX、dob
actionCreator就是定義個函數然后傳入一個數據並返回一個帶有action對象,然后供組件使用


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM