1. 程式人生 > >撩課-Web大前端每天5道面試題-Day22

撩課-Web大前端每天5道面試題-Day22

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的值作為第一個引數。