当前位置: 首页 > article >正文

从零搭建一个Vue3 + Typescript的脚手架——day3

3.项目拓展配置

(1).配置Pinia

Pinia简介
Pinia 是 Vue.js 3 的状态管理库,它是一个轻量级、灵活、易于使用的状态管理库。Pinia 是 Vue.js 3 的官方状态管理库,它可以帮助开发者更好地管理应用的状态。Pinia 是一个开源项目,它有丰富的文档和示例,可以帮助开发者快速上手。Pinia 是一个强大的工具,它可以处理 Vue.js 3 的许多方面,包括状态管理、路由、组件通信等。Pinia 是一个非常重要的工具,它可以帮助开发者更好地使用 Vue.js 3,并且可以提高应用的质量和性能。
安装配置

  • 使用pnpm安装pinia
pnpm add pinia -D
  • 在src目录下创建一个store文件夹,然后在store文件夹下创建一个index.ts文件,将基础内容写入:
import { createPinia } from 'pinia'

const pinia = createPinia()

export default pinia

在src/main.ts文件中引入pinia

import { createApp } from 'vue'
import App from './App.vue'
import router from './router'
import pinia from './store'

const app = createApp(App)
app.use(router)
app.use(pinia)
app.mount('#app')
  • 配置pinia持久化插件,使用pnpm安装pinia-plugin-persist
pnpm add pinia-plugin-persist -D
  • 在src/store/index.ts文件中引入pinia-plugin-persist
import { createPinia } from 'pinia'
import piniaPluginPersist from 'pinia-plugin-persist'

const pinia = createPinia()
pinia.use(piniaPluginPersist)

export default pinia

(2).配置vite路径别名

  • 在vite.config.ts文件中添加配置
resolve: {
    alias: {
      '@': path.resolve(__dirname, 'src')
    }
  }
  • 在tsconfig.json文件中添加配置
{
      "baseUrl": ".",
      "paths": {
        "@/*": ["src/*"]
      }
},

注意: 项目配置到这里之后,在vite.config.ts文件中导入path模块式会提示找不到模块或类型,这里是需要安装node模块的类型文件。

pnpm install --save-dev @types/node
  • 在tsconfig.json文件中添加配置
{
  "compilerOptions": {
    "noImplicitAny": true,
  }
}
  • 并且在package.json文件中添加配置
{
  "type": "module"
}
  • 配置完之后我们会发现,在vite.config.ts文件中使用node中的__dirname会提示可能为未定义,因为我们使用vite是es模块,而__dirname是node模块中存在,因此这里我们使用import.meta.url来获取路径,手动生成__dirname
import { defineConfig } from "vite";
import vue from "@vitejs/plugin-vue";
import path, { resolve } from "path"
import { fileURLToPath } from "url";

const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);

export default defineConfig({
  plugins: [
    vue(),
  ],
  // 配置别名
  resolve: {
    alias: {
      "@": resolve(__dirname, "src"),
    },
  },
});

(3).封装一个Vue的插件注册功能

  • 使用pnpm安装@element-plus/icons-vue
pnpm install @element-plus/icons-vue
  • 在src下创建一个plugins文件夹,创建一个index.ts文件
    然后再plugins中创建一个ElementPlusIcon文件夹,在文件夹中创建一个index.ts文件
    写入组件注册代码
// plugins/ElementPlusIcon/index.ts
import { type App } from "vue"
import * as ElementPlusIconsVue from "@element-plus/icons-vue"

export function loadElementPlusIcon(app: App) {
  /** 注册所有 Element Plus Icon */
  for (const [key, component] of Object.entries(ElementPlusIconsVue)) {
    app.component(key, component)
  }
}
  • 在plugins/index.ts文件中引入执行
import { type App } from "vue"
import { loadElementPlusIcon } from "./ElementPlusIcon"

export function loadPlugins(app: App) {
  loadElementPlusIcon(app)
}

  • 在main.ts文件中引入执行
import { loadPlugins } from "@/plugins"

loadPlugins(app)

(4).配置自定义指令

  • 在src下创建一个directives文件夹,创建一个index.ts文件
import type { App } from 'vue'
// 挂载自定义指令
export default function initDirective(app: App) {
    //  使用app.directive()方法注册自定义指令
}
  • 在main.ts文件中引入执行
import { initDirective } from "@/directives"

initDirective(app)

http://www.kler.cn/a/526140.html

相关文章:

  • Sqoop源码修改:增加落地HDFS文件数与MapTask数量一致性检查
  • 【学术会议征稿-第二届生成式人工智能与信息安全学术会议(GAIIS 2025)】人工智能与信息安全的魅力
  • 为大模型提供webui界面的利器:Open WebUI 完全本地离线部署deepseek r1
  • C++ 静态变量static的使用方法
  • Hive:日志,hql运行方式,Array,行列转换
  • 【NLP251】NLP RNN 系列网络
  • LeetCode:63. 不同路径 II
  • 在K8s中部署动态nfs存储provisioner
  • 基于 Redis GEO 实现条件分页查询用户附近的场馆列表
  • React第二十八章(css modules)
  • 在彼此的根系里呼吸
  • OpenEuler学习笔记(十七):OpenEuler搭建Redis高可用生产环境
  • V103开发笔记1-20250113
  • 类文件结构
  • Baklib如何提升企业知识管理效率与市场竞争力的五大对比分析
  • FFmpeg rtmp推流直播
  • 道氏理论简介
  • Baklib深入解析企业内容管理与内容中台的本质差异
  • P1044 [NOIP2003 普及组] 栈 C语言
  • Autogen_core: ClosureAgent使用与测试
  • selenium定位网页元素
  • 如何使用深度学习中的 Transformer 算法进行视频目标检测
  • C基础寒假练习(4)
  • 【Rust自学】17.3. 实现面向对象的设计模式
  • MSU:通过图结构增强LLM推理
  • Vue3的el-table-column下拉输入实时查询API数据选择的实现方法