【考前必看】查漏補缺(一)

一、JS

1. 跨域原理

(1)JSONP跨域

原理:

通常爲了減輕 web 服務器的負載,我們把 JS、CSS、img 等靜態資源分離到另一臺獨立域名的服務器上,在 html 頁面中再通過相應的標籤從不同域名下加載靜態資源,而被瀏覽器允許。

JSONP 是通過動態 <script> 元素來使用的,使用時可以爲 src 屬性指定一個跨域 URL。這裏的 <script> 元素與 <img> 元素類似,都有能力不受限制地從其他域加載資源。因爲 JSONP 是有效的 JS 代碼,所以在請求完成後,即在 JSONP 響應加載到頁面中以後,就會立即執行。

原生實現:

優點:

  • 簡單易用。
  • 與圖像 Ping 相比,它的優點在於能夠直接訪問響應文本,支持在瀏覽器與服務器之間雙向通信。

不足:

  • JSONP 是從其他域中加載代碼執行。如果其他域不安全,很可能會在響應中夾帶一些惡意代碼。
  • 要確定 JSONP 請求是否失敗並不容易。雖然 HTML5 給 <script> 元素新增了一個 onerror 事件處理程序,但目前還沒有得到任何瀏覽器支持。爲此,開發人員不得不使用計時器檢測指定時間內是否接收到了響應。但就算這樣也不能盡如人意,畢竟不是每個用戶上網的速度和帶寬都一樣。

(2)跨域源資源共享(CORS,Cross-Origin Resource Sharing)

原理:

CORS 背後的基本思想,就是使用自定義的 HTTP 頭部讓瀏覽器與服務器進行溝通,從而決定請求或響應是應該成功,還是應該失敗。

比如一個簡單的 GET 或 POST 請求,它沒有自定義的頭部,而主體內容是 text/plain。在發送該請求時,需要給它附加一個額外的 Origin 頭部,其中包含請求頁面的源信息(協議、域名和端口),以便服務器根據這個頭部信息來決定是否給予響應。下面是 Origin 頭部的一個示例:

Origin:http://www.nczonline.net

如果服務器認爲這個請求可以接受,就在 Access-Control-Allow-Origin 頭部中回發相同的源信息(如果是公共資源,可以回發“*”)。例如:

Access-Control-Allow-Origin:http://www.nczonline.net

如果沒有這個頭部,或者有這個頭部但源信息不匹配,瀏覽器就會駁回請求。正常情況下,瀏覽器會處理請求。

注意:請求和響應都不包含 cookie 信息。

默認情況下,跨域請求不提供憑據(cookie、HTTP認證和客戶端 SSL 證明等)。通過將 withCredentials 屬性設置爲 true,可以指定某個請求應該發送憑據。如果服務器接受帶憑據的請求,會用下面的 HTTP 頭部來響應。

Access-Control-Allow-Credentials:true

如果發送的是帶憑據的請求,但服務器的響應中沒有包含這個頭部,那麼瀏覽器就不會把響應交給 JS(於是,responseText 中將是空字符串,status 的值爲0,而且會調用 onerror()事件處理程序)。

原生實現:

前端:

JAVA後臺:

(3)Node.js 實現跨域

 

二、CSS

1. 標準盒模型和 IE 盒模型

CSS中的盒子模型(Box model)分爲兩種:W3C 標準盒子模型和 IE 標準盒子模型。

標準模式下,一個塊的寬度 = width+padding(內邊距)+border(邊框)+margin(外邊距)。

怪異模式下,一個塊的寬度 = width+margin(外邊距) (即怪異模式下,width 包含了 padding 和 border)。

CSS3 box-sizing

box-sizing:content-box||border-box||inherit

  • box-sizing:content-box; 將採用標準模式的盒子模型標準
  • box-sizing:border-box; 將採用怪異模式的盒子模型標準
  • box-sizing:inherit; 規定應從父元素繼承 box-sizing 屬性的值

2. CSS3 transition 和 transform、translate 的區別

 


transition 屬性是用來控制過渡效果的。由於用 transform 能夠添加變換效果,但那個變換是瞬間突變的,如果我們想讓這個變化是平滑的、過渡型的,就需要用 transition 屬性來控制。

transition 屬性是一個速記屬性,有四個屬性:transition-property, transition-duration, transition-timing-function, and transition-delay。

注意: 始終需要指定 transition-duration 屬性,否則持續時間爲0,transition 不會有任何效果。

默認值: all 0 ease 0
繼承: no
版本: CSS3
JavaScript 語法: object.style.transition="width 2s"

語法:transition: property duration timing-function delay;

描述
transition-property 指定CSS屬性的name,transition效果
transition-duration transition效果需要指定多少秒或毫秒才能完成
transition-timing-function 指定transition效果的轉速曲線
transition-delay 定義transition效果開始的時候

三、計算機網絡

1. HTTP 2.0 的新特性

 

四、Vue

1. vue 3.0 相比於 2.0 的新特性?

http://www.sohu.com/a/258616419_99903057

(1)新建項目 vue-cli

(2)項目目錄結構變化:vue 3.0 默認項目目錄相比  2.0 精簡了很多

  • 移除了配置文件目錄, config 和 build 文件夾。
  • 移除了 static 文件夾,新增 public 文件夾,並且 index.html 移動到 public 中。
  • 在 src 文件夾中新增了 views 文件夾,用於分類 視圖組件 和 公共組件。

(3)對象式的組件聲明方式

vue2.0中的組件是通過聲明的方式傳入一系列option,和Type的結合需要通過一些裝飾器的方式來做,雖然能實現功能,但是比較麻煩。

vue3.0修改了組件的聲明方式,改成了類式的寫法,這樣使得和Type的結合變得很容易。

此外,vue的源碼也改用了Type來寫。其實當代碼的功能複雜之後,必須有一個靜態類型系統來做一些輔助管理,如React使用的Flow,Angular使用的Type。現在vue3.0也全面改用Type來重寫了,更是使得對外暴露的api更容易結合Type。靜態類型系統對於複雜代碼的維護確實很有必要。

(4)其他的更改

  • 支持自定義渲染器,從而使得weex可以通過自定義渲染器的方式來擴展,而不是直接fork源碼來改的方式。
  • 支持Fragment(多個根節點)和Protal(在dom其他部分渲染組建內容)組件,針對一些特殊的場景做了處理。
  • 基於treeshaking優化,提供了更多的內置功能。

2. vue 如何監測數據變化,即 computed 和 watch 的原理?

3. vue 修改 DOM 之後,如何使其生效?

五、其他

1. webpack 的配置文件

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章