Vue3框架项目初始化

创建项目

  • vite 创建项目

    lua 复制代码
    pnpm create vite
  • 下载依赖

    css 复制代码
    pnpm i
  • 启动项目

    复制代码
    pnpm dev

路由配置

  • 下载插件

    css 复制代码
    pnpm install vue-router@4.4.5
  • 创建路由页面

  • 路由映射

    javascript 复制代码
    import { createRouter, createWebHashHistory } from 'vue-router';
    import Home from './pages/home.vue';
    import ArticleDetail from './pages/article-detail.vue';
    
    const routes = [
      { path: '/', redirect: '/home' },
      { path: '/home', component: Home },
      { path: '/article-detail', component: ArticleDetail },
    ];
    
    const router = createRouter({
      history: createWebHashHistory(),
      routes,
    });
    
    export default router;
  • 注册路由

    javascript 复制代码
    import { createApp } from 'vue';
    import './style.css';
    import App from './App.vue';
    // 路由
    import router from './router.js';
    
    const app = createApp(App);
    
    app.use(router).mount('#app');

状态管理Pinia配置

  • 下载插件

    复制代码
    pnpm install pinia pinia-plugin-persistedstate
  • store/user.js

    javascript 复制代码
    import { ref } from 'vue';
    import { defineStore } from 'pinia';
    
    export const userStore = defineStore(
      'user',
      () => {
        const username = ref('');
    
        const changeUsername = (value) => {
          username.value = value;
        };
    
        return { username, changeUsername };
      },
      {
        persist: true, // 数据持久化
      },
    );
  • 配置注册

    javascript 复制代码
    import { createApp } from 'vue';
    import './style.css';
    import App from './App.vue';
    // 路由
    import router from './router.js';
    // Pinia
    import { createPinia } from 'pinia';
    import piniaPluginPersistedstate from 'pinia-plugin-persistedstate';
    
    const app = createApp(App);
    const pinia = createPinia();
    
    // 配置数据持久化
    pinia.use(piniaPluginPersistedstate);
    
    app.use(router).use(pinia).mount('#app');
  • 测试使用

    xml 复制代码
    <script setup>
    import { userStore } from "../store/user";
    
    const user = userStore();
    
    function test() {
      user.setUsername("Steven Wong");
    }
    </script>
    
    <template>
      <div>{{ user.username }}</div>
    </template>

Element Plus配置

  • 下载插件

    bash 复制代码
    pnpm install element-plus @element-plus/icons-vue
    javascript 复制代码
    import { createApp } from 'vue';
    import './style.css';
    import App from './App.vue';
    // 路由
    import router from './router.js';
    // Pinia
    import { createPinia } from 'pinia';
    import piniaPluginPersistedstate from 'pinia-plugin-persistedstate';
    // Element Plus
    import ElementPlus from 'element-plus';
    import 'element-plus/dist/index.css';
    import * as ElementPlusIconsVue from '@element-plus/icons-vue';
    
    const app = createApp(App);
    const pinia = createPinia();
    
    // 配置数据持久化
    pinia.use(piniaPluginPersistedstate);
    
    // 自动引入图标
    Object.keys(ElementPlusIconsVue).forEach((key) => {
      app.component(key, ElementPlusIconsVue[key]);
    });
    
    app.use(router).use(pinia).use(ElementPlus).mount('#app');
  • 测试使用button

bash 复制代码
<el-button type="primary">测试</el-button>
相关推荐
牧艺41 分钟前
cos-design 4.0:91 个特效组件一次捅成 React / Vue / Web Components / Core
前端·vue.js·web components
_少年游42 分钟前
Vue 3 中 watch 与 watchEffect 的深度解析:从用法差异到源码实现
vue.js
卤蛋fg643 分钟前
vue 表格组件 vxe-table 鼠标滑动选择多行
vue.js
A黄俊辉A5 天前
uniapp webview中实现 app和内嵌的H5双向通信
vue.js·json
honkun66 天前
vue 表格组件 vxe-table 配置 ajax 请求自动加载数据与表单查询
vue.js·vxe-table
kybs19916 天前
全球灾害数据分析可视化 毕业设计-附源码66794
vue.js·spring boot·mysql·安全·django·c#·asp.net
雪芽蓝域zzs6 天前
第26章:ECharts 自定义主题 + 页面一键切换主题(深色 / 浅色两套)
vue.js·echars
雪芽蓝域zzs6 天前
第22章:ECharts 图表联动(多图表交互联动)
vue.js·echars
daols886 天前
vue 表格组件 vxe-table 实现虚拟滚动与无需滚动加载
vue.js·vxe-table