• Day-03 从 0 开始搭建一套规范的 Vue3.x 项目工程环境


    六、集成路由工具 Vue Router

    1. 安装依赖 支持 Vue3 的路由工具 vue-router@4 

    1. npm i vue-router@4
    2. // 或者执行 安装最新开发版本(nightly build)
    3. npm i vue-router@next 

    2. 创建 src/router/index.ts 文件

    在 src 下创建 router 目录,然后在 router 目录里新建 index.ts 文件:

    1. └── src/
    2. ├── router/
    3. ├── index.ts // 路由配置文件

    根据本项目路由配置的实际情况,你需要在 src 下创建 views 目录,用来存储页面组件。

    1. import {createRouter, createWebHashHistory, RouteRecordRaw} from 'vue-router'
    2. import Home from '@/views/home/Index.vue'
    3. const Body = () => import('@/views/body/Index.vue');
    4. const routes: Array<RouteRecordRaw> = [
    5. {
    6. path: '/',
    7. name: 'Home',
    8. component: Home
    9. },
    10. {
    11. path: '/body',
    12. name: 'body',
    13. component: Body
    14. },
    15. ]
    16. const router = createRouter({
    17. history: createWebHashHistory(),
    18. routes
    19. })
    20. export default router

    我们在 views 目录下创建 /home/Index.vue 、body/Index.vue

    3. 在 main.ts 文件中挂载路由配置

    1. import { createApp } from 'vue'
    2. import App from './App.vue'
    3. import router from './router/index'
    4. createApp(App).use(router).mount('#app')

    3. 在 App.vue 增加路由占位符

    ps : 需要注意一下 

    @next 在 npm 包名称中的意思是:

    • 指向该包的最新开发版本(nightly build)

    • 而不是发布在 npm 仓库中的正式版本

    举个例子:

    • vue-router 是 vue-router 的正式发布版本

    • vue-router@next 是 vue-router 最新的开发版本

    使用 @next 的一些特点:

    • 包含未来可能发布的新功能

    • 代码质量可能不如正式版本稳定

    • 可能存在兼容性或bug问题

    • 每次安装版本号都可能不同

    相比之下:

    • 不加 @next 直接安装包名,会获取最新的稳定版本

    • 加上 @next 则直接从开发分支获取代码

    所以使用 @next 可以尝试最新的功能,但也需了解可能的风险。一般在生产环境不建议使用 @next,开发或测试环境可以根据需要选择使用。

     七、集成状态管理工具 Pinia

    Vue3中使用Pinia的基本步骤是:

    1. 安装Pinia

    npm install pinia

    2. 创建 src/store/index.ts 文件

    在 src 下创建 store目录,然后在 store目录里新建 index.ts 文件:

    1. └── src/
    2. ├── store/
    3. ├── index.ts // 路由配置文件
    1. import { defineStore } from 'pinia'
    2. import { ref, Ref } from 'vue';
    3. interface userInfo {
    4. userName:string,
    5. age:Number
    6. }
    7. export const useStore = defineStore('store', () => {
    8. const userInfo: Ref = ref({userName: 'lx', age: 26});
    9. const initUserInfo = (res: userInfo) => {
    10. userInfo.value = res
    11. };
    12. return {
    13. userInfo, initUserInfo,
    14. }
    15. })

    3.在 main.ts 文件中挂载 pinia  配置

    1. import { createApp } from 'vue'
    2. import './style.css'
    3. import App from './App.vue'
    4. import {createPinia} from 'pinia';
    5. const pinia = createPinia()
    6. const root = createApp(App);
    7. root.use(pinia)
    8. root.mount('#app')

    3. 页面中使用 

    1. <template>
    2. <div>
    3. <h1>{{ userInfo }}h1>
    4. div>
    5. template>
    6. <style scoped>style>

  • 相关阅读:
    GSCoolink GSV6127 HDMI 2.0/DisplayPort 1.4到MIPI CSI-2嵌入式MCU混合转换器芯片
    HTTP缓存小结
    在量化交易市场中常见的对冲策略类型有哪些?
    noip2011铺地毯
    【JAVA基础】【查漏补缺】01 - 运算符
    Pytorch的tensor数据类型 -- 常见用法介绍:
    某金融机构分布式数据库架构方案与运维方案设计分享
    k8s — Cluster Architecture
    linux中的lo介绍及作用(回环接口 回环IP)
    【软考-软件设计师精华知识点笔记】第七章 面向对象技术
  • 原文地址:https://blog.csdn.net/liuxin_hello/article/details/133345583