【Vue】使用vue-cli搭建SPA项目的路由,嵌套路由

news2024/11/26 12:45:02

一、SPA项目的构建

1、前期准备

我们的前期的准备是搭建好Node.js,测试:

node -v
npm -v

2、利用Vue-cli来构建spa项目

2.1、什么是Vue-cli

        Vue CLI 是一个基于 Vue.js 的官方脚手架工具,用于自动生成vue.js+webpack的项目模板,它可以帮助开发者快速搭建 Vue.js 项目的基础结构,并提供了一系列的开发工具和配置选项。Vue CLI 提供了命令行界面和图形化界面两种方式,开发者可以根据自己的喜好选择使用。使用 Vue CLI,可以轻松进行项目初始化、管理依赖、开发调试、构建打包等常用开发任务,简化了 Vue.js 应用的开发流程,提高了开发效率。

        创建命令如下:           

 vue init webpack xxx

  

  • xxx 为自己创建项目的名称
  • 必须先安装vue,vue-cli,webpack,node等一些必要的环境

2.2、安装vue-cli

Win + R CMD 进入命令窗口输入npm install -g vue-cli命令

 输入npm install webpack -g

安装成功后,会出现如下文件:

  • vue
  • vue.cmd 
  • vue-init
  • vue-init.cmd
  • vue-list
  • vue-list.cmd


安装完成之后打开命令窗口并输入 vue -V(注意这里是大写的“V”),如果出现相应的版本号,则说明安装成功。

2.3、使用脚手架vue-cli构建项目

创建项目骨架:

  1. 找到一个放这个骨架的路径
  2. 进入目录CMD进入命令窗口
  3.  vue init webpack xxx :xxx为你的项目名,项目名不能用中文或大写字母,然后终端会出现“一问一答”模式
  4. cmd命令行窗口显示中文乱码,是cmd命令行窗口字符编码不匹配导致

            修改cmd窗口字符编码为UTF-8,命令行中执行:chcp 65001

            切换回中文:chcp 936

            这两条命令只在当前窗口生效,重启后恢复之前的编码。
  5. “一问一答”模式

    1. Project name:项目名,默认是输入时的那个名称spa1,直接回车

    2. Project description:项目描述,直接回车

    3. Author:作者,随便填或直接回车

    4. Vue build:选择题,一般选第一个

      1. 运行加编译,官方推荐,就选它了

      2. 仅运行时,已经有推荐了就选择第一个了

    5. Install vue-router:是否需要vue-router

      1. Y选择使用,这样生成好的项目就会有相关的路由配置文件

    6. Use ESLint to lint your code:是否用ESLint来限制你的代码错误和风格。

      1. 如果你是新手一般填N,但实际项目中一般都会使用,这样多人开发也能达到一致的语法

    7. Set up unit tests:是否安装单元测试;N

    8. Setup e2e tests with Nightwatch?:是否安装e2e测试;N

    9. Should we run `npm install` for you after the project has been created? (recommended) (Use arrow keys)

      1. 第一项“Yes, use NPM”是否使用npm install安装依赖

  6. 全部选择好回车就进行了生成项目,出现如下内容表示项目创建完成,我们进行等待就行

  7. 运行完上面的命令后,我们需要将当前路径改变到SPA这个文件夹内

    1. cd gq_spa:改变路径到gq_spa文件夹下

    2. npm install:安装所有项目需要的npm模块

  8. 启动并访问项目

    1. 输入npm run dev

    2. 等待启动

  9. 复制上面的地址http://localhost:8080/,进入浏览器访问

  10. 最后利用我们的编程软件进行添加

2.4、vue项目结构说明

  1. build文件夹:这个文件夹主要是进行webpack的一些配置
    1. webpack.base.conf.js:webpack基础配置,开发环境,生产环境都依赖
    2. webpack.dev.conf.js:webpack开发环境配置
    3. webpack.prod.conf.js:webpack生产环境配置
    4. build.js:生产环境构建脚本      
    5. vue-loader.conf.js:此文件是处理.vue文件的配置文件
  2. config文件夹
    1. dev.env.js:配置开发环境 
    2. prod.env.js:配置生产环境 
    3. index.js:这个文件进行配置代理服务器,例如:端口号的修改 
  3. node_modules文件夹:存放npm install时根据package.json配置生成的npm安装包的文件夹
  4. src文件夹:源码目录(开发中用得最多的文件夹) 
    1. assets:共用的样式、图片 
    2. components:业务代码存放的地方,里面分成一个个组件存放,一个页面是一个组件,一个页面里面还会包着很多组件
    3.  router:设置路由   
    4.  App.vue:vue文件入口界面 
    5. main.js:对应App.vue创建vue实例,也是入口文件,对应webpack.base.config.js里的入口配置  
  5. static文件夹:存放的文件不会经过webpack处理,可以直接引用,例如swf文件如果要引用可以在webpack配置对swf后缀名的文件处理的loader,也可以直接将swf文件放在这个文件夹引用 
  6. package.json:这个文件有两部分是有用的:scripts 里面设置命令以及在dependencies和devDependencies中,分别对应全局下载和局部下载的依赖包

   

3、什么是Vue文件

        vue 文件,是一个自定义的文件类型,用类似HTML的语法描述一个Vue组件。每个.vue文件包含三种类型的顶级语言块 <template>, <script> 和 <style>。这三个部分分别代表了 html,js,css

二、SPA项目使用路由

我们以前的步骤:

  1. 确保引入Vue.vue-router的js依赖
  2. 首先需要定义组件(就是展示不同的页面效果)
  3. 需要将不同的组件放入一个容器中(路由集合)
  4. 将路由集合组装成路由器
  5. 将路由挂载到Vue实例中
  6. 定义锚点
  7. 跳转

现在的步骤:

1、依赖

确定我们的挂在依赖,在我们的main.js里面,路由也已经挂载了,不用管了

2、定义组件

components文件夹里面,新建你需要的vue文件

3、定义容器

vue文件里面的<template>里面,有且只能有一个根节点

<script>
</script>

<template>
  <div class="index">
    这是网站的首页部分
  </div>
</template>

<style scoped>

</style>
<script>
</script>

<template>
  <div class="home">
    这是网站的介绍
  </div>
</template>

<style scoped>

</style>

4、组装成路由器

<script>
export default {
  name: 'Index',
  data() {
    return {
      msg: '欢迎来到网站的首页'
    }
  }
}
</script>

<template>
  <div class="index">
    这是网站的首页部分
  </div>
</template>

<style scoped>

</style>
<script>
export default {
  name: 'home',
  data() {
    return {
      msg: '欢迎来到网站的介绍部分'
    }
  }
}
</script>

<template>
  <div class="home">
    这是网站的介绍
  </div>
</template>

<style scoped>

</style>

5、定义路由关系

router文件夹里面的index.js文件里面定义路由关系

import Vue from 'vue'
import Router from 'vue-router'
import HelloWorld from '@/components/HelloWorld'
import Index from '@/components/Index'
import Home from '@/components/Home'

Vue.use(Router)

export default new Router({
  routes: [
    {
      path: '/',
      name: 'HelloWorld',
      component: HelloWorld
    }, {
      path: '/Home',
      name: 'Home',
      component: Home
    }, {
      path: '/Index',
      name: 'Index',
      component: Index
    }
  ]
})

定义自己的写的一个关系

6、定义锚点

App.vue里面定义锚点

<template>
  <div id="app">
    <img src="./assets/logo.png"><br>
    <router-link to="/Index">首页</router-link>
    <router-link to="/Home">介绍</router-link>
    <router-view/>
  </div>
</template>

<script>
export default {
  name: 'App'
}
</script>

<style>
#app {
  font-family: 'Avenir', Helvetica, Arial, sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-align: center;
  color: #2c3e50;
  margin-top: 60px;
}
</style>

7、测试

三、SPA项目使用嵌套路由

1、最终展示效果

2、步骤

2.1、定义锚点

选择你需要定义的页面定义锚点

2.2、组装、定义容器

错不多的步骤定义好容器,组装需要的内容

2.3、定义关系

添加自己写的关系

我们不能直接在后面添加,需要用children数组来添加到指定的页面,不然展示不了我们需要的效果

2.4、测试

最后就展示我们的一个效果了

分享就到这里,感谢大家翻阅。

欢迎大家在评论区里讨论!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1029168.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

openGauss学习笔记-73 openGauss 数据库管理-创建和管理索引

文章目录 openGauss学习笔记-73 openGauss 数据库管理-创建和管理索引73.1 背景信息73.2 操作步骤73.2.1 创建索引73.2.2 修改索引分区的表空间73.2.3 重命名索引分区73.2.4 查询索引73.2.5 删除索引73.2.6 创建索引的方式73.2.6.1 创建普通索引73.2.6.2 创建多字段索引73.2.6.…

升级iOS17后可以降级吗?iOS17退回iOS16方法教程分享

iOS 17已上线几天&#xff0c;从网上用户的反馈和媒体机构的报告来看&#xff0c;iOS17系统对旧机型来说并不友好&#xff0c;除了电池续航下降以外&#xff0c;占用大量储存空间&#xff0c;BUG也不少。 苹果于 9 月 7 日发布了 iOS 16.6.1 版本&#xff0c;如果升级iOS17后发…

opencv实现仿射变换

什么是仿射变换&#xff1f; 代码实现 import numpy as np import cv2 as cv import matplotlib.pyplot as plt#设置字体 from pylab import mpl mpl.rcParams[font.sans-serif] [SimHei]#图像的读取 img cv.imread("lena.png")#仿射变换 rows , cols img.shape[…

计算机视觉与深度学习-全连接神经网络-训练过程-模型正则与超参数调优- [北邮鲁鹏]

目录标题 神经网络中的超参数学习率超参数优化方法网格搜索法随机搜索法 超参数搜索策略粗搜索精搜索 超参数的标尺空间 神经网络中的超参数 超参数 网络结构&#xff1a;隐层神经元个数&#xff0c;网络层数&#xff0c;非线性单元选择等优化相关&#xff1a;学习率、dorpou…

期权如何交易?期权如何做模拟交易?

买卖期权的第一步就是要有期权账户&#xff0c;国内的期权品种有商品期权和ETF期权以及股指期权&#xff0c;每种的开户方式和要求都不同&#xff0c;下文为大家介绍期权如何交易&#xff1f;期权如何做模拟交易&#xff1f; 一、期权交易需要开立一个期权账户&#xff0c;可以…

OpenCV图像金字塔

什么是图像金字塔&#xff1f; 向上采样 &#xff1a;cv.pyrUp(img) 向下采样 : cv.pyrDown(img) 代码实现 import numpy as np import cv2 as cv import matplotlib.pyplot as plt#图像的读取 img cv.imread("lena.png")#进行图像采样 up_img cv.pyrUp(img) #上…

互联网3.0 数字原生——数物虚实多维细粒度泛在融合

随着计算机、宽带网、通信技术的飞速发展&#xff0c;互联网技术和软硬件系统也不断演进&#xff0c;催生了一场前所未有的数字化革命。从Web1.0到Web3.0&#xff0c;以及虚拟现实、人工智能和数字孪生等领域的崛起&#xff0c;每一步都勾画出了一个崭新的数字未来&#xff0c;…

云渲染是怎么做到不排队的

云渲染排队严重影响了用户的使用体验&#xff0c;还会导致用户的流失&#xff0c;因此解决渲染不排队的问题对于云渲染平台来说是非常重要的。而作为云渲染平台&#xff0c;自己的机器基本都是固定的&#xff0c;哪如何解决用户渲染排队的问题呢&#xff1f;我们一起来看看全国…

60从零开始学Java之与数字相关的类有哪些?

作者&#xff1a;孙玉昌&#xff0c;昵称【一一哥】&#xff0c;另外【壹壹哥】也是我哦 千锋教育高级教研员、CSDN博客专家、万粉博主、阿里云专家博主、掘金优质作者 前言 我们在解决实际问题时&#xff0c;会经常对数字、日期和系统设置进行处理&#xff0c;比如在我们的代…

转一篇文章-搜狗输入法出现繁体消除不了怎么办?

省流&#xff1a;ctrlshiftf 详见此人的实验 搜狗拼音突然成繁体字了怎么办&#xff1f; - 简书使用搜狗输入法&#xff0c;总是莫名的出现繁体字&#xff0c;打开设置选择的也是简体&#xff0c;但是打字就是繁体&#xff0c;最近终于摸索出来一次成功解决的方法&#xff0c…

git rebase 修改中间的commit

0. 前言 今天在移植最新版本 kfence 功能的时候&#xff0c;一共需要移植大概40多个 patch&#xff0c;中间有很多patch 存在冲突&#xff0c;需要手动修改后才能合并。当所有的patch 都合并完成进行编译的时候&#xff0c;发现其中一个 patch 手动合并出了个错误。 假如共有…

springboot整合sentinel完成限流

1、直入正题&#xff0c;下载sentinel的jar包 1.1 直接到Sentinel官网里的releases下即可下载最新版本&#xff0c;Sentinel官方下载地址&#xff0c;直接下载jar包即可。不过慢&#xff0c;可能下载不下来 1.2 可以去gitee去下载jar包 1.3 下载完成后&#xff0c;进行打包…

仪表基础知识培训

压力传感器:E+H PMX5x/FMX5x 一、安装:安装注意事项: 1、水平安装时仪表的呼吸孔(1)需要向下安装,并远离污染物。 2、请勿用坚硬的物体擦拭或接触膜片。 3、请勿安装在水泵的入口和搅拌叶附近 二、供电、接线、信号、:二线制,仪表输出4-20mA 三、量程:设置最大最小量程…

VS中cmake多配置构建设置

一.cmake在vs中的使用简介 CMake 是一种跨平台开源工具&#xff0c;用于定义在多个平台上运行的生成过程。 Visual Studio C 和 C 开发不再仅适用于 Windows。 本教程介绍如何在 Windows 和 Linux 上使用 Visual Studio C 进行跨平台开发。 由于它基于 CMake&#xff0c;无需…

VR虚拟展厅——商业领域中不可或缺的工具

VR虚拟展厅已经逐渐在商业领域崭露头角&#xff0c;将实体展厅以三维、立体化的形式还原在线上&#xff0c;企业能够以更加直观、真实的方式展示自身的形象和产品&#xff0c;用户也得以通过VR虚拟展厅全方位了解产品详情&#xff0c;包括图片展示、视频介绍等&#xff0c;更加…

websocket php教程

WebSocket 是 HTML5 提供的一种网络通讯协议&#xff0c;用于服务端与客户端实时数据传输。广泛用于浏览器与服务器的实时通讯&#xff0c;APP与服务器的实时通讯等场景。 相比传统HTTP协议请求响应式通讯&#xff0c;WebSocket协议可以做到实时的双向通讯&#xff0c;服务端可…

Automation Anywhere推出新的生成式AI自动化平台,加速提高企业生产力

在9 月 19 日的Imagine 2023 大会上&#xff0c;智能自动化领域的领导者 Automation Anywhere 宣布对其自动化平台进行扩展。推出了新的 Responsible AI Layer&#xff0c;并宣布了四项关键产品更新&#xff0c;包括全新的 Autopilot&#xff0c;它可以利用生成式 AI &#xff…

IT隔离电源系统在医院电气设计中的应用

【摘要】许多国际标准都对医疗领域&#xff0c;尤其是那些生命攸关的场所&#xff0c;如手术室、重症监护室、心脏监护室等的配电系统作了特殊的规定。现在国际上针对医疗领域中的手术室、ICU、CCU等重要场所通常采用局部“中性点不接地的供电系统”&#xff08;IEC标准称之为“…

webpack:详解代码分离以及插件SplitChunksPlugin的使用

文章目录 背景入口起点分离基本使用防重复 SplitChunksPlugin插件分离背景基本使用splitChunks.chunkssplitChunks.minChunkssplitChunks.minSizesplitChunks.maxSizesplitChunks.namesplitChunks.cacheGroupssplitChunks.cacheGroups.{cacheGroup}.prioritysplitChunks.cacheG…

智能制造,RFID与流转线碰撞

智能制造&#xff0c;RFID与流转线碰撞 RFID是一种无线通信技术&#xff0c;可以用于实时识别和物品。它通过将包含有信息的标签贴在物品上&#xff0c;利用射频信号进行通信&#xff0c;将物品的信息传输给读取器。读取器可以通过无线方式读取标签上的信息&#xff0c;从而实…