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

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中定義的數(shù)據。
<!--此處頁面顯示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均可用于導出變量(含常量)、函數(shù)、類、文件、模塊等,然后在其它文件或模塊中通過import 變量(含常量)|函數(shù)|類|文件|模塊名的方式,將其導入,以便能夠對其進行使用。

一個模塊就是一個獨立的文件,該文件內部的內容,外部無法獲取。如果希望外部能夠讀取模塊內部的內容,比如某個變量,就必須使用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中作用域有:全局作用域、函數(shù)作用域。沒有塊作用域的概念。
ES6(簡稱ES6)中新增了塊級作用域。塊作用域由 { } 包括,if語句和for語句里面的{ }也屬于塊作用域。

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

7.Options API vs Composition API

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

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

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í)行一次回調函數(shù)來自動獲取依賴
  • 無法獲取到原值,只能得到變化后的值
watchEffect(()=>{
      console.log(name.value)
 })
 function change(){
      name.value = 'blue'
      // age.value=1
      // console.log(111)
}

 2)watch

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

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

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

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

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

Vue在解析數(shù)據之前, 會自動判斷這個數(shù)據是否是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ā)父組件中的函數(shù)的技巧目前有兩個:defineEmits和useContext ,現(xiàn)在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ù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

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

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

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

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

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

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

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

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

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

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

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

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

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

    Vue3中的ref為何要用.value進行值的調用呢

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

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

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

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

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

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

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

最新評論

温宿县| 娄底市| 太谷县| 镶黄旗| 化德县| 绥中县| 上高县| 青田县| 巫山县| 昆明市| 高阳县| 遵化市| 兰溪市| 泉州市| 馆陶县| 陇川县| 晋宁县| 翁源县| 临汾市| 乌鲁木齐县| 寿阳县| 曲麻莱县| 湘潭市| 施甸县| 镇康县| 武安市| 泰安市| 乐亭县| 石泉县| 镇雄县| 彭州市| 余庆县| 海城市| 千阳县| 公主岭市| 双江| 汉沽区| 乐昌市| 建湖县| 普定县| 昌图县|