当前位置: 首页 > news >正文

【Vue.js】vue-cli搭建SPA项目并实现路由与嵌套路由---详细讲解

一,何为SPA

      SPA(Single Page Application)是一种 Web 应用程序的开发模式,它通过使用 AJAX 技术从服务器异步加载数据,动态地更新页面内容,实现在同一个页面内切换不同的视图,而无需整页刷新

  1.1 构建SPA前提

nodeJS环境已经搭建完毕   没有搭建可以看----》》点击node.js坏境搭建

终端命令输入下行代码  查看安装是否成功

node -v        《---node.js版本    

npm -v         《---npm.版本

 

二,Vue-cli

2.1 为何Vue-cli

         是 Vue.js 官方提供的一个命令行工具,它可以帮助你快速搭建和管理 Vue 项目。Vue CLI 提供了一些便捷的开发工具和功能,使得开发者可以更高效地构建 Vue.js 应用程序 

简单来说 vue-cli是vue.js的脚手架,用于自动生成vue.js+webpack的项目模板

2.2 安装Vue-cli

在终端命令窗口,输入

npm install -g vue-cli    

npm install webpack -g  在上篇文章已经执行过该命令过,搭建过会生成上方图片的webpack文件夹。

2.2 Vue-cli的实现功能方面

创建项目:

       你可以使用 Vue CLI 创建一个新的 Vue 项目,它会为你生成一个基本的项目结构以及一些默认的配置文件。

配置管理:

         Vue CLI 通过提供一套可视化的配置界面,让你可以轻松地管理项目的配置。你可以通过修改配置文件或者在可视化界面上进行操作,来自定义项目的构建流程、插件和依赖等。

 

开发服务器:

         Vue CLI 提供了一个开发服务器,可以在开发过程中自动编译和热更新你的代码。这样你可以实时预览你的应用程序,无需手动刷新页面。

插件体系:

        Vue CLI 支持插件,你可以通过安装和配置插件来扩展项目的功能和特性。Vue CLI 官方提供了一些常用的插件,比如 Vuex、Vue Router 等,也支持自定义插件。

构建和部署:

         Vue CLI 封装了 Webpack,可以方便地构建和打包你的项目。它提供了构建命令,可以将你的代码优化、压缩,并生成最终的生产版本。你可以将构建好的文件部署到服务器上,以供用户访问

三,Vue-cli构建SPA项目

步骤1:

在你想要创建SPA工作区间,打开终端命令口输入下行代码

①  vue init webpack xxx   

   注1:xxx 为自己创建项目的名称

   注2:必须先安装vue,vue-cli,webpack,node等一些必要的环境

② 等待完毕之后,进入“一问一答”模式(9个问题) 根据下列操作来即可 

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

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

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

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

       4.1Runtime + Compiler: recommended for most users//运行加编译,官方推荐,就选它了(键盘上下键选择)

      4.2Runtime-only: about 6KB lighter min+gzip, but templates (or any Vue-specific HTML) are ONLY allowed in .vue files

              - render functions are required elsewhere//仅运行时,已经有推荐了就选择第一个了

         5.Install vue-router:是否需要vue-router,Y选择使用,这样生成好的项目就会有相关的路由配置文件

         6.Use ESLint to lint your code:是否用ESLint来限制你的代码错误和风格。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)

           > Yes, use NPM  (键盘上下键选择)

选择完毕后的图例:

当跳第3点,可以SPA就已经创建成功了。可在你想要创建SPA工作区间看见。

打开HBuilder,导入该SPA项目

步骤二:

     运行完上面的命令后,我们需要将当前路径改变到SPA这个文件夹内,然后安装需要的模块,继续输入

   cd xxx                                    #改变路径到spa1文件夹下 

                                                  注:xxx是你创建的项目名

   npm install                              #安装所有项目需要的npm模块(可不要)

步骤三:

   ## 此步骤可理解成:启动tomcat,并通过浏览器访问项目

继续输入下行命令

  

   npm run dev   启动项目

等待完毕后显示,一个hppt....8080路径,选择鼠标右键即可复制,到浏览器访问即可,以下图片

三,SPA项目完成路由 

3.1 vue项目结构说明

     build文件夹                          这个文件夹主要是进行webpack的一些配置

     webpack.base.conf.js           webpack基础配置,开发环境,生产环境都依赖

     webpack.dev.conf.js             webpack开发环境配置

     webpack.prod.conf.js            webpack生产环境配置

     build.js                                 生产环境构建脚本      

     vue-loader.conf.js              此文件是处理.vue文件的配置文件

     config文件目录下

     dev.env.js                      配置开发环境

     prod.env.js                     配置生产环境

     index.js                        这个文件进行配置代理服务器,例如:端口号的修改

       

   node_modules文件:  存放npm install时根据package.json配置生成的npm安装包的文件夹

     src文件夹                         源码目录(开发中用得最多的文件夹)

     assets                              共用的样式、图片

     components                    业务代码存放的地方,里面分成一个个组件存放,一个页面是一个组件,一个页面里面还会包着很多组件

       router                          设置路由   

       App.vue                    vue文件入口界面

     main.js                 对应App.vue创建vue实例,也是入口文件对应webpack.base.config.js                                   里的入口配置  

   static文件夹 :        存放的文件不会经过webpack处理,可以直接引用,例如swf文件如果要引用可以在webpack配置

                                     对swf后缀名的文件处理的loader,也可以直接将swf文件放在这个文件夹引用

                                       

   package.json        这个文件有两部分是有用的:scripts 里面设置命令以及在dependencies和devDependencies中,分别对应全局下载和局部下载的依赖包

 3.2 什么是*.vue文件

  *.vue 文件,是一个自定义的文件类型,用类似HTML的语法描述一个Vue组件。

   每个.vue文件包含三种类型的顶级语言块 <template>, <script> 和 <style>。

   这三个部分分别代表了 html,js,css。

3.3 实现路由案例(7步骤)

1.引入js依赖:main.js中已经完成,我们无需自己引入

2.定义组件:呈现形式以.vue文件展示 template标签中定义组件内容 通过export defalut指定组件的名字

One.vue页面代码:

<template><div><span style="color: red;">我是第一第一第一!</span></div>
</template><script>
export default {name: 'One',data () {return {msg: 'Welcome to Your Vue.js App'}}
}
</script><style>
</style>

Tow.vue代码:

<template><div><span style="color: aqua;">我是第二第二第二!</span></div>
</template><script>
export default {name: 'Tow',data () {return {msg: 'Welcome to Your Vue.js App'}}
}
</script><style>
</style>

3.定义路由与组件的对应关系:在router/index.js文件中定义

import Vue from 'vue'
import Router from 'vue-router'
import HelloWorld from '@/components/HelloWorld'
import One from '@/components/One'
import Tow from '@/components/Tow'Vue.use(Router)export default new Router({routes: [{path: '/',name: 'One',component: One},{path: '/One',name: 'One',component: One},{path: '/Tow',name: 'Tow',component: Tow}]
})


4.获取路由对象,main.js中也完成了这一步骤

5.挂载实例,main.js中也完成了

// The Vue build version to load with the `import` command
// (runtime-only or standalone) has been set in webpack.base.conf with an alias.
import Vue from 'vue'
import App from './App'
import router from './router'Vue.config.productionTip = false/* eslint-disable no-new */
new Vue({el: '#app',router,components: { App },template: '<App/>'
})


6.定义锚点:App.vue使用router-view

7.触发事件:App.vue使用router-link to

<template><div id="app"><!-- <img src="./assets/logo.png"> --><router-link to="/One">首页</router-link><router-link to="/Tow">关于</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>

 三,SPA完成嵌套路由

  ①定义组件

创建两个子组件:

父组件:

<template><div>我是首页<br /><router-link to="/OneME">关于站长</router-link><router-link to="/OneWebsite">关于本站</router-link></div>
</template><script>
export default {name: 'One',data () {return {msg: 'Welcome to Your Vue.js App'}}
}
</script><style>
</style>

两个子组件

OneME:

<template><div>我是首页<br /><router-link to="/OneME">关于站长</router-link><router-link to="/OneWebsite">关于本站</router-link></div>
</template><script>
export default {name: 'One',data () {return {msg: 'Welcome to Your Vue.js App'}}
}
</script><style>
</style>

OneWebsite

<template><div>这是站长的简介</div>
</template><script>
export default {name: 'OneME',data () {return {msg: 'Welcome to Your Vue.js App'}}
}
</script><style>
</style>

 ②定义路由与配置路由路径

import Vue from 'vue'
import Router from 'vue-router'
import HelloWorld from '@/components/HelloWorld'
import One from '@/components/One'
import OneME from '@/components/OneME'
import OneWebsite from '@/components/OneWebsite'
import Tow from '@/components/Tow'Vue.use(Router)export default new Router({routes: [{path: '/',name: 'One',component: One},{path: '/One',name: 'One',component: One},{path: '/Tow',name: 'Tow',component: Tow,children:[{path: '/OneME',name: 'OneME',component: OneME},{path: '/OneWebsite',name: 'OneWebsite',component: OneWebsite}]}]
})

④定义触发路由的按钮

<template><div id="app"><!-- <img src="./assets/logo.png"> --><router-link to="/One">首页,</router-link><router-link to="/Tow">关于</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>

相关文章:

【Vue.js】vue-cli搭建SPA项目并实现路由与嵌套路由---详细讲解

一&#xff0c;何为SPA SPA&#xff08;Single Page Application&#xff09;是一种 Web 应用程序的开发模式&#xff0c;它通过使用 AJAX 技术从服务器异步加载数据&#xff0c;动态地更新页面内容&#xff0c;实现在同一个页面内切换不同的视图&#xff0c;而无需整页刷新 1.…...

Node.js 调用 fluent-ffmpeg

最近开发H5资源在线裁剪&#xff0c;最终在资源合成的步骤&#xff0c;选择 ffmpeg 作为合成的插件&#xff0c;记录下使用方式。 一、介绍 ffmpeg 一款跨平台多媒体处理工具&#xff0c;可以进行视频转码、裁剪、合成、音视频提取、推流等操作。 二、安装 Node js 可以利用…...

scrapy框架--

Scrapy是一个用于爬取数据的Python框架。下面是Scrapy框架的基本操作步骤&#xff1a; 安装Scrapy&#xff1a;首先&#xff0c;确保你已经安装好了Python和pip。然后&#xff0c;在命令行中运行以下命令安装Scrapy&#xff1a;pip install scrapy 创建Scrapy项目&#xff1a;…...

算法通关村第十五关——从40亿个数中产生一个不存在的数的处理方法

1.从40个亿中产生一个不存在的整数 题目要求&#xff1a;给定一个输入文件&#xff0c;包含40亿个非负整数&#xff0c;请设计一个算法&#xff0c;产生一个不存在该文件中的整数&#xff0c;假设你有1GB的内存来完成这项任务。**** 解题中心思想&#xff1a;存储的不是这40亿…...

软件项目开发的流程及关键点

软件项目开发的流程及关键点 graph LR A[需求分析] --> B[系统设计] B --> C[编码开发] C --> D[测试验证] D --> E[部署上线] E --> F[运维支持]在项目开发的流程中&#xff0c;首先是进行需求分析&#xff0c;明确项目的目标和功能要求。接下来是系统设计&am…...

全球变暖问题(floodfill 处理联通块问题)

全球变暖问题 文章目录 全球变暖问题前言题目描述题目分析边界问题的考虑岛屿是否被淹没判断&#xff1a;如何寻找联通块&#xff1a; 代码预告 前言 之前我们介绍了 bfs算法在二维&#xff0c;三维地图中的应用&#xff0c;现在我们接续进行拓展&#xff0c;解锁floodfill 算…...

由于找不到vcruntime140_1.dll怎么修复,详细修复步骤分享

在使用电脑过程中&#xff0c;可能会遇到一些错误提示&#xff0c;其中之一是找不到vcruntime140_1.dll的问题。这使得许多用户感到困扰&#xff0c;不知道该如何解决这个问题。小编将详细介绍vcruntime140_1.dll的作用以及解决找不到该文件的方法&#xff0c;帮助你摆脱困境。…...

算法 三数之和-(双指针)

牛客网: BM54 题目: 数组中所有不重复的满足三数之和等于0的数&#xff0c;非递减形式。 思路: 数组不小于3。不重复非递减&#xff0c;需先排序。使用idx从0开始遍历到n-2, 如果出现num[idx]num[idx-1]的情况&#xff0c;忽略继续下一个idx&#xff1b;令left idx1, right …...

AB实验总结

互联网有线上系统&#xff0c;可做严格的AB实验。传统行业很多是不能做AB实验的。 匹配侧是采用严格的AB实验来进行模型迭代&#xff0c;而精细化定价是不能通过AB实验来评估模型好坏&#xff0c;经历过合成控制法、双重差分法&#xff0c;目前采用双重差分法来进行效果评估。…...

sklearn包中对于分类问题,如何计算accuracy和roc_auc_score?

1. 基础条件 import numpy as np from sklearn import metricsy_true np.array([1, 7, 4, 6, 3]) y_prediction np.array([3, 7, 4, 6, 3])2. accuracy_score计算 acc metrics.accuracy_score(y_true, y_prediction)这个没问题 3. roc_auc_score计算 The binary and mul…...

python温度转换程序

1.使用pycharm运行温度转换程序&#xff0c;尝试将温度单位设在前面 2.参照温度转换程序,自己写一个关于货币转换、长度转换、重量转换或者面积转换的程序 循环函数 def convertemperature():temperature ""while (temperature ! "q"):temperature in…...

Vue2中10种组件通信方式和实践技巧

目录 1&#xff0c;props / $emit1.1&#xff0c;一个需求方法1方法2 1.2&#xff0c;v-model 和 .syncv-model.sync 2&#xff0c;$children / $parent3&#xff0c;ref4&#xff0c;$attrs / $listeners$attrs$listenersinheritAttrs1.1 的问题的第3种解决方法 5&#xff0c;…...

Flutter flutter.minSdkVersion的实际文件位置

Flutter 项目的Android相关版本号配置&#xff1a; flutter.minSdkVersion 的版本号配置文件实际路径&#xff1a; …/flutter_sdk/packages/flutter_tools/gradle/src/main/groovy/flutter.groovy Flutter版本号如下&#xff1a; bzbMacBook-Pro ccsmec % flutter --version …...

python生成PDF报告

前言 最近接到了一个需求-将项目下的样本信息汇总并以PDF的形式展示出来&#xff0c;第一次接到这种PDF的操作的功能&#xff0c;还是有点慌的&#xff0c;还好找到了reportlab这个包&#xff0c;可以定制化向PDF写内容&#xff01; 让我们由简入深进行讲解 一、reportlab是…...

在visual studio里安装Python并创建python工程

在2009年&#xff0c;云计算开始发力&#xff0c;Python、R、Go这些天然处理批量计算的语言也迅猛发展。微软在2010年&#xff0c;把Python当成一个语言包插件&#xff0c;集成到了visual studio 2010里。在"云优先&#xff0c;移动优先"的战略下&#xff0c;于2015年…...

AIGC(生成式AI)试用 6 -- 从简单到复杂

从简单到复杂&#xff0c;这样的一个用例该如何设计&#xff1f; 之前浅尝试用&#xff0c;每次尝试也都是由浅至深、由简单到复杂。 一点点的“喂”给生成式AI主题&#xff0c;以测试和验证生成式AI的反馈。 AIGC&#xff08;生成式AI&#xff09;试用 1 -- 基本文本_Role…...

竞赛 基于深度学习的人脸识别系统

前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 基于深度学习的人脸识别系统 该项目较为新颖&#xff0c;适合作为竞赛课题方向&#xff0c;学长非常推荐&#xff01; &#x1f9ff; 更多资料, 项目分享&#xff1a; https://gitee.com/dancheng-senior/…...

uniapp:APP开发,后台保活

前言&#xff1a; 在ios中&#xff0c;软件切换至后台、手机息屏&#xff0c;过了十来秒软件就会被系统挂起&#xff0c;APP内的任务就不能继续执行&#xff1b;在android中&#xff0c;默认情况下&#xff0c;软件在后台运行的时候&#xff0c;触发某些特定条件的情况下&…...

vue2 项目中嵌入视频

案例&#xff1a; 代码&#xff1a; <template><div class"schematicDiagramIndex"><el-container><el-aside width"20rem"> <!-- <h4 style"font-size: 18px">视频演示</h4>--><div styl…...

第二章 进程与线程 十二、进程同步与进程互斥

目录 一、进程同步 1、定义 二、进程互斥 1、定义 2、四个部分 3、原则 一、进程同步 1、定义 进程同步是指在多个进程之间协调执行顺序的一种机制&#xff0c;使得进程按照一定的顺序执行&#xff0c;以避免出现不一致的情况。常见的实现方式有信号量、管程、屏障等。…...

Linux内核链表(list)移植到任意平台

一、前言 linux内核链表在include/linux/list.h文件中&#xff0c;内核中实现的链表比较简洁&#xff0c;实用性很强&#xff0c;因此想把它单独移植出来使用。 内核中的代码只能使用gnuc编译器编译&#xff0c;stdc编译器编译是会报错的&#xff0c;主要是因为typeof这个宏是…...

【操作系统】聊聊什么是CPU上下文切换

对于linux来说&#xff0c;本身就是一个多任务运行的操作系统&#xff0c;运行远大于CPU核心数的程序&#xff0c;从用户视角来看是并发执行&#xff0c;而在CPU视角看其实是将不同的CPU时间片进行分割&#xff0c;每个程序执行一下&#xff0c;就切换到别的程序执行。那么这个…...

CMake教程-第 2 步 添加一个库

CMake教程-第 2 步 添加一个库 1 CMake教程介绍2 学习步骤Step 1: A Basic Starting PointStep 2: Adding a LibraryStep 3: Adding Usage Requirements for a LibraryStep 4: Adding Generator ExpressionsStep 5: Installing and TestingStep 6: Adding Support for a Testin…...

DS 顺序表--类实现(C++数据结构题)

实现顺序表的用 C 语言和类实现顺序表 属性包括&#xff1a;数组、实际长度、最大长度&#xff08;设定为 1000 &#xff09; 操作包括&#xff1a;创建、插入、删除、查找 类定义参考 #include<iostream> using namespace std; #define ok 0 #define error -1 // 顺…...

0.UML

1.图 1.1类图含义 第一层显示类的名称,如果是抽象类,则就用斜体显示。第二层是类的特性,通常就是字段和属性。第三层是类的操作,通常是方法或行为。注意前面的符号, ,表示public,-,表示private,#,表示protected。 1.2接口图 与类图的区别主要是顶端有<< interface >…...

PostgreSQL设置主键为自增

1、创建自增序列 CREATE SEQUENCE table_name_id_seq START 1; 2、设置字段默认值 字段默认值中设置 nextval(table_name_id_seq) 3、常用查询 -- 查询所有序列 select * from information_schema.sequences where sequence_schema public; -- 查询自增序列的当前值 select cu…...

input修改checkbox复选框默认选中样式

问题描述&#xff1a; <input type"checkbox" /> input修改checkbox默认选中样式&#xff0c;直接设置选中后的样式不生效&#xff0c;需要先给复选框设置-webkit-appearance: none&#xff08;取消默认样式&#xff09;&#xff0c; 再设置样式才会生效。 …...

高云FPGA系列教程(10):letter-shell移植

文章目录 letter-shell简介letter-shell源码获取letter-shell移植函数和变量应用示例 本文是高云FPGA系列教程的第10篇文章。 shell&#xff0c;中文是外壳的意思&#xff0c;就是操作系统的外壳。通过shell命令可以操作和控制操作系统&#xff0c;比如Linux中的Shell命令就包括…...

【C语言学习笔记---指针进阶02】

C语言程序设计笔记---017 C语言进阶之回调函数1、函数指针数组2、回调函数3、 回调函数的应用 --- qsort库函数4、模拟qsort函数5、结语 C语言进阶之回调函数 前言&#xff1a; 通过C语言进阶前篇的指针进阶01的知识&#xff0c;继续学习。这篇引用一个简易计算器的程序进行深…...

低功耗蓝牙物联网:未来连接的无限可能

物联网是连接各种设备和传感器的网络&#xff0c;其目的是实现信息的交换和共享&#xff0c;提高效率并优化生活。在这个领域&#xff0c;低功耗蓝牙&#xff08;BLE&#xff09;正在发挥着越来越重要的作用。 低功耗蓝牙是一种无线通信技术&#xff0c;它的主要特点是低功耗和…...

适合ps做图的素材网站/微信推广加人

一、Ajax准备知识&#xff1a;json 说起json&#xff0c;我们大家都了解&#xff0c;就是python中的json模块&#xff0c;那么json模块具体是什么呢&#xff1f;那我们现在详细的来说明一下 1、json(Javascript Obiect Notation,JS对象标记)是一种轻量级的数据交换格式。 它基…...

今日头条网站什么语言做的/百度客服怎么联系

邮件发送类 来源网上 稍作调整。。。出处忘了 /** * 命名空间: EmailSend * 类 名&#xff1a; EmailSend * * 作者 变更内容 变更日期 * ───────────────────────────────── * XXX 初版 2018-10-31 0…...

山西+网站建设/招商外包公司

原文链接一个成功的响应式网站该怎么策划建站宝盒 2017-05-18 15:40:28 浏览55 评论0html5 网站建设 用户体验摘要&#xff1a; 一个成功的响应式网站需要具备公信力、营销力、传播力&#xff0c;要达到这样的要求网站策划就显得非常关键&#xff0c;网站策划是企业网站建设的重…...

wordpress侧边栏图片/东莞互联网推广

编写一个word2htm.vbs,然后把它拖放到存放word文档内&#xff0c;点按两下word2htm.vbs,目录内的所有文档会自动转换成htm文件。word2htm.vbs的编码如下。Set fsObject CreateObject ("Scripting.FileSystemObject")myDocDirfsObject.GetAbsolutePathName("&qu…...

vs做的网站如何使用/优化提升

我们来了解一下MySQL的基本特性&#xff1a;1.内部构件和可移植性使用C和C编写用众多不同的编译器进行了测试能够工作在众多不同的平台上。请参见2.1.1 “MySQL支持的操作系统”。使用GNU Automake、Autoconf和Libtool进行移植。提供了用于C、C、Eiffel、Java、Perl、PHP、Pyth…...

wordpress可以商用吗/武汉建站公司

/* ******************************************************************************************************* * * 文件名称 : gui_user.c * 版 本 : V1.0 * 作 者 : OpenRabbit * 说 明 : GUI 与 RTOS 和硬件的交互文件&#xff0c;使用时注意区分 MCU 端和模拟器…...