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

Vue 组件+es6箭头函数+路由

一、组件

1、让网页或局部页实现复用,包括js(vue)功能

组件(Component)是 Vue.js 最强大的功能之一。组件可以扩展 HTML 元素,封装可重用的代码。在较高层面上,组件是自定义元素, Vue.js 的编译器为它添加特殊功能。在有些情况下,组件也可以是原生 HTML 元素的形式,以 is 特性扩展

2、基本语法(创建js文件)

//页面模板
var temp = `<template id="test"><div>页面内容</div></template>`
//创建一个组件
Vue.component("test",{template: temp,  //el:'#app'data: function(){return {  //model}
},
methods:{},//自定义属性,获取属性值---数组
props:['属性名1','属性名2']
})

3、例如登录功能

数据传递问题:

(1)当登陆成功:从当前页把数据传递给组件----用属性(父组件通过属性向子组件传参)

(2)组件执行完结果之后,再把数据回传回来(子组件通过按钮把数据回传给父组件)

使用组件:

(1)在父组件中引入子组件,导入js文件,并使用test标签

index.html(04vue)

<div id="app"><h2>组件</h2><test></test>
</div>
<script src="js/vue.min.js" type="text/javascript" charset="utf-8"></script>
<script src="js/test.js" type="text/javascript" charset="utf-8"></script>

(2)用自定义属性从父组件传递给子组件

父组件:

<!DOCTYPE html>
<html><head><meta charset="utf-8"><title></title></head><body><div id="app"><h2>组件</h2>//利用子组件自定义属性传参<test msg="输入姓名"></test></div><script type="text/javascript" src="js/vue.min.js" charset="UTF-8"></script>//引入子组件.js<script type="text/javascript" src="js/test1.js" charset="UTF-8"></script><script type="text/javascript">var vm = new Vue({el:'#app',data:{}})</script></body>
</html>

子组件:

//创建页面模板
var temp = `<template id="test"><div>{{msg}}<input v-model="name" /><button type="button" @click='testres()'>测试</button></div></template>`
//创建组件
Vue.component("test",{template:temp,data:function(){return{//属性写namename: ''}},methods:{},//自定义属性props:['msg']
})

(3)从子组件回传数据给父组件

基于事件监听---自定义事件(自定义命名)

父组件自定义事件及方法

父组件:

<!DOCTYPE html>
<html><head><meta charset="utf-8"><title></title></head><body><div id="app"><h2>组件</h2><!-- 父组件自定义事件 @myevent=""相当于一个接收器 --><test msg="输入姓名" @myevent="acceptres"></test><hr ><!-- 子组件传过来的数据显示的位置 --><span>{{info}}</span></div><script type="text/javascript" src="js/vue.min.js" charset="UTF-8"></script><script type="text/javascript" src="js/test1.js" charset="UTF-8"></script><script type="text/javascript">var vm = new Vue({el:'#app',data:{info:''},methods:{//接收器acceptres(res){this.info=res}}})</script></body>
</html>

子组件:

//创建页面模板
var temp = `<template id="test"><div>{{msg}}<input v-model="name" />				<button type="button" @click='testres()'>测试</button></div></template>`
//创建组件
Vue.component("test",{template:temp,data:function(){return{//属性写namename: ''}},methods:{//给父组件回传消息  "父组件自定义的事件名"  "回传信息"testres(){this.$emit('myevent',this.name)}},//自定义属性props:['msg']
})

二、es6箭头函数

顶替了匿名函数,方便使用this

function(){    //使用this是指向当前这个类,就不能指向当前的vue了,所以使用vm参数

//代码

}

箭头函数--表达式

()=>{}

若只有一个参数,可以省略小括号

若只有一行代码,可以省略大括号和return

三、路由

1、路由技术的实现

路由---组件和路径的结合---相当于自定义的超链接

1.1创建route---路由(实现整个项目的导航)---对应一个路径--->组件

{path:'路径', component: 组件(完成页面的样式和功能)}

1.2创建路由数组routes----配置很多的路由

[{路由1},{路由2},{路由3}]

1.3创建router---路由器

<router-view>----加载路由[组件]的容器

<div id="app">
<a href="#/login">登录</a><a href="#/register">注册</a>
<router-view></router-view>
</div>
router-link---方式
<router-link to="/login">登录</router-link>
<router-link to="/register">注册</router-link>

1.4 路由传参

2.1query方式

to="/login?uid=101&upwd=101"

$route.query.xxx

2.2params方式

rest风格

{path:'/register/:uid/:upwd', component: register}

to="/login/101/admin"

$route.params.xxx

创建路由的过程:

<!DOCTYPE html>
<html><head><meta charset="utf-8" /><title></title></head><body><div id="app"><router-link to="/reg?aid=101">注册</router-link><router-link to="/log/a107">登录</router-link><!-- 连接会加载到这里 --><router-view></router-view></div><script src="js/vue.min.js" type="text/javascript" charset="utf-8"></script><script src="js/vue-router.js" type="text/javascript" charset="utf-8"></script><script type="text/javascript">//创建组件/*{{$route.query.aid}}取出请求路径 数据传参(参数获取机制 */var reg = {template:`<h2>注册{{$route.query.aid}}<h2/>`}var log ={template:`<h2>登录{{$route.params.uid}}<h2/>`}//创建路由数组var routes= [{path:'/reg',component:reg}, //路由{path:'/log/:uid',component:log}]//创建路由器var router = new VueRouter({routes})//创建VUEvar vm = new Vue({el: '#app',router})</script></body>
</html>

http://www.lryc.cn/news/227556.html

相关文章:

  • Clickhouse学习笔记(5)—— ClickHouse 副本
  • ELMo模型、word2vec、独热编码(one-hot编码)的优缺点进行对比
  • FFmpeg简介1
  • Optimal Multimodal Travelway Design for an Urban Street Network
  • 2352 智能社区医院管理系统JSP【程序源码+文档+调试运行】
  • 高教社杯数模竞赛特辑论文篇-2023年B题:多波束测线布设(附获奖论文及MATLAB代码实现)(续)
  • 【fast2021论文导读】 Learning Cache Replacement with Cacheus
  • 在 React 中选择使用 JSX 或 JavaScript
  • Halcon WPF 开发学习笔记(4):Halcon 锚点坐标打印
  • 【从0到1设计一个网关】性能优化---使用Disruptor提供缓冲区
  • Redis 特殊数据类型
  • 【Windows网络编程】二.TCP套接字编程与主机上线实验
  • Qt 事件循环
  • 【趣味随笔】YOLO的“进化史”极简版(YOLO v1-->YOLOP)
  • Leetcode421. 数组中两个数的最大异或值
  • SPRINGBOOT整合CXF发布WEB SERVICE和客户端调用(用户和密码验证)
  • 代码随想录训练营Day5:哈希数组
  • 腾讯云3年轻量2核2G4M和2核4G5M服务器540元三年
  • 程序员的护城河:职业发展的关键元素
  • 基于SpringBoot+Vue的在线学习平台系统
  • Kafka+redis分布式锁结合使用心得总结
  • cmd打开idea
  • javaScript爬虫程序抓取评论
  • RT-DETR 应用 CARAFE:特征内容感知重新组装
  • Git Commit 之道:规范化 Commit Message 写作指南
  • 【机试题】LazyIterator迭代器懒加载问题
  • 【面试经典150 | 位运算】位1的个数
  • vue中数据代理和事件处理
  • Unity之NetCode多人网络游戏联机对战教程(8)--玩家位置同步
  • spring boot 中@Value读取中文配置时乱码