Inhaltsverzeichnis
Code-Mischung ist eigentlich der Mischmodus im Entwurfsmodus, und seine Mängel liegen ebenfalls auf der Hand.
MethodenBerechnete Eigenschaften" >DatenMethodenBerechnete Eigenschaften
三、Methods" >三、Methods
基础用法
自动拆装箱总结" >自动拆装箱总结
四、 Computed - 计算属性" >四、 Computed - 计算属性
五、Reactive - 响应式语法
Attending
六、 Modularizing
七、 LifecycleHooks - 生命周期钩子" >七、 LifecycleHooks - 生命周期钩子
八、Watch - 监听器
九、Sharing State - 共享状态
十、Suspense - 悬念
复杂的Loading实现
Suspense基础语法" >Suspense基础语法
骨架屏实现
十一、Teleport - 传送门" >十一、Teleport - 传送门
功能
基础语法" >基础语法
示例代码" >示例代码
Heim Web-Frontend View.js [Zusammenstellung und Zusammenfassung] Detaillierte Erläuterung der 11 Wissenspunkte von Vue3

[Zusammenstellung und Zusammenfassung] Detaillierte Erläuterung der 11 Wissenspunkte von Vue3

Aug 30, 2022 pm 08:20 PM
vue3

Dieser Artikel fasst Vue3-Studiennotizen zusammen und vermittelt ein detailliertes Verständnis von 11 Wissenspunkten von Vue3. Ich hoffe, dass er für alle hilfreich sein wird!

[Zusammenstellung und Zusammenfassung] Detaillierte Erläuterung der 11 Wissenspunkte von Vue3

Vue3+Node+Webpack+API Mall Project Engineering Praktischer Entwicklungskurs!

1. Warum CompositionAPI wählen? Einschränkungen von Vue2: Schlechte Lesbarkeit durch Erweiterung der Komponentenlogik. Code kann nicht komponentenübergreifend wiederverwendet werden. Vue2 unterstützt TS nur eingeschränkt.

In der traditionellen OptionsAPI müssen wir die Logik in die folgenden sechs Teile aufteilen. [Verwandte Empfehlungen: vue.js Video-Tutorial

]
  • OptionsAPI
components

propsdata

berechnet

Methoden

Lebenszyklusmethoden
  • components
  • props
  • data
  • computed
  • methods
  • lifecycle methodsSo verwenden Sie CompositionAPI, um das Problem zu lösen
Die beste Lösung besteht darin, die zu aggregieren Logik Kann den Code sehr gut lesbar machen.

Das kann unsere CompositionAPI-Syntax erreichen. CompositionAPI ist eine vollständig optionale Syntax und steht nicht in Konflikt mit der ursprünglichen OptionAPI. Es ermöglicht uns, Code mit derselben Funktion zusammen zu organisieren, ohne ihn in jeder Ecke der OptionsAPI zu verstreuen. Code-Wiederverwendungsmethode PK. Komponentenübergreifender Wiederverwendungscode in Vue2. Wir haben etwa vier Auswahlmöglichkeiten: Mixin – Mixin

Code-Mischung ist eigentlich der Mischmodus im Entwurfsmodus, und seine Mängel liegen ebenfalls auf der Hand.

kann als Mehrfachvererbung verstanden werden. Es ist so, dass eine Person zwei Väter hat - Mixin Factory

Eins zurückgeben

[Zusammenstellung und Zusammenfassung] Detaillierte Erläuterung der 11 Wissenspunkte von Vue3

    ✅Die Wiederverwendung von Code ist praktisch
  • ✅Bereinigung der Vererbungsbeziehung
  • 3. ScopeSlots – Scope-Slots
❌Nicht sehr lesbar

❌Die Konfiguration ist komplex – muss im konfiguriert werden Vorlage
    ❌Geringe Leistung – jeder Slot entspricht einer Instanz
  • 4. CompositionApi – zusammengesetzte API

✅Geringe Menge an Code

✅Es wird keine neue Syntax eingeführt, nur eine einfache Funktion

[Zusammenstellung und Zusammenfassung] Detaillierte Erläuterung der 11 Wissenspunkte von Vue3✅Außergewöhnlich flexibel

✅Toolfreundliche Syntax-Eingabeaufforderungen – Da es sich um eine einfache Funktion handelt, ist es einfach, Syntax-Eingabeaufforderungen und automatische Kompensation zu implementieren.

2. Einrichtung und Referenz. Gründe für die Verwendung von CompositionAPI

✅In komplexen Funktionskomponenten kann Code nach Merkmalen organisiert werden – Codekohäsion, wie zum Beispiel:

Sortier- und Suchlogikkohäsion

✅Codewiederverwendung zwischen Komponenten

[Zusammenstellung und Zusammenfassung] Detaillierte Erläuterung der 11 Wissenspunkte von Vue3Was ist eingerichtet?

Vor dem Folgenden ausgeführt Methode:

Komponenten

Props

Lebenszyklusmethoden

Sie können die schwer verständlichen Methoden nicht mehr verwenden

hat zwei optionale Parameter

props - Eigenschaften ( reaktive Objekte und können abgehört werden (beobachten))

import {watch} from "vue"
export defalut {
	props: {
		name: String
	},
	setup(props) {
		watch(() => {
			console.log(props.name)
		})
	}
}
Nach dem Login kopieren

context Kontextobjekt – wird verwendet, um die Attribute zu ersetzen, auf die mit der vorherigen Methode zugegriffen werden kann
    • setup (props,context) {
      	const {attrs,slots,parent,root,emit} = context
      }
      Nach dem Login kopieren
    • Was ist ref?
    • So installieren Sie grundlegende Datentyp-Datenbox-Operationen, die es zu einem reaktiven Objekt machen, das Datenänderungen verfolgen kann.
  • Zusammenfassung
    Die Wartbarkeit wurde erheblich verbessert
    • 可以控制哪些变量暴露
    • 可以跟中哪些属性被定义 (属性继承与引用透明)

    基础用法

    [Zusammenstellung und Zusammenfassung] Detaillierte Erläuterung der 11 Wissenspunkte von Vue3

    [Zusammenstellung und Zusammenfassung] Detaillierte Erläuterung der 11 Wissenspunkte von Vue3

    • JS :需要通过.value访问包装对象
    • 模板: 自动拆箱

    这个地方实在没什么好讲的,和Vue2没变化

    <template>
      <div>
        <div>Capacity: {{ capacity }}</div>
        <p>Spases Left: {{ sapcesLeft }} out of {{ capacity }}</p>
        <button @click="increaseCapacity()">Increase Capacity</button>
      </div>
    </template>
    
    <script>
    
    import { ref, computed, watch } from "vue";
    export default {
      setup(props, context) {
        const capacity = ref(3);
        const attending = ref(["Tim", "Bob", "Joe"]);
        function increaseCapacity() {
          capacity.value++;
        }
        const sapcesLeft = computed(() => {
          return capacity.value - attending.value.length;
        });
        return { capacity, increaseCapacity, attending, sapcesLeft };
      },
    };
    </script>
    Nach dem Login kopieren

    五、Reactive - 响应式语法

    之前reactive 的 Ref 去声明所有的响应式属性

    import { ref,computed } from &#39;vue&#39;
    export default {
      setup(){
        const capacity = ref(4);
        const attending = ref(["Tim","Bob","Joe"]);
        const spacesLeft = computed(()=>{
          return capacity.value - attending.value.length
        })
        function increaseCapacity(){ capacity.value ++;}
        return { capacity,increaseCapacity,attending,spacesLeft}
      }
    }
    Nach dem Login kopieren

    但是有另一个等效的方法用它去代替 reactive 的Ref

    import { reactive,computed } from &#39;vue&#39;
    export default {
      setup(){
        const event = reactive({
          capacity:4,
          attending:["Tim","Bob","Joe"],
          spacesLeft:computed(()=>{
            return event.capacity - event.attending.length;
          })
        })
      }
    }
    Nach dem Login kopieren

    过去我们用vue2.0的data来声明响应式对象,但是现在在这里每一个属性都是响应式的包括computed 计算属性

    这2种方式相比于第一种没有使用.

    接下来 我们再声明method 这2种语法都ok,取决于你选择哪一种

    setup(){
      const event = reactive(){
        capacity:4,
        attending:["Tim","Bob","Joe"],
        spacesLeft:computed(()=>{
          return event.capacity - event.attending.length;
        })
        function increaseCapacity(){event.capacity++}
        //return整个对象
        return {event,increaseCapacity}
      }
    }
    Nach dem Login kopieren
    <p>Spaces Left:{{event.spacesLeft}} out of {{event.capacity}}</p>
    <h2 id="Attending">Attending</h2>
    <ul>>
    	<li v-for="(name,index) in event.attending" :key="index">
         {{name}}
      </li>
    </ul>
    <button @click="increaseCapacity()"> Increase Capacity</button>
    Nach dem Login kopieren

    在这里我们使用对象都是.属性的方式,但是如果 这个结构变化了,event分开了编程了一个个片段,这个时候就不能用.属性的方式了

    //在这里可以使用toRefs
    import {reactive,computed,toRefs} from &#39;vue&#39;
    export default{
      setup(){
        const event = reactive({
          capacity:4,
          attending:["Tim","Bob","Joe"],
          spacesLeft:computed(()=>{
            return event.capacity -event.attending.length;
            
          })
        })
        function increaseCapacity(){ event.capacity ++ }
        return {...toRefs(event),increaseCapacity}
      }
    }
    Nach dem Login kopieren

    如果没有 increaseCapacity() 这个方法 直接可以简化为

    return toRefs(event)
    Nach dem Login kopieren

    完整代码

    <div>
       <p>Space Left : {{event.spacesLeft}} out of {{event.capacity}} </p>
       <h2 id="Attending">Attending</h2>
       <ul>
          <li v-for="(name,index)" in event.attending :key="index">{{name}}
          </li>
    
    
         
       </ul>
       <button @click="increaseCapacity">Increase Capacity</button>
       </div>
    </template>
    
    <script>
    //第一种
    import {ref,computed } from &#39;vue&#39;
    export default {
      setup(){
        const capacity = ref(4)
        const attending = ref(["Tim","Bob","Joe"])
        const spaceLeft = computed(()=>{
          return capacity.value - attending.value.length;
        });
        function increaseCapacity(){ capacity.value++; }
        return {capacity,increaseCapacity,attending,spaceLeft}   
    
    
      }
    } 
    
    //返回一个响应式函数 第二种
    import { reactive,computed } from &#39;vue&#39;
    export default {
      setup(){
        const event = reactive({
          capacity:4,
          attending:["Tim","Bob","Joe"],
          spaceLeft:computed(()=>{
            return event.capacity - event.attending.length;
          })
        })
        //我们不再使用.value
        function increaseCapacity() { event.capacity++; }
        //把这个event放入到template中
        return { event,increaseCapacity}
      }
    }
    
    
    </script>
    Nach dem Login kopieren

    六、 Modularizing

    使用CompositionAPI的两个理由

    1、可以按照功能组织代码

    [Zusammenstellung und Zusammenfassung] Detaillierte Erläuterung der 11 Wissenspunkte von Vue3

    2、组件间功能代码复用

    [Zusammenstellung und Zusammenfassung] Detaillierte Erläuterung der 11 Wissenspunkte von Vue3

    [Zusammenstellung und Zusammenfassung] Detaillierte Erläuterung der 11 Wissenspunkte von Vue3

    Vue2Vue3
    beforeCreate❌setup(替代)
    created❌setup(替代)
    beforeMountonBeforeMount
    mountedonMounted
    beforeUpdateonBeforeUpdate
    updatedonUpdated
    beforeDestroyonBeforeUnmount
    destroyedonUnmounted
    errorCapturedonErrorCaptured
    -?onRenderTracked
    -?onRenderTriggered

    setup中调用生命周期钩子

    import { onBeforeMount,onMounted } from "vue";
    export default {
      setup() {
        onBeforeMount(() => {
            console.log(&#39;Before Mount!&#39;)
        }) 
        onMounted(() => {
            console.log(&#39;Before Mount!&#39;)
        }) 
      },
    };
    Nach dem Login kopieren

    八、Watch - 监听器

    // 所有依赖响应式对象监听
    watchEffect(() => {
       results.value = getEventCount(searchInput.value);
     });
    
    // 特定响应式对象监听
    watch(
      searchInput,
      () => {
        console.log("watch searchInput:");
      }
    );
    
    // 特定响应式对象监听 可以获取新旧值
    watch(
      searchInput,
     (newVal, oldVal) => {
        console.log("watch searchInput:", newVal, oldVal);
      },
    );
    
    // 多响应式对象监听
    watch(
      [firstName,lastName],
     ([newFirst,newLast], [oldFirst,oldlast]) => {
       // .....
      },
      
    );
    
    // 非懒加载方式监听 可以设置初始值
    watch(
      searchInput,
      (newVal, oldVal) => {
        console.log("watch searchInput:", newVal, oldVal);
      },
      {
        immediate: true, 
      }
    );
    Nach dem Login kopieren

    九、Sharing State - 共享状态

    [Zusammenstellung und Zusammenfassung] Detaillierte Erläuterung der 11 Wissenspunkte von Vue3

    编写一个公共函数usePromise函数需求如下:

    • results : 返回Promise执行结果
    • loading: 返回Promise运行状态
      • PENDING :true
      • REJECTED : false
      • RESOLVED: false
    • error : 返回执行错误

    1[Zusammenstellung und Zusammenfassung] Detaillierte Erläuterung der 11 Wissenspunkte von Vue3

    import { ref } from "vue";
    
    export default function usePromise(fn) {
      const results = ref(null);
      // is PENDING
      const loading = ref(false);
      const error = ref(null);
    
      const createPromise = async (...args) => {
        loading.value = true;
        error.value = null;
        results.value = null;
        try {
          results.value = await fn(...args);
        } catch (err) {
          error.value = err;
        } finally {
          loading.value = false;
        }
      };
      return { results, loading, error, createPromise };
    }
    Nach dem Login kopieren

    应用

    import { ref, watch } from "vue";
    import usePromise from "./usePromise";
    export default {
      setup() {
        const searchInput = ref("");
        function getEventCount() {
          return new Promise((resolve) => {
            setTimeout(() => resolve(3), 1000);
          });
        }
    
        const getEvents = usePromise((searchInput) => getEventCount());
    
        watch(searchInput, () => {
          if (searchInput.value !== "") {
            getEvents.createPromise(searchInput);
          } else {
            getEvents.results.value = null;
          }
        });
    
        return { searchInput, ...getEvents };
      },
    };
    Nach dem Login kopieren

    十、Suspense - 悬念

    复杂的Loading实现

    我们考虑一下当你加载一个远程数据时,如何显示loading状态

    通常我们可以在模板中使用v-if

    1[Zusammenstellung und Zusammenfassung] Detaillierte Erläuterung der 11 Wissenspunkte von Vue3

    但是在一个组件树中,其中几个子组件需要远程加载数据,当加载完成前父组件希望处于Loading状态时我们就必须借助全局状态管理来管理这个Loading状态

    1[Zusammenstellung und Zusammenfassung] Detaillierte Erläuterung der 11 Wissenspunkte von Vue3

    这个问题在Vue3中有一个全新的解决方法。

    这就是Suspense Component,悬念组件。

    [Zusammenstellung und Zusammenfassung] Detaillierte Erläuterung der 11 Wissenspunkte von Vue3

    <template>
      <div>
        <div v-if="error">Uh oh .. {{ error }}</div>
        <Suspense>
          <template #default>
            <div>
              <Event />
              <AsyncEvent />
            </div>
          </template>
          <template #fallback> Loading.... </template>
        </Suspense>
      </div>
    </template>
    
    <script>
    import { ref, onErrorCaptured, defineAsyncComponent } from "vue";
    
    import Event from "./Event.vue";
    
    const AsyncEvent = defineAsyncComponent(() => import("./Event.vue"));
    export default {
      components: {
        Event,
        AsyncEvent,
      },
    
      setup() {
        const error = ref(null);
        onErrorCaptured((e) => {
          error.value = e;
          // 阻止错误继续冒泡
          return true;
        });
        return { error };
      },
    };
    </script>
    Nach dem Login kopieren

    骨架屏实现

    1[Zusammenstellung und Zusammenfassung] Detaillierte Erläuterung der 11 Wissenspunkte von Vue3

    1[Zusammenstellung und Zusammenfassung] Detaillierte Erläuterung der 11 Wissenspunkte von Vue3

    功能

    类似React中的Portal, 可以将特定的html模板传送到Dom的任何位置

    1[Zusammenstellung und Zusammenfassung] Detaillierte Erläuterung der 11 Wissenspunkte von Vue3

    通过选择器QuerySelector配置

    1[Zusammenstellung und Zusammenfassung] Detaillierte Erläuterung der 11 Wissenspunkte von Vue3

    1[Zusammenstellung und Zusammenfassung] Detaillierte Erläuterung der 11 Wissenspunkte von Vue3

    <template>
      <div>
        <teleport to="#end-of-body" :disabled="!showText">
          <!-- 【Teleport : This should be at the end 】 -->
          <div>
            <video src="../assets/flower.webm" muted controls="controls" autoplay="autoplay" loop="loop">
              
            </video>
          </div>
        </teleport>
        <div>【Teleport : This should be at the top】</div>
        <button @click="showText = !showText">Toggle showText</button>
      </div>
    </template>
    <script>
    import { ref } from "vue";
    export default {
      setup() {
        const showText = ref(false);
        setInterval(() => {
          showText.value = !showText.value;
        }, 1000);
        return { showText };
      },
    };
    </script>
    Nach dem Login kopieren

    更多编程相关知识,请访问:编程入门!!

    Das obige ist der detaillierte Inhalt von[Zusammenstellung und Zusammenfassung] Detaillierte Erläuterung der 11 Wissenspunkte von Vue3. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

vue3+vite: So beheben Sie den Fehler bei der Verwendung von require zum dynamischen Importieren von Bildern in src vue3+vite: So beheben Sie den Fehler bei der Verwendung von require zum dynamischen Importieren von Bildern in src May 21, 2023 pm 03:16 PM

vue3+vite:src verwendet „require“, um Bilder dynamisch zu importieren, und vue3+vite importiert dynamisch mehrere Bilder. Wenn Sie „requireisnotdefined“ verwenden, wird eine Fehlermeldung angezeigt like vue2 like imgUrl:require(' .../assets/test.png') wird importiert, da Typescript Require nicht unterstützt, daher wird Import verwendet. So lösen Sie das Problem: Verwenden Sieawaitimport

So verwenden Sie tinymce im Vue3-Projekt So verwenden Sie tinymce im Vue3-Projekt May 19, 2023 pm 08:40 PM

tinymce ist ein voll funktionsfähiges Rich-Text-Editor-Plug-in, aber die Einführung von tinymce in Vue ist nicht so reibungslos wie bei anderen Vue-Rich-Text-Plug-ins. Tinymce selbst ist nicht für Vue geeignet, und @tinymce/tinymce-vue muss eingeführt werden. und Es handelt sich um ein ausländisches Rich-Text-Plug-in, das die chinesische Version nicht bestanden hat. Sie müssen das Übersetzungspaket von der offiziellen Website herunterladen (möglicherweise müssen Sie die Firewall umgehen). 1. Installieren Sie die zugehörigen Abhängigkeiten npminstalltinymce-Snpminstall@tinymce/tinymce-vue-S2. 3. Führen Sie den Skin und das chinesische Paket ein. Erstellen Sie einen neuen Tinymce-Ordner im öffentlichen Ordner des Projekts und laden Sie ihn herunter

Wie Vue3 Markdown analysiert und Code-Hervorhebung implementiert Wie Vue3 Markdown analysiert und Code-Hervorhebung implementiert May 20, 2023 pm 04:16 PM

Um das Blog-Frontend mit Vue zu implementieren, müssen Sie die Markdown-Analyse implementieren. Wenn Code vorhanden ist, müssen Sie die Code-Hervorhebung implementieren. Es gibt viele Markdown-Parsing-Bibliotheken für Vue, wie z. B. markdown-it, vue-markdown-loader, markiert, vue-markdown usw. Diese Bibliotheken sind alle sehr ähnlich. Hier wird Markiert verwendet, und highlights.js wird als Code-Hervorhebungsbibliothek verwendet. Die spezifischen Implementierungsschritte lauten wie folgt: 1. Installieren Sie abhängige Bibliotheken. Öffnen Sie das Befehlsfenster unter dem Vue-Projekt und geben Sie den folgenden Befehl ein: npminstallmarked-save//marked, um Markdown in htmlnpmins zu konvertieren

So aktualisieren Sie einen Teilinhalt der Seite in Vue3 So aktualisieren Sie einen Teilinhalt der Seite in Vue3 May 26, 2023 pm 05:31 PM

Um eine teilweise Aktualisierung der Seite zu erreichen, müssen wir nur das erneute Rendern der lokalen Komponente (dom) implementieren. In Vue lässt sich dieser Effekt am einfachsten mit der v-if-Direktive erzielen. In Vue2 können wir zusätzlich zur Verwendung der v-if-Anweisung zum erneuten Rendern des lokalen Doms auch eine neue leere Komponente erstellen. Wenn wir die lokale Seite aktualisieren müssen, springen wir zu dieser leeren Komponentenseite und springen dann wieder hinein der beforeRouteEnter-Schutz in der leeren Komponente. Wie in der Abbildung unten gezeigt, wie man in Vue3.X auf die Schaltfläche „Aktualisieren“ klickt, um das DOM im roten Feld neu zu laden und den entsprechenden Ladestatus anzuzeigen. Da der Guard in der Komponente in der scriptsetup-Syntax in Vue3.X nur o hat

So lösen Sie das Problem, dass die Zugriffsseite leer angezeigt wird, nachdem das vue3-Projekt gepackt und auf dem Server veröffentlicht wurde So lösen Sie das Problem, dass die Zugriffsseite leer angezeigt wird, nachdem das vue3-Projekt gepackt und auf dem Server veröffentlicht wurde May 17, 2023 am 08:19 AM

Nachdem das vue3-Projekt gepackt und auf dem Server veröffentlicht wurde, wird auf der Zugriffsseite eine leere 1 angezeigt. Der publicPath in der Datei vue.config.js wird wie folgt verarbeitet: const{defineConfig}=require('@vue/cli-service') module.exports=defineConfig({publicPath :process.env.NODE_ENV==='produktion'?'./':'/&

So verwenden Sie wiederverwendbare Vue3-Komponenten So verwenden Sie wiederverwendbare Vue3-Komponenten May 20, 2023 pm 07:25 PM

Vorwort Ob Vue oder React: Wenn wir auf mehrere wiederholte Codes stoßen, werden wir darüber nachdenken, wie wir diese Codes wiederverwenden können, anstatt eine Datei mit einer Reihe redundanter Codes zu füllen. Tatsächlich können sowohl Vue als auch React eine Wiederverwendung durch Extrahieren von Komponenten erreichen. Wenn Sie jedoch auf einige kleine Codefragmente stoßen und keine andere Datei extrahieren möchten, kann React im Vergleich dazu verwendet werden Deklarieren Sie das entsprechende Widget in der Datei , oder implementieren Sie es über die Renderfunktion, wie zum Beispiel: constDemo:FC=({msg})=>{returndemomsgis{msg}}constApp:FC=()=>{return(

So wählen Sie einen Avatar aus und schneiden ihn in Vue3 zu So wählen Sie einen Avatar aus und schneiden ihn in Vue3 zu May 29, 2023 am 10:22 AM

Der letzte Effekt besteht darin, die VueCropper-Komponente „garnaddvue-cropper@next“ zu installieren. Wenn es sich um Vue3 handelt oder Sie andere Methoden als Referenz verwenden möchten, besuchen Sie bitte die offizielle npm-Adresse. Es ist auch sehr einfach, es in einer Komponente zu referenzieren und zu verwenden. Sie müssen nur die entsprechende Komponente und ihre Stildatei einführen. Ich verweise hier nicht global, sondern nur auf import{userInfoByRequest}from'../js/api ' in meiner Komponentendatei. import{VueCropper}from'vue-cropper&

So verwenden Sie defineCustomElement zum Definieren von Komponenten in Vue3 So verwenden Sie defineCustomElement zum Definieren von Komponenten in Vue3 May 28, 2023 am 11:29 AM

Verwenden von Vue zum Erstellen benutzerdefinierter Elemente. WebComponents ist ein Sammelname für eine Reihe webnativer APIs, die es Entwicklern ermöglichen, wiederverwendbare benutzerdefinierte Elemente (Customelements) zu erstellen. Der Hauptvorteil von benutzerdefinierten Elementen besteht darin, dass sie mit jedem Framework verwendet werden können, auch ohne Framework. Sie sind ideal, wenn Sie Endbenutzer ansprechen, die möglicherweise einen anderen Front-End-Technologie-Stack verwenden, oder wenn Sie die endgültige Anwendung von den Implementierungsdetails der verwendeten Komponenten entkoppeln möchten. Vue und WebComponents sind komplementäre Technologien und Vue bietet hervorragende Unterstützung für die Verwendung und Erstellung benutzerdefinierter Elemente. Sie können benutzerdefinierte Elemente in bestehende Vue-Anwendungen integrieren oder Vue zum Erstellen verwenden

See all articles