久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放AV片

<center id="vfaef"><input id="vfaef"><table id="vfaef"></table></input></center>

    <p id="vfaef"><kbd id="vfaef"></kbd></p>

    
    
    <pre id="vfaef"><u id="vfaef"></u></pre>

      <thead id="vfaef"><input id="vfaef"></input></thead>

    1. 站長資訊網(wǎng)
      最全最豐富的資訊網(wǎng)站

      25道初級Vue.js面試問題

      25道初級Vue.js面試問題

      1. 為什么Vue被稱為“漸進框架”?

      使用漸進式框架的代價很小,從而使現(xiàn)有項目(使用其他技術(shù)構(gòu)建的項目)更容易采用并遷移到新框架。 Vue.js 是一個漸進式框架,因為你可以逐步將其引入現(xiàn)有應用,而不必從頭開始重寫整個程序。

      Vue 的最基本和核心的部分涉及“視圖”層,因此可以通過逐步將 Vue 引入程序并替換“視圖”實現(xiàn)來開始你的旅程。

      由于其不斷發(fā)展的性質(zhì),Vue 與其他庫配合使用非常好,并且非常容易上手。這與 Angular.js 之類的框架相反,后者要求將現(xiàn)有程序完全重構(gòu)并在該框架中實現(xiàn)。

      2. Vue.js 中的聲明式渲染是什么?

      Vue.js 使渲染數(shù)據(jù)變得容易,并隱藏了內(nèi)部實現(xiàn)。例如下面的代碼:

      HTML

      <p id=”app”></p>

      JavaScript

      const greeting = “Hello there!”; const appp = document.getElementById(“app”); appp.innerText = greeting;

      上面的代碼段將在 ID 為 “app” 的 p 中顯示短語 “Hello there!”。代碼包含實現(xiàn)結(jié)果所需的所有步驟。首先選擇 ID 為 “app” 的 DOM 元素,然后用 innerText 屬性手動設置 p 的內(nèi)容。

      現(xiàn)在,讓我們看看在 Vue 中是怎么做的。

      Template

      <p id=”app”>{{ greeting }}</p>

      App

      new Vue({     data: {        greeting: ‘Hello There!’     },    el: ‘#app’ });

      我們在 Vue 程序中創(chuàng)建了一個名為 “greeting” 的數(shù)據(jù)屬性,但是只需要在 p 中用 mustache 語法輸入 “greeting” 即可,而不必關(guān)心內(nèi)部實現(xiàn)。我們聲明了 “greeting” 變量,其余的由 Vue 完成。這就是聲明式渲染的樣子。 Vue 隱藏并管理內(nèi)部信息。

      3. 你用哪個指令遍歷對象的屬性?

      要遍歷對象或數(shù)組,可以使用 v-for 指令。下面是一個例子:

      Template

      <p id="app">     <ul>       <li v-for="(value, key) in card">{{ key }} - {{ value }}</li>    </ul>  </p>

      App

      new Vue({   el: '#app',   data: {     card: {       name: 'John Doe',       age: 25,       city: 'New York',       country: 'US'     }   } });

      輸出

      • name – John Doe
      • age – 25
      • city – New York
      • country – US

      4. 給出模板,描述 Vue 程序的輸出。

      模板:

      {{title}}

      App:

      new Vue({      el: '#app',      data: {          title: 'Vue.js'      }  })

      上面的代碼將在 p 中輸出字符串 <h1 style="color: green;">Vue.js</h1>。之所以將整個標簽渲染為字符串,是因為 mustache 模板標簽 {{title}}將傳入的數(shù)據(jù)視為字符串,而不將其解析為可執(zhí)行代碼。這也有助于緩解把惡意代碼注入到頁面的 XSS 相關(guān)的問題 。這類似于在 JavaScript 中使用 elementSelector.innerText = text 語句。

      5. 如何在輸入框和數(shù)據(jù)屬性之間實現(xiàn)雙向數(shù)據(jù)綁定?

      要實現(xiàn)雙向數(shù)據(jù)綁定,可以使用 v-model 指令。 v-model 指令主要是語法糖:

      <input type="text" :value="nameInput" @keyup="nameInput = $event.target.value">

      在上面的語句中,每當觀察到 “keyup” 事件時,就會將名為 “nameInput” 的數(shù)據(jù)屬性設置為輸入框的值。同時,將輸入框的 value 屬性綁定到 “nameInput” 數(shù)據(jù)屬性。這樣在表單字段和數(shù)據(jù)屬性之間建立了雙向數(shù)據(jù)關(guān)系。

      v-model 可以做到這一點,并且比手動設置更有效地。要使用 v-model 復制上述效果,請再次在同一輸入框中輸入以下內(nèi)容:

      <input type="text" v-model="nameInput">

      需要注意的是,當實現(xiàn)雙向數(shù)據(jù)綁定時,使用的數(shù)據(jù)屬性被認為是事實上的來源。在 data 屬性上所做的任何更改都將優(yōu)先于 form 字段上的用戶輸入事件。

      6. 你如何捕獲元素上的點擊事件?

      可以使用 v-on:click 指令捕獲 Click 事件。該指令也可以用縮寫符號 @click 表示。這是一個例子:

      v-on:click 符號

      <a v-on:click=”clickHandler”>Launch!</a>

      @click 符號

      <a @click=”clickHandler”>Launch!</a>

      7. 什么是動態(tài) prop?

      當使用 v-bind 指令為 prop 分配值作為綁定到屬性的函數(shù)時,被稱為動態(tài) prop。例如以下組件的 tweet 屬性綁定到名為tweetText的數(shù)據(jù)屬性。這與靜態(tài)硬編碼值相反。這種綁定始終是單向的,這意味著數(shù)據(jù)可以從父組件流到子組件,而絕不會反過來。

      <TweetBox :tweet=”tweetText”>

      8. Vue.js 中的指令是什么?

      指令是一系列特殊屬性,你可以通過將其添加到模板 HTML 標記中來賦予它們特殊的響應功能。指令允許模板中的元素使用數(shù)據(jù)屬性、方法、計算或監(jiān)視的屬性和內(nèi)聯(lián)表達式根據(jù)定義的邏輯對更改做出反應。例如以下代碼使用 v-on 指令在組件上實現(xiàn) click 事件偵聽器。

      <SignUpButton v-on:click=”doSignup” />

      或者

      <SignUpButton @click=”doSignup” />

      在這個例子中,我們使用 v-if 指令基于名為 showButton 的數(shù)據(jù)屬性顯示或刪除元素與組件。指令以 v- 開頭來指示 Vue 特定的屬性。此規(guī)則的例外是 v-on 和 v-bind 的簡寫形式。

      <SignUpButton v-if=”showButton” />

      Vue 還允許定義自己的自定義指令。

      9. v-show 指令的用途是什么?

      v-show 指令允許有條件地顯示元素。在下面的代碼中,僅當 isDisplayed 數(shù)據(jù)屬性為 true 時,才會顯示該元素。

       <TweetBox v-show=”isDisplayed”>

      使用 v-show 指令時,可使用 CSS 的 display 屬性切換元素的可見性。

      10. v-show 與 v-if 指令有何不同?

      v-show 和 v-if 都用于有條件地顯示元素,而后者提供了條件渲染的真正實現(xiàn)。 v-show 只需切換 CSS 的 display 屬性即可顯示或隱藏元素,而 v-if 指令可創(chuàng)建或銷毀組件。每次顯示狀態(tài)更改時,代價通常會更大。

      另一方面,v-show 成本較低,因為它僅切換元素的CSS顯示屬性。所以如果必須經(jīng)常切換元素,則 v-show 會提供比 v-if 更好,更優(yōu)化的結(jié)果。

      就加載元素的初始渲染成本而言,v-if 不會渲染最初隱藏的元素的節(jié)點,而 v-show 會渲染其 CSS display 屬性被設置為 none 的元素。

      11. 對于作為元素實現(xiàn)的注釋框,我們希望使用戶能夠按下鍵盤上的Enter鍵,來將內(nèi)容提交給名為 “storeComment” 的方法。在代碼中對此進行演示。

      可以在任何元素上使用 v-on 指令來實現(xiàn)事件偵聽器。此外,v-on 還允許我們將按鍵修飾符用于 “enter”,“tab”,“esc”,“space” 等常見按鍵。這是一個例子:

      模板

      <textarea @keyup.enter="storeComment"></textarea>

      App

      new Vue({   el: '#app',   methods: {     storeComment(event) {      //access the value of the textarea box using event.target.value or       //              use v-model to bind to a data property     }   } });

      12. 如何在單頁 Vue 應用(SPA)中實現(xiàn)路由?

      可以通過官方的 vue-router 庫在用 Vue 構(gòu)建的 SPA 中進行路由。該庫提供了全面的功能集,其中包括嵌套路線、路線參數(shù)和通配符、過渡、HTML5 歷史與哈希模式和自定義滾動行為等功能。 Vue 還支持某些第三方路由器包。

      13. 使用 Vue 時調(diào)用 event.preventDefault() 的最佳方式是什么?

      在事件偵聽器上調(diào)用 event.preventDefault() 的最佳方式是將 .prevent 修飾符與 v-on 指令一起使用。這是一個例子:

      <a @click.prevent=”doSomethingWhenClicked”>Do Something</a>

      14. 什么是過濾器?

      過濾器是在 Vue 程序中實現(xiàn)自定義文本格式的一種非常簡單的方法。它們就像可以在表達式中通過管道傳遞(使用管道字符)以取得結(jié)果的運算符。下面是一個可以反轉(zhuǎn)文本字符串的過濾器示例:

      模板

      <p id="app">{{ title | reverseText }}</p> App new Vue({     el: '#app',     data: {       title: 'This is a title'     },     filters: {       reverseText(text) {         return text.split('').reverse().join('');       }     } });

      輸出

      eltit a si sihT

      在上面的例子中,我們創(chuàng)建了一個名為 reverseText 的過濾器,該過濾器反轉(zhuǎn)文本字符串并返回。這是一個簡單的函數(shù),接受輸入并返回處理后的輸出。通過在過濾器下聲明,它就可以成為可以在模板中使用的過濾器。

      在模板中,我們只是將 reverseText 過濾器通過管道傳遞到了想要在 mustache 標簽中顯示的數(shù)據(jù)變量。這樣可以將多個過濾器管道連接在一起。因此過濾器提供了一種非常優(yōu)雅的方式來處理文本。

      15. 如何動態(tài)地在元素上切換 CSS 類?

      Vue 允許我們綁定到 class 屬性。在下面的例子中,我們將 class 屬性綁定到一個對象,該對象允許使用 data 屬性切換類。

      模板

      <p :class=”{ pStyle : showp }”></p>

      App

      new Vue({     el: '#app',     data: {  showp: true     } });

      在上面的代碼中,只要數(shù)據(jù)屬性 showptrue,類名 pStyle 將應用于 p。

      16. 綁定 HTML 類時,該如何連接類?假設存在一個元素:Process。我們只希望使用名為 “isActive” 的數(shù)據(jù)屬性動態(tài)地切換 btnActive 類。

      這可以在綁定類時用 Array 來實現(xiàn)。以下是實現(xiàn)方法:

      模板

      <Button :class=”[‘btn’, ‘btnRed’, { btnActive : isActive }]”>Process</button>

      App

      new Vue({     el: '#app',     data: {       isActive: true     } });

      在上面的代碼段中,將串聯(lián)各個類的數(shù)組,并基于 isActive 數(shù)據(jù)屬性的值對對象中的表達式進行響應式評估。

      17. 什么是計算屬性?

      計算屬性是一類特殊函數(shù)的結(jié)果,當從屬屬性發(fā)生變化時,這些函數(shù)會自動進行計算。用它們代替內(nèi)聯(lián)表達式可以更好地表達復雜的邏輯,在模板中不能作為內(nèi)聯(lián)表達式合并。

      每個計算方法都可以在模板部分作為屬性使用。當從屬屬性更改時,計算方法將自動計算并緩存結(jié)果,這樣比使用普通方法更好。方法在訪問時將始終會重新計算,而如果自上一次計算和緩存階段以來該方法內(nèi)使用的屬性未發(fā)生更改,則計算的屬性將不會重新計算。

      需要注意的是,僅當方法中使用的屬性是響應性的(例如數(shù)據(jù)屬性)時,才考慮依賴關(guān)系的更改。

      這是一個演示計算屬性的簡單例子:

      模板

      <p id="app">   <input type="text" v-model="email" :class="{ invalid : isInvalid }"> </p>

      App

      const emailRegEx = /^(([^<>()[]\.,;:s@"]+(.[^<>()[]\.,;:s@"]+)*)|(".+"))@ (([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}])|(([a-zA-Z-0-9]+.)+[a-zA-Z]{2,}))$/  new Vue({     el: '#app',     data: {       email: ''     },     computed: {       isInvalid() {         return !emailRegEx.test(this.email);       }     } });

      在上面的代碼示例中,如果正則表達式測試針對電子郵件輸入框失敗,則 isValid 計算屬性將返回 true。如果電子郵件驗證程序認為輸入的值無效,就會看到文本框便為紅色(你必須創(chuàng)建一個名為 .invalid 的類,并將背景顏色屬性設置為紅色)。當用戶鍵入內(nèi)容時,將重新執(zhí)行計算的方法,并且在驗證格式之后,動態(tài)刪除無效的類。

      18. 如何確保在單文件組件中定義的 CSS 樣式僅應用于該組件,而不被用于其他組件?

      這可以通過樣式標簽上的 scoped 屬性來實現(xiàn)。在內(nèi)部 Vue 使用 PostCSS 插件為所有樣式元素分配唯一的數(shù)據(jù)屬性,然后使樣式針對這些唯一的元素。舉個例子:

      <template>     <p class=”title”>This is a title</p> </template> <style scoped>     .title {         font-family: sans-serif;         font-size: 20px; </style>

      19. 如何將數(shù)據(jù)從父組件傳遞到子組件?

      可以用作為組件中單向入口的 prop 把數(shù)據(jù)向下傳遞到子組件。這是一個例子:

      <template>     <p>       <contact-list-item v-for=”contact in contacts” :contact=”contact” />    </p> </template> <script>     import ContactListItem from ‘./ContactListItem’;     export default { name: ‘a(chǎn)ddress-book’, data: function() { return { contacts: [.....] } }, components: { ContactListItem } } </script>

      contact-list-item 上綁定的 prop “contact” 是一個入口,用于從用作子項的父組件接收數(shù)據(jù)。在 contact-list-item 組件中:

      <template>     <p>         <span>{{ contact.name }}</span>         <span>{{ contact.email }}</span>    </p> </template>   <script>     export default {      name: ‘contact-list-item’, props: [‘contact’]     } </script>

      在這里聲明了一個名為 “contact” 的 prop 引入數(shù)據(jù),然后可以直接在模板部分中顯示。

      20. 什么是組件?

      組件本質(zhì)上是 Vue 實例,它們封裝模板、邏輯和可選的本地響應性數(shù)據(jù)屬性,能夠提供可重新使用的自定義構(gòu)建元素。可重用性是構(gòu)建組件的核心。

      使用單文件組件構(gòu)建應用程序時,組件在擴展名為 .vue 的文件中定義。單文件組件包含三個部分:模板部分定義了該組件的 HTML 布局;腳本部分定義了數(shù)據(jù)、屬性和邏輯單元(如方法)并將內(nèi)容導出為 Vue 組件;還有一個樣式部分,用于定義組件的樣式表。單文件組件使用 Webpack 等模塊捆綁器進行編譯。

      21. 什么是生命周期hook?列出一些生命周期hook。

      Vue 實例(組件)從其初始化到銷毀和刪除都經(jīng)歷生命周期。在整個過程中,Vue 允許開發(fā)人員運行自定義函數(shù)的幾個階段。這些函數(shù)稱為生命周期 hook。以下是一些生命周期 hook 的列表:

      • created
      • mounted
      • updated
      • destroyed

      22. 什么是插槽(slot)?

      插槽允許你定義可以封裝和接受子 DOM 元素的元素。組件模板中的 <slot> </ slot> 元素作為通過組件標簽捕獲的所有DOM元素的出口。這是一個例子:

      Post.vue |實現(xiàn)插槽的組件

      <template>  <p class="hello">    <h3 class="title">{{title}}</h3>    <p class="content">      <slot></slot>    </p>  </p> </template>

      App.vue | 使用Post組件的App組件

      <template>  <p id="app">    <Post title="Hello from Vue!"> Vue 是用于構(gòu)建用戶界面的漸進框架。與其他框架不同,Vue從頭開始設計以逐漸采用。 核心庫僅集中在視圖層,并且很容易與其他庫或現(xiàn)有項目集成。另一方面,當與現(xiàn)代工具和支持庫結(jié)合使用時, Vue也完全能夠為復雜的單頁應用程序提供支持。    </Post>  </p> </template>

      在上面的示例中,斜體文本顯示在 Post 組件中標有 <slot> 元素的區(qū)域內(nèi)。

      23. 什么是觀察者?

      觀察者允許我們觀察更改的特定屬性,并執(zhí)行定義為函數(shù)的自定義操作。盡管它們的用例與計算的屬性相交叉,但是當某些數(shù)據(jù)屬性發(fā)生改變時,有時需要觀察者執(zhí)行自定義操作或運行代價昂貴的操作。

      24. 如何從子組件發(fā)出自定義事件?

      可以用 $emit('event-name', eventPayload)發(fā)出自定義事件。然后可以像其他事件一樣,用 v-on 指令在父組件上攔截。

      25. 開發(fā)人員經(jīng)常使用字母 “vm” 作為變量名來聲明根 Vue 實例。例如 const vm = new Vue()。在這種情況下,“vm”指的是什么?

      雖然這不是約定,但是開發(fā)人員經(jīng)常使用變量名稱 'vm' 來命名根 Vue 實例,該變量名稱代表 'ViewModel',因為 Vue 本質(zhì)上負責視圖層,并且部分受到了 MVVM 模式的啟發(fā)(Model-View-View-Model)。但是,根本沒有必要將根實例命名為 “vm”。

      贊(0)
      分享到: 更多 (0)
      網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號