關於Vue.js面試題匯總
1、vue與react的對比,如何選型?從性能,生態圈,數據量,數據的傳遞上,作比較
(1)React 和 Vue 有許多相似之處,它們都有:
使用 Virtual DOM
提供了響應式(Reactive)和組件化(Composable)的視圖組件。
將注意力集中保持在核心庫,伴隨於此,有配套的路由和負責處理全局狀態管理的庫。
(2)性能:
到目前為止,針對現實情況的測試中,Vue 的性能是優於 React 的。
(3)生態圈
Vue.js: ES6+Webpack+unit/e2e+Vue+vue-router+單文件組件+vuex+iVew
React: ES6+Webpack+Enzyme+React+React-router+Redux
(4)什麼時候選擇Vue.js
如果你喜歡用(或希望能夠用)模板搭建應用,請使用Vue
如果你喜歡簡單和「能用就行」的東西,請使用Vue
如果你的應用需要儘可能的小和快,請使用Vue
如果你計劃構建一個大型應用程序,請使用React
如果你想要一個同時適用於Web端和原生App的框架,請選擇React
如果你想要最大的生態圈,請使用React
詳細參考:
對比其他框架 — Vue.jsReact 還是 Vue: 你應該選擇哪一個Web前端框架?2、vue slot是做什麼的?
簡單來說,假如父組件需要在子組件內放一些DOM,那麼這些DOM是顯示、不顯示、在哪個地方顯示、如何顯示,就是slot分發負責的活。
詳細參考:
組件 — Vue.js3、vue和angular的優缺點以及適用場合?
參見:《 在選擇框架的時候要從哪方面入手》一題
4、vue路由實現原理?
以官方倉庫下 examples/basic 基礎例子來一點點具體分析整個流程。
和流程相關的主要需要關注點的就是 components 、 history 目錄以及 create-matcher.js 、 create-route-map.js、index.js 、 install.js。
從入口,作為插件,實例化 VueRouter,實例化 History,實例化 Vue,defineReactive 定義 _route,router-link 和 router-view 組件等幾個方面展開分析
詳細參見:
vue-router 源碼分析-整體流程5、你們vue項目是打包了一個js文件,一個css文件,還是有多個文件?
根據vue-cli腳手架規範,一個js文件,一個CSS文件。
詳細參見:
Vue2.0 框架配置:vue-cli + vue-router + vuexDDFE:vue-cli#2.0 webpack 配置分析6、vue遇到的坑,如何解決的?
Vue1.0升級2.0有很多坑: 生命周期;路由中引入靜態js,全局組件,全局變數,全局function;v-for循環的key,value值互換了位置,還有track-by;filter過濾器;遍曆數組時,key值不能做model;父子通信等。
詳細參見:
vue2.0開發過程中踩的坑! - CSDN博客人類身份驗證 - SegmentFaultvuejs前端開發的一些小坑 - 推酷7、vue的雙向綁定的原理,和angular的對比
在不同的 MVVM 框架中,實現雙向數據綁定的技術有所不同。
AngularJS 採用「臟值檢測」的方式,數據發生變更後,對於所有的數據和視圖的綁定關係進行一次檢測,識別是否有數據發生了改變,有變化進行處理,可能進一步引發其他數據的改變,所以這個過程可能會循環幾次,一直到不再有數據變化發生後,將變更的數據發送到視圖,更新頁面展現。如果是手動對 ViewModel 的數據進行變更,為確保變更同步到視圖,需要手動觸發一次「臟值檢測」。
VueJS 則使用 ES5 提供的 Object.defineProperty() 方法,監控對數據的操作,從而可以自動觸發數據同步。並且,由於是在不同的數據上觸發同步,可以精確的將變更發送給綁定的視圖,而不是對所有的數據都執行一次檢測。
詳細參見:
Vue 雙向數據綁定原理分析8、vue-cli,腳手架
安裝:$ npm install -g vue-cli
使用:$ vue init <template-name> <project-name>
webpack配置詳解:
DDFE:vue-cli#2.0 webpack 配置分析9、Vue裡面router-link在電腦上有用,在安卓上沒反應怎麼解決?
Vue路由在Android機上有問題,babel問題,安裝babel polypill 插件解決。
推薦閱讀: