Vue2_16

Vue2_16(路由们)

1、路由概念

vue-router 插件 库!用于实现 SPA 应用

1.SPA是嘛

类似最近最近学的 软件测试,所给的测试页面

  • 单页 Web 应用,只有一个 页面文件
  • 点击导航链接 不会刷新页面
  • 数据要 ajax 获取

2.路由是嘛

  • 一个路由就是一对 key:value
  • key 是路径,value 是 函数 或 组件
  • 页面路径的切换,路由就会根据 路径 来找 value

3.路由分类

3.1 前端路由

value 是 组件 的路由,用于展示页面

当路径变换时,会把 key 对应的组件放到页面上

3.2 后端路由

value 是 函数 的路由,用于处理请求

当路径变换时,会直接发请求给服务器

2、路由的基本使用

1.导入vue-router

Vue2,导入3

npm i vue-router@3

2.配置路由器

步骤:

  1. 创建一个路由器
  2. 配置路由
  3. 导出
2.1 创建路由器
import VueRouter from "vue-router";
const router =  new VueRouter(配置对象)
2.2 配置路由

配置属性 routes

const router =  new VueRouter({
	routes:[
		{
			path:'/about',
			component:MyAbout
		},
		{
			path:'/home',
			component:MyHome
		},
	]
})
  • **path:**对应的路径
  • **component:**对应的组件

但是会报错,说组件没定义,所有要导入组件

// 用于创建路由器
import VueRouter from "vue-router";
// 引入组件
import MyAbout from "../components/MyAbout.vue";
import MyHome from "@/components/MyHome.vue";	// tab出来de

// 创建一个路由器
export default new VueRouter({
	routes:[
		{
			path:'/about',
			component:MyAbout
		},
		{
			path:'/home',
			component:MyHome
		},
	]
})

3.main.js

在最前面说:vue-router 插件 库!,库已经npm了,所以

3.1 使用 vue-router
import VueRouter from 'vue-router'
Vue.use(VueRouter);
3.2 配置 router

刚才会让 vm 都出一个属性 叫:router,用来放路由器

// 引入路由器,我放在了 router文件夹下的 index.js
import router from './router'	// 如果是index.js就可以不用写
new Vue({
	...
	router,	// 简写
	...
}).$mount('#app')

4.组件的应用

4.1 router-link

router-link,改地址的

<!-- router-link: 代替a标签,最终页面上就是 a标签 -->
<router-link class="in" active-class="active" to="/about">About</router-link>
<router-link class="in" active-class="active" to="/home">Home</router-link>

标签上的属性:

  • **active-class:**点击后添加的 class
  • **to:**跳转的地址
4.2 router-view

router-view,放组件的

<!-- 指定组件的位置 -->
<router-view></router-view>

5.注意事项

5.1 路由组件

这些由路由指定的组件叫:路由组件

路由组件的文件夹一般不在 components 里,会给它放进 pages 文件夹里

// 引入组件
import MyAbout from "../pages/MyAbout.vue";
import MyHome from "@/pages/MyHome.vue";	// tab出来de
5.2 路由组件的生命周期

答:切换了就被销毁,而不是什么 v-show之类的

5.3 路由组件的新属性
  • $route: Object 是组件身上的东西
  • $router: VueRouter 是路由器

所有路由组件的 $router 都是指向同一个地方的

3、多级路由

1.children属性

放在路由里,值是数组,用来放子路由

{
    path:'/home',
    component:MyHome,

    children:[
        {path:'news',component:InNews},
        {path:'message',component:InMessage}
    ]
},

注:不要在子路由里的路径加 ‘/’ 因为已经自动带了 ‘/’

2.组件设置

还是 <router-link><router-view>,只是改了 to 的值

<template>
	<div>
		<h2>我是 Home 的内容</h2>
		<router-link active-class="active" class="News inin" to="/home/news">News</router-link>
		<router-link active-class="active" class="Message inin" to="/home/message">Message</router-link>
		<hr class="inhr">

		<router-view></router-view>
	</div>
</template>

注:to 要加父路由的路径

4、路由传递参数

怎么传?答:查询字符串

<router-link :to="`/home/message/youjian?id=${msg.id}&tilte=${msg.title}`">
    Message{{ msg.id }}
</router-link>

to 的解释::to="`/home/message/youjian?id=${msg.id}&tilte=${msg.title}`"

  • “” 里有 ` 传递字符串
  • js 语法:v-bind
  • ${xxx}:传递的数据

4.1 to 的对象写法

<!-- 对象写法 -->
<router-link 
:to="{
    path:'/home/message/youjian',
    query:{
        id:msg.id,
        tilte:msg.title,
    }
}"
    >Message{{ msg.id }}
</router-link>
  • **path:**组件的最终路径
  • **query:**查询字符串(传递的数据)

4.2 获取传递的数据

在哪获取?答:在 $route.query 身上

<li>消息编号:{{ $route.query.id }}</li>
<li>消息标题:{{ $route.query.title }}</li>

5、命名路由

用名字代替路径

使用方法:在 配置对象 和 router-link 都加上个 name

{
    name:'youjian',
    path:'youjian',
    component:YouJian
},
:to="{
    // Path:'/home/message/youjian', 不需要写一堆路径了
    name:'youjian',
    query:{
        id:msg.id,
        tilte:msg.title,
    }
}"

6、路由传递参数2

使用 params 获取,写在下一级路径里

6.1 配置路由

格式::xxx

path:'youjian/:id/:title',

这个 xxx 就是用来 . 的名字 $route.params.xxx

6.2 path 传递

path:`/home/message/youjian/${msg.id}/${msg.title}`,

6.3 params 配置对象

和 query 配置对象一样,但是不一样的是:只能在使用 name 时写

:to="{
	// 不能用path
    // path:`/home/message/youjian`,
    name:'youjian',
    params:{
        id:msg.id,
        title:msg.title,
    }
}"

6.4 接收参数

和 query 配置对象一样,但是不一样的是:没啥不一样的

<li>消息编号:{{ $route.params.id }}</li>
<li>消息标题:{{ $route.params.title }}</li>
<think> 我们已知用户的需求是:在Vue2和Node 16环境下使用脑图插件的方法。 根据引用资料,我们可以得到以下信息: 1. 引用[1]提到了VSCode插件,但这不是我们要关注的重点。 2. 引用[2]提到在uniapp-vue2中遇到了Vue版本不匹配的问题(vue@3.2.45和vue-template-compiler@2.7.16),这提醒我们在使用Vue2时要注意相关依赖的版本匹配。 3. 引用[3]提到使用node版本16.20.2搭建vue3+vite+javaScript,并推荐使用nvm-desktop来管理node版本。这里我们可以借鉴node版本管理。 4. 引用[4]和[5]分别提到了搭建vue3和vue2开发环境的一些步骤,包括清除缓存、设置镜像源、安装依赖等,以及一些VSCode插件。 我们的目标是在Vue2和Node 16环境下使用脑图插件。这里脑图插件可能是指在Vue2项目中集成一个脑图(mindmap)组件或库。 常见的脑图库有: - Markmap:基于d3和markdown的脑图库。 - jsMind:开源的脑图库。 - MindElixir:另一个开源的脑图库。 由于用户环境是Vue2,我们需要确保这些库支持Vue2或者我们可以通过Vue2的方式将其集成。 步骤建议: 1. 确保Node.js环境为16.x(可以使用nvm进行管理,如引用[3]所述)。 2. 创建一个Vue2项目(如果已有项目则跳过)。 3. 选择一个脑图库,并在项目中安装。 4.Vue组件中引入并使用。 考虑到引用[2]中提到的版本问题,我们需要注意脑图库的依赖是否与Vue2兼容。 下面以使用jsMind为例,因为它在Vue2中比较常用。 具体步骤: 步骤1:使用Node 16环境 可以使用nvm(Node Version Manager)来管理Node版本。根据引用[3],可以使用nvm-desktop来切换node版本到16.20.2。 步骤2:创建Vue2项目(如果已有则跳过) 在命令行中运行: ```bash npm install -g @vue/cli vue create my-project ``` 在创建项目时选择Vue2。 步骤3:安装jsMind 在项目目录下运行: ```bash npm install jsmind ``` 步骤4:在Vue组件中使用jsMind 在需要脑图的组件中,引入jsMind并初始化。 示例代码: ```vue <template> <div id="mindmap-container" style="height: 500px; border: 1px solid #ccc;"></div> </template> <script> import jsMind from 'jsmind' import 'jsmind/style/jsmind.css' export default { name: 'MindMap', mounted() { this.initMindMap() }, methods: { initMindMap() { // 定义脑图数据 const mindData = { "meta": { "name": "jsMind Example", "author": "hizzgdev@163.com", "version": "0.2" }, "format": "node_tree", "data": { "id": "root", "topic": "根节点", "expanded": true, "children": [ { "id": "node1", "topic": "子节点1", "direction": "left" }, { "id": "node2", "topic": "子节点2", "direction": "right" } ] } } // 配置选项 const options = { container: 'mindmap-container', editable: true, theme: 'primary' } // 初始化 this.mindMap = new jsMind(options) this.mindMap.show(mindData) } } } </script> ``` 注意事项: 1. 由于jsMind是操作DOM的,所以我们在mounted生命周期中初始化。 2. 我们需要一个容器(div)来放置脑图,注意设置好高度和宽度。 其他脑图库的集成方式类似,具体可参考其文档。 另外,如果遇到类似引用[2]中的版本不匹配问题,请确保项目中使用的vuevue-template-compiler版本一致(都是Vue2的版本)。 关于引用[4]中提到的一些设置(如设置npm镜像源)如果遇到下载慢的问题可以参考使用。 最后,引用[5]中列出的VSCode插件可以帮助开发,但不是必需的。 因此,在Vue2和Node 16环境下使用脑图插件的主要步骤为:环境准备、项目创建(可选)、安装脑图库、在组件中引入并初始化。 相关问题: 1. 如何解决在Vue2中使用脑图库时出现的版本冲突问题? 2. 除了jsMind,还有哪些适合Vue2的脑图插件? 3. 如何自定义脑图样式和交互? 4. 如何在脑图中实现数据持久化(保存和加载)? 如果用户有进一步的问题,可以围绕这些方面展开。 </think> 在 Vue 2 和 Node.js 16 环境下使用脑图插件,需按以下步骤操作: --- ### **步骤 1:配置 Node.js 16 环境** 1. **安装 Node.js 16** 使用 `nvm` (Node Version Manager) 管理版本(引用[3]): ```bash nvm install 16.20.2 # 安装指定版本 nvm use 16.20.2 # 切换到该版本 ``` ![Node.js环境配置图示](https://example.com/node-env-setup.png) 2. **配置 npm 镜像源**(引用[4]) 提升依赖安装速度: ```bash npm config set registry https://registry.npm.taobao.org/ ``` --- ### **步骤 2:创建 Vue 2 项目** ```bash npm install -g @vue/cli # 安装 Vue CLI vue create vue2-mindmap-project # 创建项目(选择 Vue 2) cd vue2-mindmap-project ``` --- ### **步骤 3:安装脑图插件** 推荐兼容 Vue 2 的脑图库: 1. **jsMind**(轻量级) ```bash npm install jsmind ``` 2. **MindElixir**(功能丰富) ```bash npm install mind-elixir ``` --- ### **步骤 4:在 Vue 中集成脑图** **示例代码(使用 jsMind)**: ```vue <template> <div id="mindmap-container"></div> </template> <script> import jsMind from 'jsmind' import 'jsmind/style/jsmind.css' export default { mounted() { const mindData = { meta: { name: "示例脑图", author: "User" }, format: "node_tree", data: { id: "root", topic: "中心主题", children: [ { id: "child1", topic: "分支1", direction: "left" }, { id: "child2", topic: "分支2", direction: "right" } ] } }; const options = { container: 'mindmap-container', editable: true }; this.mindMap = new jsMind(options).show(mindData); }, beforeUnmount() { this.mindMap.destroy(); // 清理实例 } }; </script> <style scoped> #mindmap-container { width: 100%; height: 600px; border: 1px solid #eee; } </style> ``` --- ### **关键注意事项** 1. **Vue 2 兼容性** - 确保所有插件支持 Vue 2(避免混合 Vue 3 插件,如引用[2]的版本冲突)。 - 若使用 `vue-template-compiler`,版本需与 `vue` 严格一致(如 `vue@2.6.14` 匹配 `vue-template-compiler@2.6.14`)。 2. **依赖问题处理** - 安装失败时尝试: ```bash npm cache clean --force # 清除缓存(引用[4]) npm install --legacy-peer-deps # 绕过 peerDependency 冲突 ``` 3. **开发工具优化** - 安装 VSCode 插件辅助开发(引用[1][5]) `VueHelper`(Vue 语法支持)、`Auto Close Tag`(自动闭合标签)、`ESLint`(代码规范)。 --- ### **常见问题解决** - **脑图渲染失败**:检查容器 DOM 是否已挂载(在 `mounted` 生命周期初始化)。 - **样式异常**:确保导入脑图库的 CSS 文件(如 `import 'mind-elixir/style.css'`)。 - **版本冲突**:使用 `npm ls vue` 检查 Vue 版本一致性(引用[2])。 --- ### 📌 **相关问题** 1. 如何解决脑图插件在 Vue 2 中的兼容性问题? 2. 有哪些支持 Vue 2 的高性能脑图库推荐? 3. 如何在 Node.js 16 环境下调试 Vue 2 的依赖冲突? 4. 脑图数据如何与 Vuex 状态管理集成? [^1]: VSCode 项目管理方法 [^2]: Vue 2/3 版本冲突解决方案 [^3]: Node.js 多版本管理工具 [^4]: npm 环境配置技巧 [^5]: Vue 开发必备插件列表
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值