Vite+vue3+Ts+pinia開發(fā)(二:路由孕豹、pinia涩盾、UI庫安裝)

首先你完成了如下:
Vite+vue3+Ts+pinia實(shí)戰(zhàn)(一:初始、基礎(chǔ)安裝励背、踩坑)

初始目錄:

image.png

一春霍、先裝路由、pinia叶眉、UI庫

npm install vue-router@4
npm install pinia
npm install element-plus --save

此時(shí)package.json

{
  "name": "cq-function",
  "private": true,
  "version": "0.0.0",
  "type": "module",
  "scripts": {
    "dev": "vite",
    "build": "vue-tsc --noEmit && vite build",
    "preview": "vite preview"
  },
  "dependencies": {
    "element-plus": "^2.2.10",
    "pinia": "^2.0.16",
    "vue": "^3.2.37",
    "vue-router": "^4.1.2"
  },
  "devDependencies": {
    "@vitejs/plugin-vue": "^3.0.0",
    "typescript": "^4.6.4",
    "vite": "^3.0.0",
    "vue-tsc": "^0.38.4"
  }
}

二址儒、新建并使用router、store衅疙、UI庫

2.1 在src目錄下新建router\index.ts如下:

import { createRouter, createWebHistory } from "vue-router";
const router = createRouter({
    history: createWebHistory(),
    routes: [
        {
            path: "/",
            //  路由懶加載
            component: () => import("../components/HelloWorld.vue"),
        },
    ],
});
export default router;

2.2 在src目錄下新建store\index.ts如下:

// store/index.ts
import { defineStore } from "pinia";
// defineStore(key,options) 必須傳遞一個(gè)唯一key作為標(biāo)識(shí)
export const useCounterStore = defineStore("counterStore", {
    state: () => ({
        counter: 0,
    }),
    actions: {
        // 方法 可以是異步 async addCounter(){}
        // 在這里也可以訪問其他的store
        addCounter() {
            this.counter++;
        },
    },
    getters: {
        doubleCounter(state): number {
            // 可以使用this
            // return this.counter * 2
            // 在這里也可以訪問其他的store
            return state.counter * 2;
        },
    },
});

2.3 修改App.vue

<script setup lang="ts">
// This starter template is using Vue 3 <script setup> SFCs
// Check out https://vuejs.org/api/sfc-script-setup.html#script-setup
</script>

<template>
    <div>
        <a  target="_blank">
            <img src="/vite.svg" class="logo" alt="Vite logo" />
        </a>
        <a  target="_blank">
            <img src="./assets/vue.svg" class="logo vue" alt="Vue logo" />
        </a>
    </div>
    <router-view />
</template>

<style scoped>
.logo {
    height: 6em;
    padding: 1.5em;
    will-change: filter;
}
.logo:hover {
    filter: drop-shadow(0 0 2em #646cffaa);
}
.logo.vue:hover {
    filter: drop-shadow(0 0 2em #42b883aa);
}
</style>

2.4 修改main.ts

import { createApp } from 'vue'
import './style.css'
import App from './App.vue'
// 引入餓了么UI庫以及對(duì)應(yīng)的樣式
import ElementPlus from 'element-plus'
import 'element-plus/dist/index.css'
// 引入路由模塊
import router from './router'
// 引入Store
import { createPinia } from 'pinia'
// 鏈?zhǔn)骄幊?use(router).use(createPinia()).use(ElementPlus)
createApp(App).use(router).use(createPinia()).use(ElementPlus).mount('#app')

2.5 修改HelloWorld.vue

<template>
    <h1>HelloWorld</h1>
    <h3>counter:{{ counter }}</h3>
    <h3>doubleCounter:{{ doubleCounter }}</h3>
    <el-button @click="addCounter">counter++</el-button>
    <br />
    <el-button @click="replaceStore">替換state狀態(tài)值</el-button>
</template>

<script setup lang='ts'>
import { storeToRefs } from "pinia";
import { useCounterStore } from "../store";
const counterStore = useCounterStore();
// 第一次改變store狀態(tài) $path對(duì)象形式
// const addCounter = () => {
//   counterStore.$patch({
//     counter: counterStore.counter + 1
//   })
// }
// 第二種修改store狀態(tài) $path 傳遞回調(diào)函數(shù) 第一個(gè)參數(shù)就是state
// const addCounter = () => {
//   counterStore.$patch((store) => {
//     store.counter++
//   })
// }
// 第三種修改store狀態(tài) 直接通過store修改
// const addCounter = () => {
//   counterStore.counter++
// }
// 第四種修改store狀態(tài)
const addCounter = () => {
    counterStore.addCounter();
};

// 訪問state的狀態(tài)兩個(gè)方法
// !不能這樣使用 因?yàn)閬G掉了響應(yīng)式
// const { counter, doubleCounter } = counterStore

// 一使用pinia自帶的storeToRefs
const { counter, doubleCounter } = storeToRefs(counterStore);

// 二使用vue的computer 從store中讀取
// const counter = computed(() => counterStore.counter)
// const doubleCounter = computed(() => counterStore.doubleCounter)

// 替換狀態(tài)已有的屬性值 相當(dāng)于重新賦值而已
const replaceStore = () => {
    counterStore.$state = { counter: 20 };
};
</script>

至此:路由莲趣,pinia、ui庫的安裝以及使用完事炼蛤。當(dāng)然這里只是簡(jiǎn)單的講怎么使用妖爷,更具體的參考官方文檔。再第一篇里有官方文檔鏈接,這里就不重復(fù)復(fù)述了絮识。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末绿聘,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子次舌,更是在濱河造成了極大的恐慌熄攘,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,311評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件彼念,死亡現(xiàn)場(chǎng)離奇詭異挪圾,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)逐沙,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門哲思,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人吩案,你說我怎么就攤上這事棚赔。” “怎么了徘郭?”我有些...
    開封第一講書人閱讀 152,671評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵靠益,是天一觀的道長。 經(jīng)常有香客問我残揉,道長胧后,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,252評(píng)論 1 279
  • 正文 為了忘掉前任抱环,我火速辦了婚禮壳快,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘镇草。我一直安慰自己濒憋,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,253評(píng)論 5 371
  • 文/花漫 我一把揭開白布陶夜。 她就那樣靜靜地躺著凛驮,像睡著了一般。 火紅的嫁衣襯著肌膚如雪条辟。 梳的紋絲不亂的頭發(fā)上黔夭,一...
    開封第一講書人閱讀 49,031評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音羽嫡,去河邊找鬼本姥。 笑死,一個(gè)胖子當(dāng)著我的面吹牛杭棵,可吹牛的內(nèi)容都是我干的婚惫。 我是一名探鬼主播氛赐,決...
    沈念sama閱讀 38,340評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼先舷!你這毒婦竟也來了烈拒?” 一聲冷哼從身側(cè)響起嫂丙,我...
    開封第一講書人閱讀 36,973評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤喝峦,失蹤者是張志新(化名)和其女友劉穎惠险,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體捺球,經(jīng)...
    沈念sama閱讀 43,466評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡缸浦,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,937評(píng)論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了氮兵。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片裂逐。...
    茶點(diǎn)故事閱讀 38,039評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖泣栈,靈堂內(nèi)的尸體忽然破棺而出絮姆,到底是詐尸還是另有隱情,我是刑警寧澤秩霍,帶...
    沈念sama閱讀 33,701評(píng)論 4 323
  • 正文 年R本政府宣布,位于F島的核電站蚁阳,受9級(jí)特大地震影響铃绒,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜螺捐,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,254評(píng)論 3 307
  • 文/蒙蒙 一颠悬、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧定血,春花似錦赔癌、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至茫虽,卻和暖如春刊苍,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背濒析。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來泰國打工正什, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人号杏。 一個(gè)月前我還...
    沈念sama閱讀 45,497評(píng)論 2 354
  • 正文 我出身青樓婴氮,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子主经,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,786評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容