亂燉

1、客戶端渲染與服務端渲染的區別
  一、客戶端渲染:前端利用ajax等數據交互手段獲取服務端提供的數據以後,渲染到HTML頁面。
  優勢:靈活,真正的先後端分離,方便於先後臺各自更新維護;
  缺點: 對SEO不友好,增長了http請求次數,減緩了頁面加載速度。
  二、服務端渲染:在後端看來,頁面文件其實就是一個「字符串」,因此服務端徹底能夠在獲取到HTML文件的內容以後通過一些處理再返回給客戶端,也就說,服務端能夠將數據插入到HTML字符串中以後再返回給客戶端。
  優勢: 對SEO友好,減小了http請求次數,加速了頁面初次渲染速度;
  缺點: 不靈活,先後端耦合度過高。css

 

2、瀏覽器渲染頁面的流程
  一、瀏覽器會將HTML解析成一個DOM樹,DOM 樹的構建過程是一個深度遍歷過程:當前節點的全部子節點都構建好後纔會去構建當前節點的下一個兄弟節點。
  二、將CSS解析成 CSS Rule Tree 。
  三、根據DOM樹和CSSOM來構造Rendering Tree。注意:Rendering Tree 渲染樹並不等同於 DOM 樹,由於一些像 Header 或 display:none 的東西就不必放在渲染樹中了。
  四、有了Render Tree,瀏覽器已經能知道網頁中有哪些節點、各個節點的CSS定義以及他們的從屬關係。下一步操做稱之爲Layout,顧名思義就是計算出每一個節點在屏幕中的位置。
  五、再下一步就是繪製,即遍歷render樹,並使用UI後端層繪製每一個節點。
  擴展:(1)Reflow(迴流):瀏覽器要花時間去渲染,當它發現了某個部分發生了變化影響了佈局,那就須要倒回去從新渲染。
  出現迴流的緣由:(1)頁面初始化的時候(2)操做DOM時(3)某些元素的尺寸變了(4)css佈局屬性發生變化
  (2)Repaint(重繪):若是隻是改變了某個元素的背景顏色,文字顏色等,不影響元素周圍或內部佈局的屬性,將只會引發瀏覽器的repaint,重畫某一部分。
Reflow要比Repaint更花費時間,也就更影響性能。要儘可能避免過多的Reflow。再優化頁面渲染性能的時候,減小 reflow/repaint就是基本出發點。前端


3、企業爲何要用NodeJs(主要用於中間層)
  (1)高性能
  (2)易於修改和維護:用Node的方式來寫程序意味着這些程序是一些由管道鏈接成的小模塊構成的
  (3)開發效率高
  (4)並不適合用於大量計算ajax

相關文章
相關標籤/搜索