Vue3+vite搭建基础架构(6)--- 使用vue-router

这篇具有很好参考价值的文章主要介绍了Vue3+vite搭建基础架构(6)--- 使用vue-router。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

说明

这里记录下自己在Vue3+vite的项目使用vue-router的过程,不使用ts语法,方便以后直接使用。这里承接自己的博客Vue3+vite搭建基础架构(5)— 使用vue-i18n这篇博客,在该博客项目的基础上增加使用vue-router。

官方文档

Vue3使用vue-router官方文档:https://router.vuejs.org/zh/installation.html

安装vue-router

根据官网给的安装命令如下:

npm install vue-router@4

在webstorm里面的Terminal输入npm install vue-router@4命令安装该依赖。执行完如下:
Vue3+vite搭建基础架构(6)--- 使用vue-router,前端,vue.js,前端,javascript,html5,vue

package.json会增加vue-router版本号
Vue3+vite搭建基础架构(6)--- 使用vue-router,前端,vue.js,前端,javascript,html5,vue

使用vue-router

在src目录下新建router文件夹,在该文件夹里面创建一个index.js文件。
Vue3+vite搭建基础架构(6)--- 使用vue-router,前端,vue.js,前端,javascript,html5,vue

router文件夹下的index.js代码:

//引入router路由做页面请求
import { createRouter,createWebHashHistory } from 'vue-router'
/* Layout通用组件 */
import Layout from '../views/layout/layout'

//前端页面路由地址
const routes = [
  {path: '/404', component: () => import('@/views/404')},
  //必须要把组件放在Layout的children里面,才能在侧边栏的右侧显示页面内容,否则不加载通用架构直接在当前空白页面渲染内容,如:404页面
  {
    path: '',
    component: Layout,
    redirect: '/home',
    children: [
      {
        path: 'home',
        name: 'home',
        component: () => import('@/views/home/index'),
        meta: {title: '首页', icon: 'home'}
      },
      {
        path: 'hello',
        name: 'hello',
        component: () => import('@/components/HelloWorld'),
        meta: {title: '测试页', icon: 'hello'}
      }
    ]
  }
]

// 3. 创建路由实例并传递 `routes` 配置
const router = createRouter({
  // 4. 内部提供了 history 模式的实现。为了简单起见,我们在这里使用 hash 模式。
  history: createWebHashHistory(),
  routes, // `routes: routes` 的缩写
})

//路由前置守卫
router.beforeEach((to, from, next) => {
  //路由发生变化修改页面title
  if (to.meta.title) {
    document.title = to.meta.title
  }
  next()
})

//导出路由
export default router

在main.js里面引入router配置:
Vue3+vite搭建基础架构(6)--- 使用vue-router,前端,vue.js,前端,javascript,html5,vue
代码如下:

import { createApp } from 'vue'
//引入element-plus
import ElementPlus from 'element-plus'
import 'element-plus/dist/index.css'
//将element-plus里面默认语言英文改为中文,需要引入它
import zhCn from 'element-plus/dist/locale/zh-cn.mjs'
//引入dayjs日期插件
import dayjs from 'dayjs'
//引入国际化配置
import lang from './locale'
//引入router路由
import router from './router'
import './style.css'
import App from './App.vue'

const app = createApp(App)
//使用element-plus,并设置语言为中文
app.use(ElementPlus, {
  locale: zhCn,
})
//通过provide全局注入工具函数
app.provide('$dayjs', dayjs)
//国际化配置使用
app.use(lang)
//使用router路由
app.use(router)
app.mount('#app')

路由里面配置了几个页面地址,这里贴上对应页面代码,404图片随便网上找一个就行。
Vue3+vite搭建基础架构(6)--- 使用vue-router,前端,vue.js,前端,javascript,html5,vue

在src目录下新建views文件夹,在views文件夹下新建404.vue页面。
404页面代码如下:

<template>
  <div>
    <div class="app-container">
      <el-col :span="12">
        <img :src="img_404" alt="404" class="img-style">
      </el-col>
      <el-col :span="12">
        <div style="margin-left: 100px;margin-top: 60px">
          <h1 class="color-main">OOPS!</h1>
          <h2 style="color: #606266">很抱歉,页面它不小心迷路了!</h2>
          <div style="color:#909399;font-size: 14px">请检查您输入的网址是否正确,请点击以下按钮返回主页或者发送错误报告</div>
          <el-button style="margin-top: 20px" type="primary" round @click="handleGoMain">返回首页</el-button>
        </div>
      </el-col>
    </div>
  </div>
</template>

<script setup>
  import img_404 from '@/assets/images/gif_404.gif'
  import { useRouter } from "vue-router"

  //使用router跳转路由
  const router=useRouter()

  const handleGoMain = () => {
    //跳转到首页
    router.push({ path: '/home' })
  }

</script>

<style scoped>
  .app-container {
    width: 80%;
    margin: 120px auto;
  }

  .img-style {
    width: auto;
    height: auto;
    max-width: 100%;
    max-height: 100%;
  }
</style>

home文件夹下的index.js代码,将App.vue页面代码移到home文件夹下的index.js里面:

<template>
  <p>当前语言的title值:{{$t('title')}}</p>
  <p>当前语言的title值:{{t('title')}}</p>
  <el-button type="primary">Primary</el-button>
  <el-button type="success">Success</el-button>

  <!--日期选择器-->
  <el-date-picker
      v-model="dateValue"
      type="date"
      placeholder="请选择一天"
  />
</template>

<script setup name="home">
  import {ref, inject, onMounted ,getCurrentInstance} from 'vue'
  import {getCurrentDate,getDateDiff,getXBeforeDate,getIntermediateDate} from '@/utils/dateUtil'
  import {login,test} from '@/api/login'
  import { useI18n } from 'vue-i18n'

  console.info("useI18n()=",useI18n())
  //使用i18n
  const {t,locale} = useI18n()

  //日期变量,使用ref进行双向绑定
  const dateValue = ref('')
  //获取日期变量值,需要加.value来获取值
  console.info("dateValue=",dateValue.value)

  //onMounted页面初始化完成后执行
  onMounted(()=>{
    //获取在main.js里面使用provide全局注册的函数
    /*const dayjs=inject('$dayjs')
    //使用dayjs将当前时间转换为指定样式
    console.log("dayjs=",dayjs(new Date()).format('YYYY-MM-DD HH:mm:ss'))
    //使用dateUtil工具类获取当前时间
    console.log("当前日期=",getCurrentDate())
    //计算2个日期之间相差多少天,只要开始日期和结束日期格式保持一致就行,日期格式为YYYY-MM-DD或者YYYY-MM-DD HH:mm:ss都能计算
    console.log("相差天数为=",getDateDiff('2024-02-01','2024-03-01','day'))
    //获取之前日期
    console.log("获取当前日期的前6天日期=",getXBeforeDate(getCurrentDate(),6,'day'))
    //获取开始日期与结束日期之间的所有日期
    console.log("开始日期到结束日期=",getIntermediateDate('2024-02-01','2024-02-15',1,'day'))

    //接口请求发送示例
    const data={username:"test111",password:"123456"}
    test(data).then(response => {
      console.info("请求成功")
    }).catch(error => {
      console.log(error)
    })*/
    //获取当前语言类型
    console.log("当前语言:",locale.value)
    //将默认语言中文改为英文
    locale.value='en'
    console.log("当前语言:",locale.value)
  })
</script>

<style scoped>

</style>

App.vue下修改后的代码如下:

<template>
  <div>
    <!--路由入口 在App.vue中使用<router-view>组件来渲染要显示的组件-->
    <router-view/>
  </div>
</template>

<script setup name="App">

</script>

<style scoped>

</style>

layout文件夹下的layout.vue代码:

<template>
  <div>
    <el-container>
      <!--头部-->
      <el-header>
        <Navbar></Navbar>
      </el-header>
      <el-container>
        <!--侧边栏-->
        <el-aside width="200px">
          <SliderBar></SliderBar>
        </el-aside>
        <!--主体内容-->
        <el-main>
          <AppMain>
          </AppMain>
        </el-main>
      </el-container>
    </el-container>
  </div>
</template>

<script>
  import { Navbar, SliderBar, AppMain } from './components/index.js'

  export default {
    name: "layout",
    components: {
      Navbar,
      SliderBar,
      AppMain
    }
  }
</script>

<style scoped>

</style>

layout文件夹下components文件夹下的navbar.vue代码:

<!--通用布局头部内容-->
<template>
  <div>我是头部</div>
</template>

<script setup name="navbar">

</script>

<style scoped>

</style>

layout文件夹下components文件夹下的appMain.vue代码:

<!--通用布局页面主体内容-->
<template>
  <div>
    <!--页面内容加载在这里-->
    <router-view></router-view>
  </div>
</template>

<script setup name="AppMain">

</script>

<style scoped>

</style>

layout文件夹下components文件夹下sliderBar下的sliderBar.vue代码:

<!--通用布局侧边栏内容-->
<template>
  <div>我是侧边栏</div>
</template>

<script setup name="SliderBar">

</script>

<style scoped>

</style>

layout文件夹下components文件夹下sliderBar下的menuTree.vue代码:

<!--菜单树列表-->
<template>

</template>

<script setup name="MenuTree">

</script>

<style scoped>

</style>

layout文件夹下components文件夹下的index.js代码:

export { default as Navbar} from './navbar.vue'
export { default as SliderBar } from './sliderBar/sliderBar.vue'
export { default as AppMain } from './appMain'

测试vue-router

默认进入首页测试,浏览器结果如下:
Vue3+vite搭建基础架构(6)--- 使用vue-router,前端,vue.js,前端,javascript,html5,vue
404页面测试,浏览器结果如下:
Vue3+vite搭建基础架构(6)--- 使用vue-router,前端,vue.js,前端,javascript,html5,vue
hello测试页浏览器结果如下:
Vue3+vite搭建基础架构(6)--- 使用vue-router,前端,vue.js,前端,javascript,html5,vue
这里通用布局layout组件是在页面中间,解决方式是在main.js删除默认的全局样式。删除这句代码,后面全局样式引入自己写的。如下:
Vue3+vite搭建基础架构(6)--- 使用vue-router,前端,vue.js,前端,javascript,html5,vue
结果如下,不在显示在页面中间,显示正常:
Vue3+vite搭建基础架构(6)--- 使用vue-router,前端,vue.js,前端,javascript,html5,vue

到这里router路由测试就结束了,页面可以正常跳转,说明router引入没有问题,layout通用布局页面先写个空的,等后面写菜单栏的时候会用上。文章来源地址https://www.toymoban.com/news/detail-831479.html

到了这里,关于Vue3+vite搭建基础架构(6)--- 使用vue-router的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 从0搭建Vue3组件库(五): 如何使用Vite打包组件库

    本篇文章将介绍如何使用 vite 打包我们的组件库,同时告诉大家如何使用插件让打包后的文件自动生成声明文件(*.d.ts) 打包配置 vite 专门提供了库模式的打包方式,配置其实非常简单,首先全局安装 vite 以及@vitejs/plugin-vue pnpm add vite @vitejs/plugin-vue -D -w 在 components 文件下新建vite.

    2024年01月24日
    浏览(30)
  • vite+vue3+ts搭建项目八(打包性能优化三:使用CDN)

    使用vite-plugin-cdn-import 下载npm包 官方github:https://github.com/MMF-FE/vite-plugin-cdn-import 开发环境使用本地的npm包,cdn是打包时候才生效 在vite.config.ts中通过importToCDN引入 注意事项 :网上很多教程,还需要在 build 的 rollupOptions 添加对应的 external ,如上注释所示,其实是不需要的,

    2024年02月02日
    浏览(78)
  • 使用vscode搭建vite+uniapp+vue3+uview-plus项目

    1.使用vscode创建项目 需要注意的是当前的node版本 ^14.18.0 以上 2.项目创建完成后 npm run dev:mp-weixin npm run build:mp-weixin 以上是以微信小程序为例,如需其他可以查看其他项目命令 https://uniapp.dcloud.net.cn/quickstart-cli.html 3.下载uview-plus 1)uview-plus依赖SCSS所以需要先下载sass 和 sass-loade

    2024年02月11日
    浏览(33)
  • Vue3+Vite+Pinia+Naive项目搭建之二:scss 的安装和使用

    前言 如果对 vue3 的语法不熟悉的,可以移步 Vue3.0 基础入门,快速入门。 github 开源库:Vue3-Vite-Pinia-Naive-Js gitee   开源库:Vue3-Vite-Pinia-Naive-Js 1. 安装依赖  2. 新增 src/assets/style/reset.scss 页面样式初始化 3. 新增 src/assets/style/common.scss 共用样式 4. 新增 src/assets/style/utils.scss 工

    2024年02月12日
    浏览(45)
  • 使用vue3 + TS + Pinia + Vant4 + vite搭建商城H5项目框架

    本文主要将如何利用搭建一个初始化的商城H5项目框架。初始化阶段使用的技术栈有:vue3.2、vue-router、 TS 、 Pinia 、 Vant4、Less、vite                         node -v 检测是否有安装node.js,未安装请先去官网安装node.js         终端输入: npm init vite         自定

    2024年02月12日
    浏览(36)
  • electron+vue3全家桶+vite项目搭建【25】使用electron-updater自动更新应用

    demo项目地址 electron-updater官网 我们不可能每次发布新的版本都让用户去手动下载安装最新的包,而是应用可以自动下载新包进行覆盖安装,electron-updater就可以非常方便的实现这个功能 引入依赖 实测用pnpm安装打包运行会有问题,这里还是推荐使用npm管理依赖 配置electron-bui

    2024年02月14日
    浏览(39)
  • vue3 项目搭建教程(基于create-vue,vite,Vite + Vue)

    目录 一、搭建vue3 项目前提条件 二、通过create-vue搭建vue3 项目 三、搭建一个 Vite 项目 四、构建一个 Vite + Vue 项目 五、打开Vue 项目管理器 六、Vite + Vue 项目目录结构 七、Vite.config.ts配置 前提条件 熟悉命令行 已安装 16.0 或更高版本的 Node.js 同时按window+R键,输入cmd,打开命令提

    2024年01月21日
    浏览(51)
  • Vue3+Vite项目搭建

    技术栈:vue3+ts+vite+vue-router+element-plus+pinia 为什么选择vite而不是vue-cli: vite 是一个基于 Vue3 单文件组件的非打包开发服务器,它做到了本地快速开发启动: 快速的冷启动,不需要等待打包操作; 即时的热模块更新,替换性能和模块数量的解耦让更新飞起; 真正的按需编译,

    2024年02月08日
    浏览(38)
  • vite搭建vue3项目

    参考视频 创建一个项目名称的文件夹 执行命令:npm init -y 快速的创建一个默认的包信息 安装vite: npm i vite -D -D开发环境的依赖 安装vue,现在默认是vue3. 执行命令: npm i vue -D/-S都可以 创建index.html文件,src=“入口js文件” ,添加id=\\\"app\\\"挂载点 创建src目录下的js入口文件main.js 创建

    2024年02月09日
    浏览(36)
  • Vue3 + Vite 实现项目搭建

    首先嘞,这个博文就是简单的记录一下自己的对 Vue3 的学习,所以说呢,并不代表他是完全正确的。 创建 Vue3 项目有两种常见的方式,一种是想 vue2 版本一样使用脚手架工具创建,创建 vue3 项目的脚手架必须是4版本以上的,另一种方法就是使用 vite 创建,为什么使用 vite 呢

    2024年02月11日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包