Inhaltsverzeichnis
Empfohlene IDE-Einstellungen
Eingabeunterstützung. Vue in TS importiert
Installieren Sie pnpm
Abhängigkeiten installieren
useCountStore.ts
Pinia基本使用
router/index.ts-Konfigurationsinhalt lautet wie folgt:
main.ts-Konfigurationselement
#🎜🎜 #Dies wurde geändert und der folgende Code hat Vorrang.
Heim Web-Frontend View.js So konfigurieren Sie Vue3+TS+Vant3+Pinia

So konfigurieren Sie Vue3+TS+Vant3+Pinia

May 20, 2023 pm 07:57 PM
vue3 pinia vant3

Empfohlene IDE-Einstellungen

VS Code + Volar

Eingabeunterstützung. Vue in TS importiert

, da TypeScript keine Typinformationen verarbeiten kann. Vue-Importe werden standardmäßig mit generischen Vue-Komponententypen gefüllt. Wenn es Ihnen nur um den Requisitentyp der Vorlagenkomponente geht, ist dies in den meisten Fällen in Ordnung. Wenn Sie jedoch den tatsächlichen Requisitentyp erhalten möchten. Vue-Import können Sie den Übernahmemodus von Volar aktivieren, indem Sie die folgenden Schritte ausführen:

1. Führen Sie die Erweiterung aus: Zeigen Sie die integrierte Erweiterung aus der Befehlspalette von VS Code an, suchen Sie nach TypeScript- und JavaScript-Sprachfunktionen. Klicken Sie dann mit der rechten Maustaste auf Klicken und wählen Sie „Deaktivieren (Arbeitsbereich)“. Der Übernahmemodus wird automatisch aktiviert, wenn die standardmäßige TypeScript-Erweiterung deaktiviert ist.

2. Laden Sie das VS-Code-Fenster neu, indem Sie „Entwickler: Fenster neu laden“ aus der Befehlspalette ausführen.

Installieren Sie pnpm

#Leichtgewichtiges pnpm
Erklären Sie ein wenig
Das Prinzip von pnpm besteht darin, dass die entsprechende Kopie nicht gedankenlos gespeichert wird Bei Differenzdateien werden nur geänderte Dateien hinzugefügt, was gleichbedeutend damit ist, dass dieselben Teile dieser mehreren Projekte eine Version von Abhängigkeiten gemeinsam nutzen.

Auf diese Weise kann der Festplattenspeicher erheblich reduziert und die Installationsgeschwindigkeit beschleunigt werden. Um beispielsweise eine Abhängigkeit zu installieren, können Sie

npm install pnpm -g
Nach dem Login kopieren

verwenden Ich werde feststellen, dass es viel schneller als npm ist.

pnpm install
Nach dem Login kopieren

1. Vite installieren

Vite erstellen

yarn create vite
Nach dem Login kopieren

Abhängigkeiten installieren

npm i
Nach dem Login kopieren

Projekt starten

yarn dev
Nach dem Login kopieren

Wählen Sie die Version von Vue3+TS aus

Lokale Einführung von Pinia

npm add pinia@next
Nach dem Login kopieren

Sie können unten ein Anwendungsbeispiel sehen:

Sie können store/ unter dem entsprechenden src erstellen module/useCountStore.ts-Datei

Der spezifische Inhalt ist wie folgt:

useCountStore.ts

import { createApp } from 'vue'
import './style.css'
import App from './App.vue'
import {createPinia} from 'pinia'
const pinia = createPinia()
const app = createApp(App)
// 挂载到 Vue 根实例
app.use(pinia)
createApp(App).mount('#app')
Nach dem Login kopieren
# 🎜🎜# Nachdem die Daten geschrieben wurden, können sie in der Komponente verwendet werden 🎜#Dieses Plug-in kann bei Bedarf automatisch eingeführt werden. Komponente
  • Basierend auf dem Vite-Projektkonfigurations-Plugin

    Konfiguriert in vite.config.ts
  • import { defineStore } from 'pinia'
    Nach dem Login kopieren
  • Einführung der Komponente


    in vant-Komponente in main.ts einführen

    import { defineStore } from 'pinia'
    
    //定义容器
    //参数1:容器的id,必须唯一,将来pinia会把所有的容器挂载到根容器
    //参数2:选项对象
    //返回值是一个函数,调用得到容器实列
    export const useMainStore=defineStore('main',{
        //state类似于组件的data,用来存储全局状态的
        //state必须是函数:这样是为了在服务端渲染的时候避免交叉请求导致的数据状态污染
        //必须是箭头函数,这是为了TS更好的类型推导
       state:()=>{
       return{
          count:100,
          foo:'ber',
          arr:[1,2,3]
       }
       },
       //getters 类似于组件的computed,用来封装计算属性,有缓存功能
       //和vuex中的getters没有区别
       getters:{
          // 方式一:这里的state就是上面的state状态对象,使用参数可自动推到出返回值的类型
           count10(state){
           return state.count+20
           },
    
          //方式二:getters也可使用this
          //直接使用this,ts不会推导出返回值是什么类型,所以要手动标明返回值的类型
    /*        count10():number{
              return this.count+20
           }, */
    
    
          // 方式三:传递参数,但不使用参数,直接用this,获取值也可,自动推出返回值类型(不推荐使用)
    /*       count10(state){
             return this.count+20
          } */
       },
       //类似于组件的methods, 封装业务逻辑,修改state
       actions:{
          //注意不能使用箭头函数定义actions:因为箭头函数绑定外部this,会改变this指向
          //actions就是 通过this返回当前容器实例
          // 这里的actions里的事件接受参数
          // 这里的num:number为自定义参数,需要声明参数类型
          changeState(num:number){
             // this.count++;
             this.count+=num
             this.foo='hello!'
             this.arr.push(4)
    
             // 同理,actions里也可使用$patch
              this.$patch({})
              this.$patch(state=>{})
    
    
             //在此注意:patch和普通多次修改的区别在原理上的区别是
             // 1.涉及到数据响应式和视图更新,多次修改,修改几次视图就更新就更新几次
             // 2.patch 批量修改 视图只更新一次,更有利于性能优化
          }
       }
    })
    //使用容器中的state
    //修改 state
    //容器中的actions的使用
    Nach dem Login kopieren
  • 4. Router4 installieren
<template>
  <h4 id="Pinia基本使用">Pinia基本使用</h4>
  <p>{{mainStore.count}}</p>
  <p>{{mainStore.arr}}</p>
  {{mainStore.count10}}
  <hr />
  <p>解构mainStore后的渲染</p>
  <p>{{count}}</p>
  <p>{{foo}}</p>
  <hr />
  <p>
    <van-button type="success" @click="handleChangeState">修改数据</van-button>
  </p>
</template>
<script lang="ts" setup>
import { useMainStore } from "../../store/module/useCountStore";
import { storeToRefs } from "pinia";
const mainStore = useMainStore();
console.log(mainStore.count);
//可以直接解构mainStore,但是这样是有问题的,这样拿到的数据不是响应式的,是一次性的,之后count和foo的改变这里是不会变的
//Pinia其实就是把state数据都做了reactive处理了
//  const { count,foo}=mainStore

//解决不是响应式的办法 官方的一个api storeToRefs
// storeToRefs的原理是把结构出来的数据做ref响应式代理
const { count, foo } = storeToRefs(mainStore);

const handleChangeState = () => {
  // 数据的修改
  // 方式一:最简单的方式,直接调用修改
  mainStore.count++;

  //方式二:如果要修改多个数据,建议使用$patch 批量更新

  // 方式三:更好的批量更新的函数:$patch是一个函数,这个也是批量更新
  // 这里的state index.ts里的state
  mainStore.$patch((state) => {
    state.count++;
    state.foo = "hello!";
    state.arr.push(4);
  });

  //方式四:逻辑比较多的时候封装到actions中做处理
  mainStore.changeState(10);
};
</script>
Nach dem Login kopieren

# 🎜🎜#

router/index.ts-Konfigurationsinhalt lautet wie folgt:

// 两种都可以
npm i vant
npm i vant@next -s
Nach dem Login kopieren

main.ts-Konfigurationselement

# 通过 npm 安装
npm i unplugin-vue-components -D

# 通过 yarn 安装
yarn add unplugin-vue-components -D

# 通过 pnpm 安装
pnpm add unplugin-vue-components -D
Nach dem Login kopieren

App.vue

[Extern Link-Bildübertragung fehlgeschlagen, die Quellseite verfügt möglicherweise über einen Anti-Leeching-Mechanismus. Es wird empfohlen, das Bild zu speichern. Kommen Sie herunter und laden Sie es direkt hoch (img-TOITHQne-1658887594763)(./src/assets/image/MDImg/router.png) ]

5. Axios installieren

import vue from &#39;@vitejs/plugin-vue&#39;;
import Components from &#39;unplugin-vue-components/vite&#39;;
import { VantResolver } from &#39;unplugin-vue-components/resolvers&#39;;

export default {
  plugins: [
    vue(),
    Components({
      resolvers: [VantResolver()],
    }),
  ],
};
Nach dem Login kopieren

Dieses Paket kann als Referenz dienen

#🎜🎜 #Dies wurde geändert und der folgende Code hat Vorrang.

import { createApp } from &#39;vue&#39;;
import { Button } from &#39;vant&#39;;

const app = createApp();
app.use(Button);
Nach dem Login kopieren

service.ts#🎜 # auf der Seite So konfigurieren Sie Vue3+TS+Vant3+Pinia Wird zum Konvertieren von px in rem-Anpassung verwendet (was bedeutet, dass Sie nur den entsprechenden px-Wert eingeben müssen, und er kann automatisch auf der Seite angepasst werden, ohne dass rem manuell konvertiert werden muss. #🎜🎜 #

npm install vue-router
Nach dem Login kopieren

Viele Internetnutzer behaupten, eine neue postcss.config.ts-Datei zu erstellen. Da diese Schreibmethode bereits in Vite integriert ist, müssen Sie nur die entsprechende Konfiguration in der Datei vite.config.ts ausfüllen.

amfe-flexibles Plug-in

Grundwert festlegen

import { createRouter, createWebHistory,createWebHashHistory, RouteRecordRaw } from &#39;vue-router&#39;
import Home from &#39;../view/Home.vue&#39;;
const routes: Array<RouteRecordRaw> = [
  {
    path: &#39;/&#39;,
    name: &#39;index&#39;,
    component: Home,
  },
]
const router = createRouter({
  history: createWebHashHistory(),
  
 // history: createWebHistory(),
  routes
})
export default router;
Nach dem Login kopieren

Diese beiden Plug-ins sind unten aufgeführt.# 🎜🎜#
import App from &#39;./App.vue&#39;
import router from &#39;./router/index&#39;
app.use(router).mount(&#39;#app&#39;)
Nach dem Login kopieren

Rendering:

Das obige ist der detaillierte Inhalt vonSo konfigurieren Sie Vue3+TS+Vant3+Pinia. 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)
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Chat -Befehle und wie man sie benutzt
1 Monate 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

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

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 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 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 vue3+ts+axios+pinia, um eine sinnlose Aktualisierung zu erreichen So verwenden Sie vue3+ts+axios+pinia, um eine sinnlose Aktualisierung zu erreichen May 25, 2023 pm 03:37 PM

vue3+ts+axios+pinia realisiert sinnlose Aktualisierung 1. Laden Sie zuerst aiXos und pinianpmipinia im Projekt herunter--savenpminstallaxios--save2. AxiosResponse}from"axios";importaxiosfrom'axios';import{ElMess

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(

See all articles