某UI萌妹子想入坑,特整理了一份初級前端高頻面試題。
自學前端在剛入門時面試是最艱難的階段,本章內容都是從各大平臺網站彙總過來的,不包含各類源碼知識,不至於出現不懂的內容。css
MVVM是Model-View-ViewModel的縮寫。MVVM是一種設計思想。Model 層表明數據模型,也能夠在Model中定義數據修改和操做的業務邏輯;View 表明UI 組件,它負責將數據模型轉化成UI 展示出來,ViewModel 是一個同步View 和 Model的對象。前端
在MVVM架構下,View 和 Model 之間並無直接的聯繫,而是經過ViewModel進行交互,Model 和 ViewModel 之間的交互是雙向的, 所以View 數據的變化會同步到Model中,而Model 數據的變化也會當即反應到View 上。vue
ViewModel 經過雙向數據綁定把 View 層和 Model 層鏈接了起來,而View 和 Model 之間的同步工做徹底是自動的,無需人爲干涉,所以開發者只需關注業務邏輯,不須要手動操做DOM, 不須要關注數據狀態的同步問題,複雜的數據狀態維護徹底由 MVVM 來統一管理。node
mvc和mvvm其實區別並不大。都是一種設計思想。主要就是mvc中Controller演變成mvvm中的viewModel。mvvm主要解決了mvc中大量的DOM 操做使頁面渲染性能下降,加載速度變慢,影響用戶體驗。jquery
區別:vue數據驅動,經過數據來顯示視圖層而不是節點操做。
場景:數據操做比較多的場景,更加便捷webpack
最多見方法es6
聲明式(標籤跳轉) 編程式( js跳轉)web
例若有indexPage命名,使用的時候則index-page面試
webpack中提供了require.ensure()來實現按需加載。之前引入路由是經過import 這樣的方式引入,改成const定義的方式進行引入。vue-router
不進行頁面按需加載引入方式:import home from '../../common/home.vue'
進行頁面按需加載的引入方式:const home = r => require.ensure( [], () => r (require('../../common/home.vue')))
(1)vuex是什麼?怎麼使用?哪一種功能場景使用它?
vue框架中狀態管理。在main.js引入store,注入。新建一個目錄store,….. export 。場景有:單頁應用中,組件之間的狀態。音樂播放、登陸狀態、加入購物車
(2)vuex有哪幾種屬性?
有五種,分別是 State、 Getter、Mutation 、Action、 Module
vuex的Getter特性
vuex的Mutation特性
v-show指令是經過修改元素的display的CSS屬性讓其顯示或者隱藏
v-if指令是直接銷燬和重建DOM達到讓元素顯示和隱藏的效果
將當前組件的<style>
修改成<style scoped>
<keep-alive></keep-alive>
包裹動態組件時,會緩存不活動的組件實例,主要用於保留組件狀態或避免從新渲染。
1)採用ES6的import ... from ...語法或CommonJS的require()方法引入組件
2)對組件進行註冊,代碼以下
// 註冊 Vue.component('my-component', { template: '<div>A custom component!</div>' })
3)使用組件<my-component></my-component>
提供一個在頁面上已存在的 DOM 元素做爲 Vue 實例的掛載目標.能夠是 CSS 選擇器,也能夠是一個 HTMLElement 實例
採用ES6的import ... from ...語法或CommonJS的require()方法引入插件
使用全局方法Vue.use( plugin )使用插件,能夠傳入一個選項對象Vue.use(MyPlugin, { someOption: true })
vue-router模塊的router-link組件。
在router目錄下的index.js文件中,對path屬性加上/:id。
使用router對象的params.id。
總共分爲8個階段建立前/後,載入前/後,更新前/後,銷燬前/後。
(1)、什麼是vue生命週期
答: Vue 實例從建立到銷燬的過程,就是生命週期。也就是從開始建立、初始化數據、編譯模板、掛載Dom→渲染、更新→渲染、卸載等一系列過程,咱們稱這是 Vue 的生命週期。
(2)、vue生命週期的做用是什麼
答:它的生命週期中有多個事件鉤子,讓咱們在控制整個Vue實例的過程時更容易造成好的邏輯。
(3)、vue生命週期總共有幾個階段
答:能夠總共分爲8個階段:建立前/後, 載入前/後,更新前/後,銷燬前/銷燬後
(4)、第一次頁面加載會觸發哪幾個鉤子
答:第一次頁面加載時會觸發 beforeCreate, created, beforeMount, mounted 這幾個鉤子
(5)、DOM 渲染在 哪一個週期中就已經完成
答:DOM 渲染在 mounted 中就已經完成了。
(6)、簡單描述每一個週期具體適合哪些場景
答:生命週期鉤子的一些使用方法:
v-if:判斷是否隱藏;v-for:數據循環;v-bind:class:綁定一個屬性;v-model:實現雙向綁定
解析.vue文件的一個加載器。
用途:js能夠寫es六、style樣式能夠scss或less、template能夠加jade等
答:css的預編譯。
使用步驟:
特性:
能夠用變量,例如($變量名稱=值);
能夠用混合器,例如()
能夠嵌套
當有相同標籤名的元素切換時,須要經過 key 特性設置惟一的值來標記以讓 Vue 區分它們,不然 Vue 爲了效率只會替換相同標籤內部的內容。
當 Vue 處理指令時,v-for 比 v-if 具備更高的優先級,經過v-if 移動到容器元素,不會再重複遍歷列表中的每一個值。取而代之的是,咱們只檢查它一次,且不會在 v-if 爲否的時候運算 v-for。
Vue在 頁面上渲染的節點,及其子節點稱爲「虛擬節點 (Virtual Node)」,簡寫爲「VNode」。「虛擬 DOM」是由 Vue 組件樹創建起來的整個 VNode 樹的稱呼。
vue實現響應式並非數據發生變化後dom當即變化,而是按照必定的策略來進行dom更新。
$nextTick是在下次 DOM 更新循環結束以後執行延遲迴調,在修改數據以後使用 $nextTick,則能夠在回調中獲取更新後的 DOM
ref 被用來給元素或子組件註冊引用信息。引用信息將會註冊在父組件的 $refs 對象上。若是在普通的 DOM 元素上使用,引用指向的就是 DOM 元素;若是用在子組件上,引用就指向組件實例。
使用 babel-polyfill
插件
相同點:
不一樣點:
相同點:
不一樣點:
優勢:前端專門負責前端頁面和特效的編寫,後端專門負責後端業務邏輯的處理,前端追求的是頁面美觀、頁面流暢、頁面兼容等。後端追求的是三高(高併發、高可用、高性能)讓他們各自負責各自的領域,讓專業的人負責處理專業的事情,提升開發效率
缺點:
歡迎關注公衆號「前端進階課」認真學前端,一塊兒進階。