亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

VUE常見知識疑點問題總結

 更新時間:2024年02月22日 11:56:02   作者:洛陽紙貴  
這篇文章主要介紹了VUE常見知識疑點問題總結,詳細介紹了vue.js @click和v-on:click有什么區(qū)別,v-on和v-bind的區(qū)別,通過本文可以認識Vue的export、export default、import的詳細介紹,感興趣的朋友一起看看吧

1.vue.js @click和v-on:click有什么區(qū)別?

沒有區(qū)別,@ 只是一個 v-on: 的縮寫,為了書寫方便。

Vue.js 為 v-bind 和 v-on 這兩個最常用的指令,提供了特定簡寫:
v-bind 縮寫
<!-- 完整語法 -->
<a v-bind:href="url" rel="external nofollow"  rel="external nofollow" ></a>
<!-- 縮寫 -->
<a :href="url" rel="external nofollow"  rel="external nofollow" ></a>
v-on 縮寫
<!-- 完整語法 -->
<a v-on:click="doSomething"></a>
<!-- 縮寫 -->
<a @click="doSomething"></a>
 

2.v-on和v-bind的區(qū)別

v-bind指令用于設置HTML屬性:v-bind:href  縮寫為 :href

<a :href="{undefined{url}}" rel="external nofollow" >aa</a>

v-on 指令用于綁定HTML事件 :v-on:click 縮寫為 @click

<a @click="get()">aa</a>

3.v-if和v-show對比:

  • v-if當條件為false的時候,壓根不會有對應的元素在DOm中。
  • v-show當條件為false時,僅僅是將元素的dispaly屬性設置為none而已。

開發(fā)中如何選擇呢:

  • 當需要再顯示與隱藏之間切片很頻繁的時,使用v-show
  • 當只有一次切換時,使用v-if 

4.關于<template>

 請教了下別人,聽完解釋,有個基本概念,但是對于應用實踐,他告訴template是用來寫界面的,也沒毛病,繼續(xù)懵逼著,還是自己摸索下。

template 標簽在Vue實例綁定的元素內部是可以顯示template標簽中的內容,但是查看后臺的dom結構不存在template標簽。

如果template標簽不放在vue實例綁定的元素內部默認里面的內容不能顯示在頁面上,但是查看后臺dom結構存在template標簽。

<div id="app">
    <!--此處的template標簽中的內容顯示并且在dom中不存在template標簽-->
    <template>
        <div>我是template</div>
        <div>我是template</div>
    </template>
</div>
<!--此處的template標簽中的內容在頁面中不顯示,但是在dom結構存在該標簽及內部結構-->
<!--因為template標簽天生不可見,它設置了display:none;屬性-->
<template id="tem">
    <div id="div1">我是template</div>
    <div>我是template</div>
</template>
<script src="node_modules/vue/dist/vue.js"></script>
<script>
    let vm = new Vue({
        el: "#app",
    });
</script>

vue實例綁定的元素內部的template標簽不支持v-show指令,即v-show="false"對template標簽來說不起作用。但是此時的template標簽支持v-if、v-else-if、v-else、v-for這些指令

<div id="app">
    <template v-if="true">
    <!--此時template標簽中的內容顯示在頁面上,但是看dom結構沒有template標簽-->
        <div>我是template</div>
        <div>我是template</div>
    </template>
    <div v-if="true">
    <!--此時頁面上顯示div標簽中的內容,并且看dom結構存在最外面的div標簽-->
        <div>我是template</div>
        <div>我是template</div>
    </div>
    <!--此處會輸出6個‘我是template'并且dom結構中不存在template標簽-->
    <template v-for="a in 3">
        <div>我是template</div>
        <div>我是template</div>
    </template>
</div>
<script src="node_modules/vue/dist/vue.js"></script>
<script>
    let vm = new Vue({
        el: "#app",
    });
</script>

vue實例中的template屬性

將實例中template屬性值進行編譯,并將編譯后的dom替換掉vue實例綁定的元素,如果該vue實例綁定的元素中存在內容,這些內容會直接被覆蓋。

  • 1)如果vue實例中有template屬性,會將該屬性值進行編譯,將編譯后的虛擬dom直接替換掉vue實例綁定的元素(即el綁定的那個元素);
  • 2)template屬性中的dom結構只能有一個根元素,如果有多個根元素需要使用v-if、v-else、v-else-if設置成只顯示其中一個根元素;
  • 3)在該屬性對應的屬性值中可以使用vue實例data、methods中定義的數據。
<!--此處頁面顯示hello-->
<div id="app"></div>
<!--此處template標簽必須在vue綁定的元素外面定義,并且在頁面中不顯示下面的template標簽中的內容-->
<template id="first">
    <div v-if="flag">{{msg}}<div>
    <div v-else>111<div>
</template>
<script src="./node_modules/vue/dist/vue.js"></script>
<script>
    let vm = new Vue({
        el:"#app",
        data:{
            msg:"hello",
            flag:true
        },
        template:"#first"http://通過該屬性可以將自定義的template屬性中的內容全部替換app的內容,并且會覆蓋里面原有的內容,并且在查看dom結構時沒有template標簽
    });
</script>

上面的例子中html中的template標簽可以變成自定的標簽,如下。但是下面這種方式也可以將<abc></abc>標簽中的內容替換掉app元素,但是<abc></abc>標簽中的內容也會顯示在頁面上。所以此處利用template標簽來定義vue實例中需要設置的template屬性。

<abc id="first">
    <div v-if="flag">{{msg}}<div>
    <div v-else>111<div>
</abc>

5. 認識Vue 的 export、export default、import

在ES6中,export與export default均可用于導出變量(含常量)、函數、類、文件、模塊等,然后在其它文件或模塊中通過import 變量(含常量)|函數|類|文件|模塊名的方式,將其導入,以便能夠對其進行使用。

一個模塊就是一個獨立的文件,該文件內部的內容,外部無法獲取。如果希望外部能夠讀取模塊內部的內容,比如某個變量,就必須使用export關鍵字導出該變量,然后在其它模塊中通過import方式導入使用。

//model1.js
export var author = "shouke"
export var addr = "sz"
// 等價寫法
var author = "shouke"
var addr = "sz"
export { author, addr }
//model2.js
import { author } from "./model1"
import { addr } from "./model1"

一個js文件是可以有多個 export

但是一個js文件中只能有一個export default

6.let const var的區(qū)別

 var是ES5提出的,let和const是ES6提出的

ES5中作用域有:全局作用域、函數作用域。沒有塊作用域的概念。
ES6(簡稱ES6)中新增了塊級作用域。塊作用域由 { } 包括,if語句和for語句里面的{ }也屬于塊作用域。

  • const聲明的是常量,必須賦值
  • 1)一旦聲明必須賦值,不能使用null占位。
  • 2)聲明后不能再修改
  • 3)如果聲明的是復合類型數據,可以修改其屬性
  • let和var聲明的是變量,聲明之后可以更改,聲明時可以不賦值
  • var允許重復聲明變量,后一個變量會覆蓋前一個變量。let和const在同一作用域不允許重復聲明變量,會報錯。
  • var聲明的變量存在變量提升(將變量提升到當前作用域的頂部)。即變量可以在聲明之前調用,值為undefined。
  • let和const不存在變量提升。即它們所聲明的變量一定要在聲明后使用,否則報ReferenceError錯。
  • var不存在塊級作用域,不能跨函數訪問。
  • let和const存在塊級作用域,不能跨塊訪問,也不能跨函數訪問。

7.Options API vs Composition API

 字面上, 選項 API 與 組合 API,細品, 這反映了設計面向的改變:
 1. 選項,誰的選項,關鍵在“誰”。誰?組件。也是 Vue2.x 的設計基礎。組件有什么,
     有狀態(tài),有改變狀態(tài)的方法,有生命周期,還有組件和組件之間的關系。這種情況
     下,“數據”要接受一定的“規(guī)矩”,“什么時候能做什么事”,“什么時候有什么表現”;
      這個狀態(tài)下,開發(fā)模式像是“被動接受”。

  2. 組合,什么組合,關鍵在“什么”。什么?數據。數據的組合。Vue3.x 設計重點變了,數
       據變絕對的C了,現在去組件里串門,不用“守規(guī)矩”了,只需要說“我在 onMounted 的時
        候要這樣這樣,你看著辦”,真只能的以“數據”為中心,沒人能管得了了,想去哪就去哪,
        自然就靈活了

8.VUE3中watch和watchEffect的用法

 watch和watchEffect都是監(jiān)聽器,但在寫法和使用上有所區(qū)別。

  • watch可監(jiān)聽老舊值
  • watchEffect監(jiān)聽新值
  • watchEffect局限性,只能監(jiān)聽最新的變化,中間值不監(jiān)聽到

watch和watchEffect監(jiān)聽器在同一個頁面中都可以使用多次,對于分別監(jiān)聽多個變量的時候

1)watchEffect :

  • 立即執(zhí)行,沒有惰性。
  • 不需要手動傳入依賴
  • 每次初始化時會執(zhí)行一次回調函數來自動獲取依賴
  • 無法獲取到原值,只能得到變化后的值
watchEffect(()=>{
      console.log(name.value)
 })
 function change(){
      name.value = 'blue'
      // age.value=1
      // console.log(111)
}

 2)watch

  • 具備一定的惰性。
  • 參數可以拿到最新值和之前的值。
  • 可以偵聽多個數據的變化,用一個偵聽器承載。
  • 給 watch 第三個參數 添加 { immediate:true } 可以立即執(zhí)行,沒有惰性。
function changeDB(){
      // obj.age = 22
      // obj.xz.price = '22k'
      obj.name='redred'
  }
    // 監(jiān)視reactive定義數據的某一個屬性
    watch(()=> obj.name,(newVal,oldVal)=>{
      console.log("有新名字拉~~",newVal)
      console.log("原來的名字哦~",oldVal)
    })

9.VUE3中ref和reactive的區(qū)別

reactive 和 ref 都是用來定義響應式數據的 。reactive更推薦去定義復雜的數據類型 ref 更推薦定義基本類型。

如果在template里使用的是ref類型的數據, 那么Vue會自動幫我們添加.value

如果在template里使用的是reactive類型的數據, 那么Vue不會自動幫我們添加.value

Vue在解析數據之前, 會自動判斷這個數據是否是ref類型的, 如果是就自動添加.value, 如果不是就不自動添加.value

10.defineProps、defineEmits、defineExpose  

defineProps獲取組件傳值

<template>
  <h1>{{ msg }}</h1>
  <div @click="clickThis">1111</div>
</template>
<script setup lang="ts">
  defineProps<{ // 采用ts專有聲明,無默認值
    msg: string,
    num?: number
  }>()
     // 采用ts專有聲明,有默認值
    interface Props {
        msg?: string
        labels?: string[]
    }
    const props = withDefaults(defineProps<Props>(), {
        msg: 'hello',
        labels: () => ['one', 'two']
    })
  defineProps({ // 非ts專有聲明
    msg: String,
    num: {
      type:Number,
      default: ''
    }
  })
</script>
<style scoped lang="less">
</style>

defineEmits子組件向父組件事件傳遞

vue3.0中  在子組件中觸發(fā)父組件中的函數的技巧目前有兩個:defineEmits和useContext ,現在useContext 已經棄用。下面是defineEmits的示例

defineExpose組件暴露自己的屬性

<template>
  <div>子組件helloword.vue</div>
</template>
<script setup lang="ts">
import { ref } from 'vue'
const count = ref(123456)
defineExpose({
  count
})
</script>
<style scoped lang="less">
</style>
<template>
  <div @click="helloClick">父組件</div>
  <helloword ref="hello"></helloword>
</template>
<script setup lang="ts">
import { ref } from 'vue'
import helloword from './components/HelloWorld.vue'
const hello = ref(null)
const helloClick = () => {
  console.log(hello.value.count) // 123456
}
</script>
<style lang="less" scoped>
</style>

到此這篇關于VUE常見知識疑點問題總結的文章就介紹到這了,更多相關VUE常見知識疑點內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Vue中Axios中取消請求及阻止重復請求的方法

    Vue中Axios中取消請求及阻止重復請求的方法

    為了防止用戶在網絡不好或者其他情況下短時間內重復進行接口請求,重復發(fā)送多次請求,本文主要介紹了Vue中Axios中取消請求及阻止重復請求的方法,感興趣的可以了解一下
    2022-02-02
  • electron中使用本地數據庫的方法詳解

    electron中使用本地數據庫的方法詳解

    眾所周知,electron是可以開發(fā)桌面端的框架,那我們有一些數據不想讓別人看到,只能在自己的電腦上展示時怎么辦呢,這個時候就可以用到本地數據庫,本文將以sqlite3為例介紹一下electron如何使用本地數據庫
    2023-10-10
  • vue3清空reactive的四種方式

    vue3清空reactive的四種方式

    本文主要介紹了vue3清空reactive的四種方式,包含使用?Object.assign,使用?Object.keys?和?for...in?循環(huán),使用?delete?操作符和重新賦值4種,感興趣的可以了解一下
    2024-03-03
  • vue3+vue-cli4中使用svg的方式詳解(親測可用)

    vue3+vue-cli4中使用svg的方式詳解(親測可用)

    最近在做個vue的項目,從各種github上的開源庫上借鑒開發(fā)方法,給大家分享下,這篇文章主要給大家介紹了關于vue3+vue-cli4中使用svg的相關資料,需要的朋友可以參考下
    2022-08-08
  • vuex實現購物車功能

    vuex實現購物車功能

    這篇文章主要為大家詳細介紹了vuex實現購物車功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-06-06
  • 對vue下點擊事件傳參和不傳參的區(qū)別詳解

    對vue下點擊事件傳參和不傳參的區(qū)別詳解

    今天小編就為大家分享一篇對vue下點擊事件傳參和不傳參的區(qū)別詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-09-09
  • 淺談vue.js中v-for循環(huán)渲染

    淺談vue.js中v-for循環(huán)渲染

    本篇文章主要介紹了淺談vue.js中v-for循環(huán)渲染,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-07-07
  • Django Vue實現動態(tài)菜單和動態(tài)權限

    Django Vue實現動態(tài)菜單和動態(tài)權限

    本文主要介紹了Django Vue實現動態(tài)菜單和動態(tài)權限,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-06-06
  • vue解決子組件樣式覆蓋問題scoped deep

    vue解決子組件樣式覆蓋問題scoped deep

    文章主要介紹了在Vue項目中處理全局樣式和局部樣式的方法,包括使用scoped屬性和深度選擇器(/deep/)來覆蓋子組件的樣式,作者建議所有組件必須使用scoped,以避免樣式沖突,對于父組件覆蓋子組件的樣式,作者推薦給子組件指定自定義類名
    2025-01-01
  • Vue數據雙向綁定原理及簡單實現方法

    Vue數據雙向綁定原理及簡單實現方法

    vue數據雙向綁定是通過數據劫持結合發(fā)布者-訂閱者模式的方式來實現的.本文重點給大家介紹Vue數據雙向綁定原理及簡單實現方法,感興趣的朋友跟隨腳本之家小編一起學習吧
    2018-05-05

最新評論