久久精品五月,日韩不卡视频在线观看,国产精品videossex久久发布 ,久久av综合

站長資訊網
最全最豐富的資訊網站

一文詳解vue3中使用JSX的方法

vue中如何使用JSX?下面本篇文章給大家介紹一下vue3中使用JSX的方法,希望對大家有所幫助!

一文詳解vue3中使用JSX的方法

前端(vue)入門到精通課程,老師在線輔導:聯系老師
Apipost = Postman + Swagger + Mock + Jmeter 超好用的API調試工具:點擊使用

在絕大多數情況下,Vue 推薦使用模板<template>語法來創建應用。

在 Vue 3 的項目開發中,template 是 Vue 3 默認的寫法。雖然 template 長得很像 HTML,但 Vue 其實會把 template 解析為 render 函數,之后,組件運行的時候通過 render 函數去返回虛擬 DOM。【學習視頻分享:vue視頻教程、web前端視頻】

然而在某些使用場景下,我們真的需要用到 JavaScript 完全的編程能力。這時渲染函數就派上用場了。

h函數

Vue 提供了一個 h() 函數用于創建 vnodes虛擬dom。如下示例:

import { h } from 'vue'  const vnode = h(   'div', // type   { id: 'foo', class: 'bar' }, // props   [     /* children */   ] )
登錄后復制

在組件中如何使用呢?

之前當組合式 API 與模板一起使用時,setup() 鉤子的返回值是用于暴露數據給模板。但是當使用h()的時候,setup() 鉤子返回的是渲染函數

import { ref, h } from 'vue'  export default {   props: {     /* ... */   },   setup(props) {     const count = ref(1)      // 返回渲染函數     return () => h('div', props.msg + count.value)   } }
登錄后復制

手寫的 h 函數,可以處理動態性更高的場景。但是如果是復雜的場景,h 函數寫起來就顯得非常繁瑣,需要自己把所有的屬性都轉變成對象。并且組件嵌套的時候,對象也會變得非常復雜。不過,因為 h 函數也是返回虛擬 DOM 的,所以有沒有更方便的方式去寫 h 函數呢?答案是肯定的,這個方式就是 JSX。

JSX

JSX 是 JavaScript 的一個類似 XML 的擴展,有了它,我們可以用簡單方式來創建vnodes:

const vnode = <div id="app">hello</div>
登錄后復制

這種在 JavaScript 里面寫 HTML 的語法,就叫做 JSX,算是對 JavaScript 語法的一個擴展。上面的代碼直接在 JavaScript 環境中運行時,會報錯。JSX 的本質就是下面代碼的語法糖。

const vnode = createVnode('div',{id:"app"}, 'hello')
登錄后復制

其實h 函數內部也是調用 createVnode 來返回虛擬 DOM。

那么,如何在Vue項目中使用JSX呢?

默認的情況下,vue3+vite的項目不支持jsx,如果想支持jsx,需要安裝插件@vitejs/plugin-vue-jsx

安裝

npm i @vitejs/plugin-vue-jsx -D
登錄后復制

在vite.config.js中進行配置:

import vueJsx from "@vitejs/plugin-vue-jsx"; // 配置vue使用jsx  export default defineConfig({   plugins: [     vue(),      vueJsx()   ], });
登錄后復制

然后就可以在Vue組件中使用了:

// render.vue <script> import { ref } from "vue"; export default {   setup() {     const count = ref(100);     return () => <div>count is: {count.value}</div>;   }, }; </script>
登錄后復制

注意:script中lang要改成jsx。

或者是一個jsx文件:

// render.jsx import { defineComponent } from 'vue'  export default defineComponent({   setup() {     return () => <div>jsx文件</div>   } })
登錄后復制

Template vs JSX

我們該怎么選擇 JSX 和 template 呢?

template優勢:template 的語法是固定的,只有 v-if、v-for 等等語法。我們按照這種固定格式的語法書寫,這樣 Vue3 在編譯層面就可以很方便地去做靜態標記的優化,減少Diff過程。比如靜態提升,類型標記,樹結構打平等來提高虛擬 DOM 運行時性能。這也是 Vue 3 的虛擬 DOM 能夠比 Vue 2 快的一個重要原因。

參考:Vue渲染機制

JSX優勢:template 則因為語法限制原因,不能夠像 JSX 那樣可以支持更動態的需求。這也是 JSX 相比于 template 的一個優勢。

JSX 相比于 template 還有一個優勢,是可以在一個文件內返回多個組件。

那如何選擇呢?

在實現業務需求的時候,優先使用 template,盡可能地利用 Vue 本身的性能優化。而對于動態性要求較高的組件可以使用 JSX 來實現。(比如后面,我會用JSX來實現動態表單生成器)

總結

首先,我們在項目中通常使用template模板來創建應用,template模板會在構建階段被編譯成render渲染函數。渲染函數就是用來返回虛擬DOM的函數。

那么我們其實可以跳過這個步驟,直接使用h函數來生成虛擬DOM。

h函數的內部執行的其實是createVNode函數來生成虛擬DOM的,但是由于h函數比較難寫,所以我們使用JSX來更加方便快捷的書寫。JSX的內部其實也是使用的createVNode函數。

JSX在JavaScript中是不能直接執行的,在vite項目中,我們需要安裝插件@vitejs/plugin-vue-jsx

,并進行相應配置才可以。

最后對比了template和JSX的優劣勢。template的優勢在于語法固定,容易書寫,并且在編譯層面Vue3對template的編譯做了很多優化。而JSX勝在靈活性,在某些動態性要求較高的情況下,JSX成了標配。

所謂,術業有專攻,template和JSX沒有誰比誰更厲害的存在,在不同場景下各有優劣,用好了都是編程利器。

(完)

(學習視頻分享:web前端開發、編程基礎視頻)

贊(0)
分享到: 更多 (0)
?
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
久久精品五月,日韩不卡视频在线观看,国产精品videossex久久发布 ,久久av综合
亚洲小说春色综合另类电影| 日韩精品国产精品| 鲁大师影院一区二区三区| 欧美sss在线视频| 日韩美女一区二区三区在线观看| 久久午夜影院| 里番精品3d一二三区| 国产精品欧美三级在线观看| 日韩av电影一区| 国产情侣久久| 久久精品资源| 高清日韩欧美| 日韩精品2区| 亚洲韩日在线| 午夜在线视频观看日韩17c| 免费精品视频| 日韩一区二区三区在线看| 亚洲精品欧美| 69堂免费精品视频在线播放| 国产精品xxxav免费视频| 免费一级欧美在线观看视频 | 麻豆精品在线视频| 卡一卡二国产精品| 亚洲精品.com| 亚洲综合欧美| 国产麻豆一区二区三区精品视频| 欧美激情久久久久久久久久久| 久久精品免费看| 九色porny丨国产首页在线| 日本蜜桃在线观看视频| 国产一区日韩一区| 亚洲精品日本| 欧美激情另类| 国产免费成人| 国产精品一区二区免费福利视频| 国产videos久久| 最新亚洲一区| 国产精品最新自拍| 日韩一区二区三区在线免费观看| 一区久久精品| 国产精品永久| 亚洲五月婷婷| 欧美日韩1区| 亚洲精品88| 巨乳诱惑日韩免费av| 日本va欧美va欧美va精品| 国产一区丝袜| 丝袜a∨在线一区二区三区不卡 | 国产精品久av福利在线观看| 亚洲黄色免费av| 久久xxxx| 精品高清久久| 久久成人国产| 久久久亚洲欧洲日产| 久久婷婷一区| 18国产精品| 久久久五月天| 91精品丝袜国产高跟在线| 亚洲国产欧美日本视频| 五月激激激综合网色播| 久久uomeier| 91精品日本| 99在线精品免费视频九九视| 欧美国产先锋| 亚洲综合婷婷| 成人日韩精品| 国产乱码精品一区二区亚洲| 狠狠爱成人网| 91一区二区| 欧美日韩一区二区三区在线电影| 欧美.日韩.国产.一区.二区| 日韩精品免费视频一区二区三区| 亚洲精品永久免费视频| 欧美亚洲网站| 蜜臀av一区二区在线免费观看 | 久久国产中文字幕| 国产图片一区| 最新亚洲激情| 国产精品毛片久久| 久久精品99国产精品日本| 九九久久婷婷| 成午夜精品一区二区三区软件| 免费在线观看不卡| 99久久精品网| 国内精品美女在线观看| 日韩国产成人精品| 丝袜美腿高跟呻吟高潮一区| 香蕉久久精品| 日韩中文首页| 精品少妇av| 国产精品色在线网站| 亚洲精品乱码久久久久久蜜桃麻豆 | 麻豆精品久久久| 亚洲欧洲免费| 国产模特精品视频久久久久| 99久久亚洲精品| 波多视频一区| 中文字幕在线官网| 精品久久97| 免费在线观看一区| 国产欧美日韩免费观看| 亚洲精品成人一区| 亚洲欧美日韩国产一区二区| 欧美色图一区| 久久精品免费一区二区三区| 高清精品久久| 另类欧美日韩国产在线| 日韩精品一区二区三区免费视频| 在线亚洲免费| а√天堂8资源在线| 欧美经典一区| 精品午夜av| 久久成人福利| 国产毛片精品久久| 国产区精品区| 国产精品天堂蜜av在线播放| 日本亚州欧洲精品不卡| 视频一区二区中文字幕| 男人天堂欧美日韩| 视频在线观看国产精品| 亚洲欧美日本视频在线观看| 狠狠干成人综合网| 黄色不卡一区| 国产精品7m凸凹视频分类| 久久久9色精品国产一区二区三区| 黄毛片在线观看| 神马久久午夜| 婷婷成人在线| 最新亚洲激情| 蜜桃久久精品一区二区| 亚洲影视一区| 日本少妇一区二区| 91国内精品| 国产欧美日韩视频在线 | 日本午夜精品| 国产精品一区二区99| 国产精品一线天粉嫩av| 国产精品手机在线播放| 久久精品资源| 日韩激情一区| 亚洲网站视频| 亚洲三级网址| 国产精品资源| 精品亚洲精品| 少妇久久久久| 亚洲中字黄色| 日韩专区视频网站| 欧美国产专区| 日韩精品午夜| 亚洲一区观看| 日韩一二三区在线观看| 91精品国产自产观看在线| 久久久91麻豆精品国产一区| 亚洲经典在线| 91av一区| 国产精品成人一区二区不卡| 国产一区清纯| 中文字幕一区二区三区在线视频| 欧美日韩a区| 高清久久精品| 亚洲大全视频| 日韩欧乱色一区二区三区在线| 国产精品美女午夜爽爽| 国产精品精品| 尹人成人综合网| 日韩成人一级| 久久99久久久精品欧美| 久久婷婷亚洲| 日本成人在线不卡视频| 国产成人久久精品麻豆二区| 亚洲夜间福利| 日本国产欧美| zzzwww在线看片免费| 亚洲一区二区三区四区五区午夜| 国产日韩欧美一区在线| 岛国av免费在线观看| 视频在线在亚洲| 国产一区二区三区精品在线观看| 亚洲成人一区| 美女久久久精品| 亚洲一区二区免费看| 国产日韩一区二区三免费高清 | 日韩欧美午夜| 少妇精品久久久| 香蕉视频亚洲一级| 日韩精品视频在线看| 久久久一本精品| 日韩精品三区四区| 久久三级视频| 国产精品一区二区av交换| 在线日韩一区| 国产一级成人av| 午夜国产一区二区| 加勒比视频一区| 中文字幕亚洲在线观看| 日韩成人精品一区| 一二三区精品| 久久中文字幕二区| 美女视频网站久久| 免费成人性网站|