最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

VUE常見知識(shí)疑點(diǎn)問題總結(jié)

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

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

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

Vue.js 為 v-bind 和 v-on 這兩個(gè)最常用的指令,提供了特定簡(jiǎn)寫:
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指令用于設(shè)置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對(duì)比:

  • v-if當(dāng)條件為false的時(shí)候,壓根不會(huì)有對(duì)應(yīng)的元素在DOm中。
  • v-show當(dāng)條件為false時(shí),僅僅是將元素的dispaly屬性設(shè)置為none而已。

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

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

4.關(guān)于<template>

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

template 標(biāo)簽在Vue實(shí)例綁定的元素內(nèi)部是可以顯示template標(biāo)簽中的內(nèi)容,但是查看后臺(tái)的dom結(jié)構(gòu)不存在template標(biāo)簽。

如果template標(biāo)簽不放在vue實(shí)例綁定的元素內(nèi)部默認(rèn)里面的內(nèi)容不能顯示在頁面上,但是查看后臺(tái)dom結(jié)構(gòu)存在template標(biāo)簽。

<div id="app">
    <!--此處的template標(biāo)簽中的內(nèi)容顯示并且在dom中不存在template標(biāo)簽-->
    <template>
        <div>我是template</div>
        <div>我是template</div>
    </template>
</div>
<!--此處的template標(biāo)簽中的內(nèi)容在頁面中不顯示,但是在dom結(jié)構(gòu)存在該標(biāo)簽及內(nèi)部結(jié)構(gòu)-->
<!--因?yàn)閠emplate標(biāo)簽天生不可見,它設(shè)置了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實(shí)例綁定的元素內(nèi)部的template標(biāo)簽不支持v-show指令,即v-show="false"對(duì)template標(biāo)簽來說不起作用。但是此時(shí)的template標(biāo)簽支持v-if、v-else-if、v-else、v-for這些指令

<div id="app">
    <template v-if="true">
    <!--此時(shí)template標(biāo)簽中的內(nèi)容顯示在頁面上,但是看dom結(jié)構(gòu)沒有template標(biāo)簽-->
        <div>我是template</div>
        <div>我是template</div>
    </template>
    <div v-if="true">
    <!--此時(shí)頁面上顯示div標(biāo)簽中的內(nèi)容,并且看dom結(jié)構(gòu)存在最外面的div標(biāo)簽-->
        <div>我是template</div>
        <div>我是template</div>
    </div>
    <!--此處會(huì)輸出6個(gè)‘我是template'并且dom結(jié)構(gòu)中不存在template標(biāo)簽-->
    <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實(shí)例中的template屬性

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

  • 1)如果vue實(shí)例中有template屬性,會(huì)將該屬性值進(jìn)行編譯,將編譯后的虛擬dom直接替換掉vue實(shí)例綁定的元素(即el綁定的那個(gè)元素);
  • 2)template屬性中的dom結(jié)構(gòu)只能有一個(gè)根元素,如果有多個(gè)根元素需要使用v-if、v-else、v-else-if設(shè)置成只顯示其中一個(gè)根元素;
  • 3)在該屬性對(duì)應(yīng)的屬性值中可以使用vue實(shí)例data、methods中定義的數(shù)據(jù)。
<!--此處頁面顯示hello-->
<div id="app"></div>
<!--此處template標(biāo)簽必須在vue綁定的元素外面定義,并且在頁面中不顯示下面的template標(biāo)簽中的內(nèi)容-->
<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屬性中的內(nèi)容全部替換app的內(nèi)容,并且會(huì)覆蓋里面原有的內(nèi)容,并且在查看dom結(jié)構(gòu)時(shí)沒有template標(biāo)簽
    });
</script>

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

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

5. 認(rèn)識(shí)Vue 的 export、export default、import

在ES6中,export與export default均可用于導(dǎo)出變量(含常量)、函數(shù)、類、文件、模塊等,然后在其它文件或模塊中通過import 變量(含常量)|函數(shù)|類|文件|模塊名的方式,將其導(dǎo)入,以便能夠?qū)ζ溥M(jìn)行使用。

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

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

一個(gè)js文件是可以有多個(gè) export

但是一個(gè)js文件中只能有一個(gè)export default

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

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

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

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

7.Options API vs Composition API

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

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

8.VUE3中watch和watchEffect的用法

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

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

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

1)watchEffect :

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

 2)watch

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

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

reactive 和 ref 都是用來定義響應(yīng)式數(shù)據(jù)的 。reactive更推薦去定義復(fù)雜的數(shù)據(jù)類型 ref 更推薦定義基本類型。

如果在template里使用的是ref類型的數(shù)據(jù), 那么Vue會(huì)自動(dòng)幫我們添加.value

如果在template里使用的是reactive類型的數(shù)據(jù), 那么Vue不會(huì)自動(dòng)幫我們添加.value

Vue在解析數(shù)據(jù)之前, 會(huì)自動(dòng)判斷這個(gè)數(shù)據(jù)是否是ref類型的, 如果是就自動(dòng)添加.value, 如果不是就不自動(dòng)添加.value

10.defineProps、defineEmits、defineExpose  

defineProps獲取組件傳值

<template>
  <h1>{{ msg }}</h1>
  <div @click="clickThis">1111</div>
</template>
<script setup lang="ts">
  defineProps<{ // 采用ts專有聲明,無默認(rèn)值
    msg: string,
    num?: number
  }>()
     // 采用ts專有聲明,有默認(rèn)值
    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ā)父組件中的函數(shù)的技巧目前有兩個(gè):defineEmits和useContext ,現(xiàn)在useContext 已經(jīng)棄用。下面是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>

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

相關(guān)文章

  • VUE3中引入.env下的環(huán)境變量,顯示process未定義問題

    VUE3中引入.env下的環(huán)境變量,顯示process未定義問題

    這篇文章主要介紹了VUE3中引入.env下的環(huán)境變量,顯示process未定義問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-04-04
  • vue項(xiàng)目開發(fā)環(huán)境工具node搭建過程

    vue項(xiàng)目開發(fā)環(huán)境工具node搭建過程

    最近在開始接觸做vue框架的前端項(xiàng)目,以前用的前端比如html,js,css等都是比較原生的,寫好后直接瀏覽器打開就行,今天就先記錄一下vue的開發(fā)運(yùn)行搭建過程,感興趣的朋友一起看看吧
    2023-09-09
  • 詳解element上傳組件before-remove鉤子問題解決

    詳解element上傳組件before-remove鉤子問題解決

    這篇文章主要介紹了詳解element上傳組件before-remove鉤子問題解決,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04
  • Vue 2.5 Level E 發(fā)布了: 新功能特性一覽

    Vue 2.5 Level E 發(fā)布了: 新功能特性一覽

    很高興Vue 2.5 Level E 發(fā)布了。在這篇文章中,我們將重點(diǎn)介紹一些更重要的的變化:更好的 TypeScript 集成,更好的錯(cuò)誤處理,更好地支持單文件組件中的函數(shù)式組件以及與環(huán)境無關(guān)的服務(wù)端渲染
    2017-10-10
  • Vue3中創(chuàng)建異步組件的流程步驟

    Vue3中創(chuàng)建異步組件的流程步驟

    在現(xiàn)代前端開發(fā)中,組件的重用性和異步加載是提升用戶體驗(yàn)和優(yōu)化性能的關(guān)鍵因素,在Vue 3中,創(chuàng)建異步組件變得更為便利,本文將探討如何在Vue 3中使用setup語法糖來創(chuàng)建異步組件,感興趣的小伙伴跟著小編一起來看看吧
    2024-09-09
  • vscode中Vue別名路徑提示的實(shí)現(xiàn)

    vscode中Vue別名路徑提示的實(shí)現(xiàn)

    這篇文章主要介紹了vscode中Vue別名路徑提示的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • Vue3中的ref為何要用.value進(jìn)行值的調(diào)用呢

    Vue3中的ref為何要用.value進(jìn)行值的調(diào)用呢

    這篇文章主要介紹了Vue3中的ref為何要用.value進(jìn)行值的調(diào)用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • vue實(shí)現(xiàn)用戶登錄切換

    vue實(shí)現(xiàn)用戶登錄切換

    這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)用戶登錄切換,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-04-04
  • vue和better-scroll實(shí)現(xiàn)列表左右聯(lián)動(dòng)效果詳解

    vue和better-scroll實(shí)現(xiàn)列表左右聯(lián)動(dòng)效果詳解

    這篇文章主要介紹了vue和better-scroll實(shí)現(xiàn)列表左右聯(lián)動(dòng)效果,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • vue使用recorder.js實(shí)現(xiàn)錄音功能

    vue使用recorder.js實(shí)現(xiàn)錄音功能

    這篇文章主要為大家詳細(xì)介紹了vue使用recorder.js實(shí)現(xiàn)錄音功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-11-11

最新評(píng)論

黄龙县| 图木舒克市| 满洲里市| 桂阳县| 高邮市| 谷城县| 宜春市| 六盘水市| 清徐县| 兴海县| 平潭县| 哈尔滨市| 晴隆县| 泸水县| 环江| 顺平县| 江城| 陇南市| 阳原县| 铜梁县| 桂平市| 囊谦县| 寿光市| 东港市| 宁夏| 峨山| 达尔| 江口县| 同仁县| 苗栗市| 阳新县| 德阳市| 德化县| 桓仁| 龙陵县| 札达县| 武隆县| 旬阳县| 调兵山市| 双峰县| 榆社县|