部落格說明
1、請你講一下js監聽物件屬性的改變具體是怎麼實現的,它們各自有什麼特點?
object.defineproperty(user,'name', })
缺點:如果id不在user物件中,則不能監聽id的變化
var user = new proxy({}, })
這樣即使有屬性在user中不存在,通過user.id來定義也同樣可以這樣監聽這個屬性的變化
2、如果要畫一條0.5px的線,你會怎麼去實現呢?講講你的方法
3、**css3中的content-box和border-box的區別
他們二者有什麼區別呢?
content-box是先根據設定的樣式確定元素content的寬高,有border和padding的情況下再額外增加盒子的寬高,內容寬高不受影響,設定多少就是多少。
border-box是先根據設定的樣式固定盒子的寬高,如果有border和padding的情況下,再根據盒子的寬高減去border或者padding,內容的寬高會受到影響,會被減去border或者padding。
4、display:none;visibility:hidden;和opacity:0;的區別
它們都可以讓元素隱藏掉,但是它們之間還是有區別的
5、狀態碼301,302,304不同
301表示永久重定向(301 moved permanently),表示請求的資源分配了新url,以後應使用新url。
302表示臨時性重定向(302 found),請求的資源臨時分配了新url,本次請求暫且使用新url。302與301的區別是,302表示臨時性重定向,重定向的url還有可能還會改變。
303 表示請求的資源路徑發生改變,使用get方法請求新url。她與302的功能一樣,但是明確指出使用get方法請求新url。
304 not modified
客戶端傳送附帶條件的請求時(if-matched,if-modified-since,if-none-match,if-range,if-unmodified-since任乙個)伺服器端允許請求訪問資源,但因發生請求未滿足條件的情況後,直接返回304modified(伺服器端資源未改變,可直接使用客戶端未過期的快取)。
304狀態碼返回時,不包含任何響應的主體部分。304雖然被劃分在3xx類別中,但是和重定向沒有關係。
6、vue的v-model的原理,vue例項是怎麼拿到data屬性的
在vue中v-model這個語法糖能夠很方便的實現表單和資料之間的繫結,v-model實現的原理封裝了一些邏輯例如:在input上繫結message,並通過input事件獲取當前事件的target.value,並賦值給message。 使用v-model的元件會自動監聽input事件,並把這個input事件所攜帶的值,傳遞給v-model所繫結的屬性。這樣元件內部的值就給到了父元件中
7、css動畫,transition和animation,哪乙個效能更好
其主要區別在於:transition需要觸發乙個事件才會隨著時間改變其css屬性;animation在不需要觸發任何事件的情況下,也可以顯式的隨時間變化來改變元素css屬性,達到一種動畫的效果
transition是使乙個或多個屬性值產生過渡效果,animation則作用於元素本身,強調流程與控制,是關鍵幀動畫的範疇。簡單的效果可以用animation,複雜的或想要更自由地掌控應該選擇transition。我認為transition會更佔資源一些。
8、vue-router 中hash模式和history模式的區別
hash原理
比如在用超連結製作錨點跳轉的時候,就會發現,url後面跟了"#id",hash值就是url中從"#"號開始到結束的部分。hash值變化瀏覽器不會重新發起請求,但是會觸發window.hashchange
事件,假如我們在hashchange事件中獲取當前的hash值,並根據hash值來修改頁面內容,則達到了前端路由的目的。
history原理
history模式原理可以這樣理解,首先我們要改造我們的超連結,給每個超連結增加onclick方法,阻止預設的超連結跳轉,改用history.pushstate
或history.replacestate
來更改瀏覽器中的url,並修改頁面內容。由於通過history的api調整,並不會向後端發起請求,所以也就達到了前端路由的目的
koa和express的區別,以及koa中間鍵的原理
9、用js實現乙個sleep函式
//方法一
function sleep1(ms,callback)
sleep1(1000,()=>)
//方法二
function sleep2(ms))
}sleep2(2000).then(()=>)
//方法三
function sleep3(ms))
}async function init(
await sleep3(3000)
)init().then(()=>)
10、bootstrap實現響應式布局原理
bootstrap的官方解釋:bootstrap提供了一套響應式、移動裝置優先的流式柵格系統,隨著螢幕或視口(viewport)尺寸的增加,系統會自動分為做12列。
11、瀏覽器的重排和重繪是什麼意思?重繪的觸發條件?如何避免重繪重排?
當 dom 元素的屬性發生變化 (如 color) 時, 瀏覽器會通知 render 重新描繪相應的元素, 此過程稱為 repaint。
如果該次變化涉及元素布局 (如 width), 瀏覽器則拋棄原有屬性, 重新計算並把結果傳遞給 render 以重新描繪頁面元素, 此過程稱為 reflow
減少重繪重排
1.分離讀寫操作
2.樣式集中改變
可以新增乙個類,樣式都在類中改變
3.可以使用absolute脫離文件流。
4.使用 display:none ,不使用 visibility,也不要改變 它的 z-index
5.能用css3實現的就用css3實現。
跨域問題
jsonp
hash
postmessage(html5)
websocket
cors(支援跨域通訊的ajax)
cors背後的思想,就是使用自定義的http頭部讓瀏覽器與伺服器進行溝通,從而決定請求或響應是應該成功,還是應該失敗。
同源策略
url說明
是否允許通訊
同一網域名稱下
允許同一網域名稱下不同資料夾
允許同一網域名稱,不同埠
不允許同一網域名稱,不同協議
不允許網域名稱和網域名稱對應ip
不允許主域相同,子域不同
不允許同一網域名稱,不同二級網域名稱(同上)
不允許(cookie這種情況下也不允許訪問)
不同網域名稱
不允許
如何產生閉包
當乙個巢狀的內部(子)函式引用了巢狀的外部(父)函式的變數(函式)時,產生閉包
http 2.0 給我們帶了很多新的特性,簡單總結一下:
感謝
淺述函式防抖和函式節流以及勤勞的自己,個人部落格,github
前端面試題 (一)
此處省略一萬個字表達我的心情.通常當滑鼠滑動到元素上的時候顯示 alt是 get方法 傳送乙個請求來取得伺服器上的某一資源 post方法 向url指定的資源提交資料或附加新的資料 put方法 跟post方法很像,也是想伺服器提交資料。但是,它們之間有不同。put指定了資源在伺服器上的位置,而post...
前端面試題
sprites是什麼和為什麼要使用他們?css 精靈 把一堆小的整合到一張大的上,減輕伺服器對的請求數量 有可能替代sprites的方法是什麼?svg圖示,字型圖示,字元編碼等等。1 在div排版的時候,假設現在是100px的寬,我在盒子左側用padding left留個10px的白,div就撐開了...
前端面試題
行內元素有哪些?塊級元素有哪些?空 void 元素有哪些?link和 import的區別是?常見相容性問題?含移動端 html5的離線儲存?描寫一段語義化的html 吧 html5的form如何關閉自動完成功能?什麼是閉包 closure 為什麼要用?localstorage和sessionstor...