当前位置:   article > 正文

Vite + pinia+ ts +vue3 + vue-routes 笔记_const home={template

const home={template

Pinia,Vue生态里Vuex的代替者_东宇科技的博客-CSDN博客我们通过创建一个简单的demo,来认识下pinia .....安装创建项目npm init vite@latestnpm install pinia....引用storeimport { createPinia } from 'pinia' const pinia = createPinia()const app =createApp(App) app.use(pinia)app.mount('#app')....创建stroeimport { defineStore} from https://blog.csdn.net/ldy889/article/details/123481222

1、接着上一篇 按照vue-Route官方笔记,我需要修改下。

  1. // 1. 定义路由组件.
  2. // 也可以从其他文件导入
  3. const Home = { template: '<div>Home</div>' }
  4. const About = { template: '<div>About</div>' }
  5. // 2. 定义一些路由
  6. // 每个路由都需要映射到一个组件。
  7. // 我们后面再讨论嵌套路由。
  8. const routes = [
  9. { path: '/', component: Home },
  10. { path: '/about', component: About },
  11. ]
  12. // 3. 创建路由实例并传递 `routes` 配置
  13. // 你可以在这里输入更多的配置,但我们在这里
  14. // 暂时保持简单
  15. const router = VueRouter.createRouter({
  16. // 4. 内部提供了 history 模式的实现。为了简单起见,我们在这里使用 hash 模式。
  17. history: VueRouter.createWebHashHistory(),
  18. routes, // `routes: routes` 的缩写
  19. })
  20. // 5. 创建并挂载根实例
  21. const app = Vue.createApp({})
  22. //确保 _use_ 路由实例使
  23. //整个应用支持路由。
  24. app.use(router)
  25. app.mount('#app')
  26. // 现在,应用已经启动了!

修改 main.ts 为

  1. import { createApp } from 'vue'
  2. import App from './App.vue'
  3. //引入 pinia store
  4. import { createPinia } from 'pinia'
  5. //引入 element-plus
  6. import ElementPlus from 'element-plus'
  7. import 'element-plus/dist/index.css'
  8. import Router from './router'
  9. // createApp(App).mount('#app')
  10. const pinia = createPinia()
  11. const app =createApp(App)
  12. app.use(pinia)
  13. app.use(ElementPlus)
  14. app.use(Router)
  15. app.mount('#app')

 创建router/index.ts;

  1. import { createRouter, createWebHashHistory } from 'vue-router'
  2. const Home = { template: '<div>Home</div>' }
  3. const Router = createRouter({
  4. history: createWebHashHistory(),
  5. routes: [{
  6. path: '/',
  7. name: 'home',
  8. component: Home
  9. }]
  10. })
  11. export default Router

这就可以了。然而运行的时候却有提示。

runtime-core.esm-bundler.js:38 [Vue warn]: Component provided template option but runtime compilation is not supported in this build of Vue. Configure your bundler to alias "vue" to "vue/dist/vue.esm-bundler.js".

所以,需要修改 vite.config.ts

  1. import { defineConfig } from 'vite'
  2. import vue from '@vitejs/plugin-vue'
  3. // https://vitejs.dev/config/
  4. export default defineConfig({
  5. plugins: [vue()],
  6. resolve:{
  7. alias:{
  8. 'vue':'vue/dist/vue.esm-bundler.js'
  9. }
  10. }
  11. })

 最后陈宫了。接下来我开始弄路由懒加载

 我按照官方的方法这样做,发下会报错。于是,在vite官网发现了glob懒加载。。。

 于是修改routes/index.ts 

  1. import { createRouter, createWebHashHistory } from 'vue-router'
  2. const modules = import.meta.glob('../views/*/*.vue')
  3. for (const path in modules) {
  4. modules[path]().then((mod) => {
  5. console.log(path, mod)
  6. })
  7. }
  8. const Router = createRouter({
  9. history: createWebHashHistory(),
  10. routes: [{
  11. path: '/',
  12. name: 'home',
  13. component: modules['../views/404/404.vue']
  14. }]
  15. })
  16. export default Router

创建 views/404/404.vue

  1. <template>
  2. <div>
  3. 404
  4. </div>
  5. </template>
  6. <script>
  7. export default {
  8. name: 'Page404',
  9. computed: {
  10. message() {
  11. return 'The webmaster said that you can not enter this page...'
  12. }
  13. }
  14. }
  15. </script>
  16. <style lang="scss" scoped>
  17. </style>

最后我们成功的按照路由,来到了404页面。

说时迟那时快,我又创建了login,dashboard两个页面,试一试路由的跳转

切换路由是没问题了。单页切换实现。现在要是dashboard是一个有layout的嵌套路由页面。这样登录后一般去到dashboard页面。然后点到不存在的页面后去到404.

 

hidden这个字段不是Router里的,暂时用不了,是我们用来判断是否需要显示在左边导航栏里的。

 

 

 layout/index.vue

  1. <template>
  2. <div class="app-wrapper">
  3. sidediv
  4. <div class="main-container">
  5. navdiv
  6. <router-view></router-view>
  7. </div>
  8. </div>
  9. </template>
  10. <script>
  11. export default {
  12. name: "Layout",
  13. };
  14. </script>
  15. <style lang="scss" scoped></style>
  1. import { createRouter, createWebHashHistory } from "vue-router";
  2. import Layout from "../layout/index.vue";
  3. declare module "vue-router" {
  4. interface RouteMeta {
  5. // 是可选的
  6. isAdmin?: boolean;
  7. // 每个路由都必须声明
  8. requiresAuth?: boolean;
  9. }
  10. }
  11. const modules = import.meta.glob("../views/*/*.vue");
  12. for (const path in modules) {
  13. modules[path]().then((mod) => {
  14. console.log(path, mod);
  15. });
  16. }
  17. const Router = createRouter({
  18. history: createWebHashHistory(),
  19. routes: [
  20. {
  21. path: "/login",
  22. component: modules["../views/login/index.vue"],
  23. },
  24. {
  25. path: "/404",
  26. component: modules["../views/404/404.vue"],
  27. },
  28. {
  29. path: "/",
  30. component: Layout,
  31. redirect: "/dashboard",
  32. children: [
  33. {
  34. path: "dashboard",
  35. name: "Dashboard",
  36. component: modules["../views/dashboard/index.vue"],
  37. meta: { title: "Dashboard", icon: "dashboard" },
  38. },
  39. ],
  40. },
  41. ],
  42. });
  43. export default Router;

这样完成了一个嵌套路由。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/896274
推荐阅读
  

闽ICP备14008679号