天天看點

vue @input帶參數_vue面試題

vue @input帶參數_vue面試題

1,對于Vue了解多少,什麼是Vuex,VueRouter

vuex為狀态管理,它集中存儲管理應用的所有元件的狀态,可以了解成一個全局倉庫

VueRouter是路由(spa)單頁面應用的方式

為什麼通過vuex的motution修改state中的參數就不會報錯,而直接更改state中的參數就會報錯

vue 2取消冒泡全部$emit 用vuex 定義全局state元件修改state 父元件通路state值

2,vue中的v-show和v-if是做什麼用的,兩者差別是什麼

v-if 是“真正的”條件渲染,因為它會確定在切換過程中條件塊内的事件監聽器和子元件适當地被銷毀和重建。

v-if 也是惰性的:如果在初始渲染時條件為假,則什麼也不做——直到條件第一次變為真時,才會開始渲染條件塊。

相比之下, v-show 就簡單得多——不管初始條件是什麼,元素總是會被渲染,并且隻是簡單地基于 CSS 進行切換。

一般來說, v-if 有更高的切換開銷,而 v-show 有更高的初始渲染開銷。是以,如果需要非常頻繁地切換,則使用 v-show 較好;如果在運作時條件不太可能改變,則使用 v-if 較好。

3,vue中父元件如何觸發子元件的函數,子元件如何觸發父元件的函數

父元件中擷取子元件函數:$children、$refs

子元件中擷取父元件函數:$on

4,vue-router有哪幾種導航鈎子

有多種方式可以在路由導航發生時執行鈎子:

1.全局鈎子

2.單個路由獨享的

3.元件級的

5,vue頁面的生命周期?(2+)

1. beforeCreate

2. created

3. beforeMount

4. mounted

5. beforeUpdate

6. updated

7. activated

8. deactivated

9. beforeDestroy

10.destroyed

6,mvvm架構是什麼?它和其他架構(jquery)的差別是什麼?哪些場景适合?

一個model+view+viewModel架構,資料模型model,viewModel連接配接兩個 差別:vue資料驅動,通過資料來顯示視圖層而不是節點操作。

場景:資料操作比較多的場景,更加便捷

7,自定義指令(v-check、v-focus)的方法有哪些?它有哪些鈎子函數?還有哪些鈎子函數參數?

全局定義指令:在vue對象的directive方法裡面有兩個參數,一個是指令名稱,另外一個是函數。元件内定義指令:directives 鈎子函數:bind(綁定事件觸發)、inserted(節點插入的時候觸發)、update(元件内相關更新) 鈎子函數參數:el、binding

8,active-class是哪個元件的屬性?嵌套路由怎麼定義?

vue-router子產品的router-link元件。

怎麼定義vue-router的動态路由?怎麼擷取傳過來的動态參數?

在router目錄下的index.js檔案中,對path屬性加上/:id。 使用router對象的params.id

9,v-model是什麼?怎麼使用? vue中标簽怎麼綁定事件?

可以實作雙向綁定,指令(v-class、v-for、v-if、v-show、v-on)。

vue的model層的data屬性。綁定事件:<input @click=doLog() />

10,axios是什麼?怎麼使用?描述使用它實作登入功能的流程?

請求背景資源的子產品。npm install axios -S裝好,

然後發送的是跨域,需在配置檔案中config/index.js進行設定。

背景如果是Tp5則定義一個資源路由。js中使用import進來,

然後.get或.post。傳回在.then函數中如果成功,

失敗則是在.catch函數中

11,Vue的雙向資料綁定原理是什麼?

vue.js 是采用資料劫持結合釋出者-訂閱者模式的方式,通過Object.defineProperty()來劫持各個屬性的setter,getter,在資料變動時釋出消息給訂閱者,觸發相應的監聽回調。

具體步驟:

  • 第一步:需要observe的資料對象進行遞歸周遊,包括子屬性對象的屬性,都加上 setter和getter

這樣的話,給這個對象的某個值指派,就會觸發setter,那麼就能監聽到了資料變化

  • 第二步:compile解析模闆指令,将模闆中的變量替換成資料,然後初始化渲染頁面視圖,并将每個指令對應的節點綁定更新函數,添加監聽資料的訂閱者,一旦資料有變動,收到通知,更新視圖
  • 第三步:Watcher訂閱者是Observer和Compile之間通信的橋梁,主要做的事情是:

1、在自身執行個體化時往屬性訂閱器(dep)裡面添加自己

2、自身必須有一個update()方法

3、待屬性變動dep.notice()通知時,能調用自身的update()方法,并觸發Compile中綁定的回調,則功成身退。

  • 第四步:MVVM作為資料綁定的入口,整合Observer、Compile和Watcher三者,通過Observer來監聽自己的model資料變化,通過Compile來解析編譯模闆指令,最終利用Watcher搭起Observer和Compile之間的通信橋梁,達到資料變化 -> 視圖更新;視圖互動變化(input) -> 資料model變更的雙向綁定效果。

12,請詳細說下你對vue生命周期的了解?

總共分為8個階段建立前/後,載入前/後,更新前/後,銷毀前/後。

建立前/後: 在beforeCreated階段,vue執行個體的挂載元素$el和資料對象data都為undefined,還未初始化。在created階段,vue執行個體的資料對象data有了,$el還沒有。

載入前/後:在beforeMount階段,vue執行個體的$el和data都初始化了,但還是挂載之前為虛拟的dom節點,data.message還未替換。在mounted階段,vue執行個體挂載完成,data.message成功渲染。

更新前/後:當data變化時,會觸發beforeUpdate和updated方法。

銷毀前/後:在執行destroy方法後,對data的改變不會再觸發周期函數,說明此時vue執行個體已經解除了事件監聽以及和dom的綁定,但是dom結構依然存在

13,請說下封裝 vue 元件的過程?

首先,元件可以提升整個項目的開發效率。能夠把頁面抽象成多個相對獨立的子產品,解決了我們傳統項目開發:效率低、難維護、複用性等問題。

然後,使用Vue.extend方法建立一個元件,然後使用Vue.component方法注冊元件。子元件需要資料,可以在props中接受定義。而子元件修改好資料後,想把資料傳遞給父元件。可以采用emit方法。

14,vue-loader是什麼?使用它的用途有哪些?

解析.vue檔案的一個加載器,跟template/js/style轉換成js子產品。

用途:js可以寫es6、style樣式可以scss或less、template可以加jade等

15,vuex有哪幾種屬性?

有五種,分别是 State、 Getter、Mutation 、Action、 Module

繼續閱讀