使用Vue脚手架2

ref属性

src/components/SchoolName.vue

<template><div class="school"><h2>学校名称:{{name}}</h2><h2>学校地址:{{address}}</h2></div>
</template><script>export default {name:'SchoolName',data() {return {name:'黑马',address:'广州'}},}
</script><style>.school{background-color: orange;}
</style>

 src/App.vue

<template><div><h1 v-text="msg" ref="title"></h1><button ref="btn" @click="showDOM">点我输出上方的DOM元素</button><SchoolName ref="sch"/></div>
</template><script>
// 引入School组件
import SchoolName from './components/School.vue'export default {name: 'App',data(){return{msg:'欢迎学习Vue!'}},components: { SchoolName },methods:{showDOM(){console.log(this);console.log(this.$refs.title);//真实DOM元素console.log(this.$refs.btn);//真实DOM元素console.log(this.$refs.sch);//School组件的实例对象}}
}
</script>

 

props配置项

src/App.vue

<template><div><StudentName name="李四" sex="女" /><hr/><StudentName name="王五" sex="男" :age="18"/><hr/></div>
</template><script>
// 引入School组件
import StudentName from './components/StudentName'export default {name: 'App',components: { StudentName }}
</script>

src/components/StudentName.vue

<template><div><h1>{{ msg }}</h1><h2>学生姓名:{{ name }}</h2><h2>学生性别:{{ sex }}</h2><h2>学生年龄:{{ myAge+1 }}</h2><button @click="updateAge">尝试修改到的年龄</button></div>
</template><script>
export default {name: 'StudentName',data() {return {msg: '我是一个尚硅谷的学生',myAge: this.age}},methods:{updateAge(){this.myAge++;}},// 1.简单声明接收// props:[//     'name','sex','age'// ]// 2.接收的同时对数据类型进行限制// props: {//     name: String,//     sex: String,//     age: Number// }// 3.接收的同时:进行类型限制+默认值的指定+必要性的限制props: {name: {type: String,required: true,},sex: {type: String,required: true,},age: {type: Number,default: 99,}}
}
</script>

 

注意:当props中与当前组件配置同名时,props中的配置优先级高于当前组件 

mixin混入

1.组件和混入对象含有同名选项时,这些选项将以恰当的方式进行“合并”,在发生冲突时以组件优先

var mixin={data:function(){return{message:'hello',foo:'abc}}
}new Vue({mixins:[mixin],data(){return{message:'goodbye',bar:'def'}},created(){console.log(this.$data)// =>{message:"ggodbye",foo:"abc",bar:"def"}}})

 2.同名生命周期函数将合并为一个数组,都会被调用。另外,混入对象的生命周期函数将在自身生命周期函数之前调用

var mixin={created(){console.log('混入对象的钩子被调用')}
}new Vue({mixins:[mixin],created(){console.log('组件钩子被调用')}
})// =>"混入对象的钩子被调用"
// =>"组件钩子被调用"

src/mixin.js

export const hunhe={methods:{showName(){alert(this.name);}},mounted(){console.log('你好啊');}
}export const hunhe2={data(){return {x:100,y:200}}
}

src/components/School.vue

<template><div><h2 @click="showName">学校名称:{{ name }}</h2><h2>学校地址:{{ address }}</h2></div>
</template><script>
import {hunhe,hunhe2} from '../mixin'
export default {name: 'School',data() {return {name:'黑马',address:'广州',x:666}},mixins:[hunhe,hunhe2]//局部混入
}
</script>

src/components/Student.vue

<template><div><h2 @click="showName">学生姓名:{{ name }}</h2><h2>学生性别:{{ sex }}</h2></div>
</template><script>
import {hunhe,hunhe2} from '../mixin'
export default {name: 'Student',data() {return {name:'张三',sex:'男'}},mixins:[hunhe,hunhe2]//局部混入
}
</script>

src/App.vue

<template><div><Student/><hr/><School/></div>
</template><script>
import Student from './components/Student'
import School from './components/School'export default {name: 'App',components: { Student,School }}
</script>

src/main.js

import Vue from 'vue'
import App from './App.vue'
import { hunhe } from './mixin'// import {mixin} from './mixin'
Vue.config.productionTip = false// Vue.mixin(hunhe)  //全局混合引入
// Vue.mixin(hunhe2) //全局混合引入
new Vue({el: '#app',render: h => h(App)
})

plugin插件

src/plugins.js 

export default {install(Vue,x,y,z){console.log(x,y,z)// 全局过滤器Vue.filter('mySlice',function(value){return value.slice(0,4)})// 定义全局指令Vue.directive('fbind',{// 指令与元素成功绑定时bind(element,binding){element.value=binding.value},// 指令所在元素被插入页面时inserted(element,binding){element.focus()},// 指令所在的模板被重新解析时update(element,binding){element.value=binding.value}})// 定义混入Vue.mixin({data(){return{x:100,y:200}}})// 给Vue原型上添加一个方法(vm和vc都能用Vue.prototype.hello=()=>{alert('你好啊')}}
}

src/main.js

import Vue from 'vue'
import App from './App.vue'import plugins from './plugins.js'
Vue.config.productionTip = false//应用插件
Vue.use(plugins,1,2,3)
//创建vm
new Vue({el: '#app',render: h => h(App)
})

src/components/School.vue

<template><div><h2>学校名称:{{ name|mySlice }}</h2><h2>学校地址:{{ address }}</h2><button @click="test">点我测试一个hello方法</button></div>
</template><script>
export default {name: 'School',data() {return {name:'黑马',address:'广州'}},methods:{test(){this.hello()}}
}
</script>

src/components/Student.vue

<template><div><h2>学生姓名:{{ name }}</h2><h2>学生性别:{{ sex }}</h2><input type="text" v-bind:value="name"/></div>
</template><script>
export default {name: 'Student',data() {return {name:'张三',sex:'男'}}
}
</script>

src/App.vue

<template><div><Student/><hr/><School/></div>
</template><script>
import Student from './components/Student'
import School from './components/School'export default {name: 'App',components: { Student,School }}
</script>

scoped样式

查看版本npm view webpack versions

src/components/Student.vue

<template><div class="demo"><h2 class="title">学生姓名:{{ name }}</h2><h2 class="atguigu">学生性别:{{ sex }}</h2></div>
</template><script>
export default {name: 'Student',data() {return {name:'张三',sex:'男'}}
}
</script><style lang="less">.demo{background-color: pink;.atguigu{font-size: 40px;}}
</style>

src/components/School.vue

<template><div class="demo"><h2 class="title">学校名称:{{ name}}</h2><h2>学校地址:{{ address }}</h2></div>
</template><script>
export default {name: 'School',data() {return {name:'黑马',address:'广州'}}
}
</script><style scoped>.demo{background-color: skyblue;}
</style>

src/App.vue

<template><div><h1 class="title">你好啊</h1><Student/><School/></div>
</template><script>
import Student from './components/Student'
import School from './components/School'export default {name: 'App',components: { Student,School }
}
</script><style scoped>.title{background-color: red;}
</style>

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

分层解耦-三层架构

三层架构 在上篇文章的案例中写文章-CSDN创作中心 的Controller类承担了对于数据操作&#xff08;访问&#xff09;、对于对于数据的逻辑处理、以及接受请求响应数据的工作&#xff0c;对于类似的小项目来说冗杂程度还可以接收&#xff0c;但是如果项目更加复杂&#xff0c;就…

python3+requests+unittest实战系列【二】

前言&#xff1a;上篇文章python3requestsunittest&#xff1a;接口自动化测试&#xff08;一&#xff09;已经介绍了基于unittest框架的实现接口自动化&#xff0c;但是也存在一些问题&#xff0c;比如最明显的测试数据和业务没有区分开&#xff0c;接口用例不便于管理等&…

快手详情API接口jason格式java php

随着移动互联网的快速发展&#xff0c;短视频应用成为越来越多用户获取信息和进行购物的重要途径。作为广告商或电商平台&#xff0c;了解和充分利用快手的商品详情API接口将为您的营销策略带来巨大的潜力 了解快手商品详情API接口 快手的商品详情API接口是一组提供商品相关信息…

Apache Doris 在金融壹账通指标中台的应用实践

本文导读&#xff1a; 金融壹账通作为中国平安集团的联营公司&#xff0c;依托平安集团 30 多年金融行业的丰富经验及自主科研能力&#xff0c;向客户提供“横向一体化、纵向全覆盖”的整合产品&#xff0c;以“技术业务”为独特竞争力&#xff0c;帮助客户提升效率、提升服务…

6月城市之星领跑活动获奖名单已出炉

经过一个月的角逐&#xff0c;6月城市之星领跑活动上榜名单终于出炉啦&#xff0c;本次城市赛道是根据最后登陆且6月份有入围博客之星用户的城市一共368个城市&#xff0c;城市人数划分区间具体情况如下&#xff1a; 200以上城市2个&#xff0c;其中有一些博主的城市由于未获取…

ArcGIS栅格影像数据处理

ArcGIS栅格影像数据处理 文章目录 ArcGIS栅格影像数据处理1. 栅格影像数据坐标系转换2. 栅格数据16bit转8bit3. 栅格数据波段变换参考链接 1. 栅格影像数据坐标系转换 点击【ArcToolbox】>【数据管理工具】>【投影和变换】>【栅格】>【投影栅格】。 2. 栅格数据16…

Redis---缓存双写一致性

目录 一、什么是缓存双写一致性呢&#xff1f; 1.1 双检加锁机制 二、数据库和缓存一致性的更新策略 2.1、先更新数据库&#xff0c;后更新缓存 2.2 、先更新缓存&#xff0c;后更新数据库 2.3、先删除缓存&#xff0c;在更新数据库 延时双删的策略&#xff1a; 2.4.先更新数…

Linux--操作系统进程的状态

【Linux】进程概念 —— 进程状态_linux d状态进程_Hello_World_213的博客-CSDN博客 新建&#xff1a;字面意思&#xff0c;将你的task_struct创建出来并且还未入队列 运行&#xff1a;task_struct结构体在运行队列中排队&#xff0c;就叫做运行态 阻塞&#xff1a; 等待非C…

Python采集课堂视频教程, m3u8视频解密

前言 嗨喽&#xff0c;大家好呀~这里是爱看美女的茜茜呐 环境使用: Python 3.8 解释器 Pycharm 编辑器 模块使用&#xff1a; requests >>> pip install requests pycryptodome --> pip install pycryptodome re 第三方模块安装方法&#xff1a; win R 输…

Prompt本质解密及Evaluation实战与源码解析(三)

9.5 Evaluation for QA源码解析 如图9-4所示,我们看一下LangChain框架对问答评估的(Evaluation for QA)的源代码。 图9- 5 LangChain的evaluation qa目录 在eval_prompt.py文件里面,主要定义了三个类 PromptTemplate,它们都是用于生成题目的模板。 Gavin大咖微信:NLP_Mat…

python离线安装ibm_db

下载离线包ibm_db以及clidriver 下载imb_db 在pypi官方网站https://pypi.org/project/ibm-db/#files下载离线安装包ibm_db-3.0.2.tar.gz。下载clidriver 下载地址&#xff1a;https://public.dhe.ibm.com/ibmdl/export/pub/software/data/db2/drivers/odbc_cli/nt32_odbc_cli.…

java后端开发环境搭建 mac

在mac pro上搭建一套java 后端开发环境&#xff0c;主要安装的内容有&#xff1a;jdk、maven、git、tomcat、mysql、navicat、IntelliJ、redis。 本人mac pro的系统为mac OS Monterey 12.6.7&#xff0c;主机的硬件架构为x86_64。 左上角关于本机查看系统版本&#xff1b;终端…