撩課-Web大前端每天5道面試題-Day22
阿新 • • 發佈:2018-12-31
1.mvvm和mvc區別?它和其它框架(jquery)的區別是什麼?哪些場景適合?
mvc和mvvm其實區別並不大。
都是一種設計思想。
主要就是mvc中Controller演變成mvvm中的viewModel。
mvvm主要解決了mvc中大量的DOM 操作使頁面渲染效能降低,
載入速度變慢,影響使用者體驗。
區別:
vue資料驅動,
通過資料來顯示檢視層而不是節點操作。
場景:
資料操作比較多的場景,更加便捷
2.vue的優點是什麼?
低耦合。 檢視(View)可以獨立於Model變化和修改, 一個ViewModel可以繫結到不同的"View"上, 當View變化的時候Model可以不變, 當Model變化的時候View也可以不變。 可重用性。 你可以把一些檢視邏輯放在一個ViewModel裡面, 讓很多view重用這段檢視邏輯。 獨立開發。 開發人員可以專注於業務邏輯和資料的開發(ViewModel), 設計人員可以專注於頁面設計。 可測試。 介面素來是比較難於測試的, 而現在測試可以針對ViewModel來寫。
3.vue.cli中怎樣使用自定義的元件?有遇到過哪些問題嗎?
第一步: 在components目錄新建你的元件檔案(indexPage.vue), script一定要export default{} 第二步: 在需要用的頁面(元件)中匯入: import indexPage from '@/components/indexPage.vue' 第三步: 注入到vue的子元件的components屬性上面,components:{indexPage} 第四步: 在template檢視view中使用, 例如有indexPage命名, 使用的時候則index-page
4.請列舉出3個Vue中常用的生命週期鉤子函式?
created: 例項已經建立完成之後呼叫, 在這一步,例項已經完成資料觀測, 屬性和方法的運算, watch/event事件回撥. 然而, 掛載階段還沒有開始, $el屬性目前還不可見 mounted: el被新建立的 vm.$el 替換, 並掛載到例項上去之後呼叫該鉤子。 如果 root 例項掛載了一個文件內元素, 當 mounted 被呼叫時 vm.$el 也在文件內。 activated: keep-alive元件啟用時呼叫
5.vue如何自定義一個過濾器?
html程式碼: <div id="app"> <input type="text" v-model="msg" /> {{msg| capitalize }} </div> JS程式碼: var vm=new Vue({ el:"#app", data:{ msg:'' }, filters: { capitalize: function (value) { if (!value) return '' value = value.toString() return value.charAt(0).toUpperCase() + value.slice(1) } } }) 全域性定義過濾器 Vue.filter('capitalize', function (value) { if (!value) return '' value = value.toString() return value.charAt(0).toUpperCase() + value.slice(1) }) 過濾器接收表示式的值 (msg) 作為第一個引數。 capitalize 過濾器將會收到 msg的值作為第一個引數。