vue 08 vue-cli,render函数,props,scoped,ref和mixin

news2025/1/11 2:19:01

01.render函数是vue中的一个特殊的函数(有一个默认的函数做参数,是createElement),用来创造html标签和标签中的内容。好处是可以动态的创建html标签
例如:
在这里插入图片描述

其中返回的createElement()函数有三个参数,第一个参数是标签名字,例如h1,h2,span等,第二个是属性,里面可以添加标签的属性,例如 style,length,第三个是内容,可以是子标签或者是文本内容。
在这里插入图片描述
在这里插入图片描述

在创建组件。createElement(直接写组件名字,import导入的时候的组件自定义名字)
在vue-cli中的app.vue文件中,render函数是es6的箭头函数形式。

02.vue-cli来创建vue项目。

跟传统的vue项目不同的,通过vue-cli创建的项目有一些不同:
之前传统:自己创建空项目,导入vue相关的js文件。要去写一些关于vue的代码的话(包括一些vue的组件),都需要自己手动创建html文件或者vue文件。
在这里插入图片描述

vue-cli创建:(都是在dos界面上运行的代码)
01.运行步骤
在这里插入图片描述

02.在创建的项目文件中,用vscode去打开,相关的项目结构如图所示:
在这里插入图片描述

03.项目中的配置文件进行分析:

.gitignore文件:表示项目中不需要git来管理的文件。
在这里插入图片描述
babel.config.js文件:babel的控制文件。
babel.config.js 是一个用于配置 Babel 编译工具的配置文件。Babel 是一个用于将新版本的 JavaScript 代码转换为向后兼容的旧版本 JavaScript 代码的工具(es6->es5)。在 babel.config.js 中,你可以指定要使用的插件、预设、转换规则以及其他相关配置选项。

package-lock.json文件:这个是控制依赖版本的文件,和maven中的poml文件很相似,都是用于导入依赖。
在这里插入图片描述
version:是强制指定的版本
resolved:下载地址

package.json文件:
在这里插入图片描述
readme.md:日志文件。

ref属性
被用来给元素或子组件注册引用信息(id的替代者)
应用在html标签上获取的是真实DOM元素,应用在组件标签上是组件实例对象(vc)
使用方式:
打标识:<h1 ref="xxx">.....</h1><School ref="xxx"></School>
获取:this.$refs.xxx

<template>
  <div>
    <h1 v-text="msg" ref="title"></h1>
    <button ref="btn" @click="showDOM">点我输出上方的DOM元素</button>
    <School ref="sch" />
  </div>
</template>

<script>
//引入School组件
import School from "./components/School";

export default {
  name: "App",
  components: { School },
  data() {
    return {
      msg: "欢迎学习Vue!",
    };
  },
  methods: {
    showDOM() {
      console.log(this.$refs.title); //真实DOM元素
      console.log(this.$refs.btn); //真实DOM元素
      console.log(this.$refs.sch); //School组件的实例对象(vc)
    },
  },
};
</script>


props配置项
功能:让组件接收外部传过来的数据

传递数据:<Demo name="xxx"/>,此处的<Demo/>是组件

接收数据:

第一种方式(只接收):props:[‘name’]

第二种方式(限制类型):props:{name:String}

第三种方式(限制类型、限制必要性、指定默认值):

props:{
	name:{
	type:String, //类型
	required:true, //必要性
	default:'老王' //默认值
	}
}

备注:props是只读的,Vue底层会监测你对props的修改,如果进行了修改,就会发出警告,若业务需求确实需要修改,那么请复制props的内容到data中一份,然后去修改data中的数据。

<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: "Student",
  data() {
    console.log(this);
    return {
      msg: "我是一个尚硅谷的学生",
      myAge: this.age,
    };
  },
  methods: {
    updateAge() {
      this.myAge++;
    },
  },
  //简单声明接收
  // props:['name','age','sex']

  //接收的同时对数据进行类型限制
  /* props:{
			name:String,
			age:Number,
			sex:String
		} */

  //接收的同时对数据:进行类型限制+默认值的指定+必要性的限制
  props: {
    name: {
      type: String, //name的类型是字符串
      required: true, //name是必要的
    },
    age: {
      type: Number,
      default: 99, //默认值
    },
    sex: {
      type: String,
      required: true,
    },
  },
};
</script>


mixin(混入)
混入(mixin)提供了一种非常灵活的方式,来分发 Vue 组件中的可复用功能。一个混入对象可以包含任意组件选项(如data、methods、mounted等等)。当组件使用混入对象时,所有混入对象的选项将被“混合”进入该组件本身的选项。

使用方式:

第一步定义混合:

{
    data(){....},
    methods:{....}
    ....
}

第二步使用混入:

全局混入:Vue.mixin(xxx)   //运行的时候,直接全部vue组件收到影响
局部混入:mixins:['xxx']  

创建一个mixin.js文件,代码如下:

export const hunhe = { //这里是分别暴露,暴露两个对象,hunhe(主要包装methods和mounted函数)和hunhe2(包装data)
  methods: {
    showName() {
      alert(this.name);
    },
  },
  mounted() {
    console.log("你好啊!");
  },
};
export const hunhe2 = {
  data() {
    return {
      x: 100,
      y: 200,
    };
  },
};


main.js文件(vue-cli项目的入口文件):

//引入Vue
import Vue from 'vue'
//引入App
import App from './App.vue'
import {hunhe,hunhe2} from './mixin'
//关闭Vue的生产提示
Vue.config.productionTip = false

Vue.mixin(hunhe)
Vue.mixin(hunhe2)


//创建vm
new Vue({
	el:'#app',
	render: h => h(App)
})

组件中

<template>
  <div>
    <h2 @click="showName">学生姓名:{{ name }}</h2> //这里是mixin的方法
    <h2>学生性别:{{ sex }}</h2>
  </div>
</template>

<script>
// import {hunhe,hunhe2} from '../mixin'   //这里因为全局mixin,就不需要在这里导入了

export default {
  name: "Student",
  data() {
    return {
      name: "张三",
      sex: "男",
    };
  },
  // mixins:[hunhe,hunhe2]
};
</script>


scoped样式
作用:让样式在局部生效,防止冲突。写了scoped,这个组件中的style样式就只会在这个组件有效
写法:<style scoped>


props中的数据,data中的数据,mixin中的数据,如果出现同名的情况下:
props中的优先级最高
data中的其次。

但是如果mixin中有生命周期这种特殊的函数和组件中的同名生命周期函数发生冲突了:两个都运行。

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

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

相关文章

【CHI】(一)基础概念

基于CHI issueF 本章介绍了CHI体系结构和术语。它包含以下部分&#xff1a; 体系结构概述拓扑结构术语事务分类一致性概述组件命名读数据来源 一、CHI架构 CHI架构是一个可扩展的、支持一致性的集线器接口和由多个组件使用的片上互连。根据系统要求的PPA&#xff08;perform…

Android开发实践:Android.mk模板

关于Android NDK开发的文章已经比较多了&#xff0c;我的博客中也分享了很多NDK开发相关经验和技巧&#xff0c;今天简单写了一个 Android.mk 的示例模板&#xff0c;供初学者参考。 本模板主要给大家示例 Android NDK 开发中的如下几个问题&#xff1a; 如何自动添加需要编译…

24届近5年东华大学自动化考研院校分析

今天给大家带来的是东华大学控制考研分析 满满干货&#xff5e;还不快快点赞收藏 一、东华大学 学校简介 东华大学&#xff08;Donghua University&#xff09;&#xff0c;地处上海市&#xff0c;是教育部直属全国重点大学&#xff0c;国家“双一流”、“211工程”建设高校…

动手学DL——MLP多层感知机【深度学习】【PyTorch】

文章目录 4、多层感知机&#xff08; MLP&#xff09;4.1、多层感知机4.1.1、隐层4.1.2、激活函数 σ 4.2、从零实现多层感知机4.3、简单实现多层感知机4.4、模型选择、欠拟合、过拟合4.5、权重衰退4.6、丢失法|暂退法&#xff08;Dropout&#xff09;4.6.1、dropout 函数实现4…

websocket知识点

http协议 http协议特点&#xff1a; 无状态协议每个请求是独立的单双工通信&#xff0c;且服务器无法主动给客户端发信息http协议受浏览器同源策略影响 http实现双向通信方法: 轮询长轮询iframe流sse EventSource websocket协议 websocket协议: 全双工协议支持跨域支持多…

大学生口才培训需求分析

标题&#xff1a;大学生口才培训需求分析 摘要&#xff1a; 本论文旨在分析大学生口才培训的需求&#xff0c;通过对大学生口才培训的重要性、现状和挑战进行研究&#xff0c;并结合相关理论和实践经验&#xff0c;提出相应的培训需求和解决方案。通过本论文的研究&#xff0c…

stm32 cubemx can通讯(1)回环模式

文章目录 前言一、cubemx配置二、代码1.过滤器的配置&#xff08;后续会介绍&#xff09;2.main.c3.主循环 总结 前言 介绍使用stm32cubemx来配置can&#xff0c;本节讲解一个简答&#xff0c;不需要stm32的can和外部连接&#xff0c;直接可以用于验证的回环模式。 所谓回环模…

Redis数据库学习

目录 第一章、Redis数据库的下载和安装1.1&#xff09;nosql数据库和 Redis 介绍1.2&#xff09;Windows中下载安装Redis数据库1.3&#xff09;Linux中安装Redis数据库1.4&#xff09;Linux中启动redis1.4&#xff09;Linux中关闭redis 第二章、三种Redis客户端连接Redis数据库…

TS 踩坑之路(四)之 Vue3

一、在使用定义默认值withDefaults和defineProps 组合时&#xff0c;默认值设置报错 代码案例 报错信息 不能将类型“{ isBackBtn: false; }”分配给类型“(props: PropsType) > RouteMsgType”。 对象字面量只能指定已知属性&#xff0c;并且“isBackBtn”不在类型“(pro…

探索 TypeScript 元组的用例

元组扩展了数组数据类型的功能。使用元组&#xff0c;我们可以轻松构造特殊类型的数组&#xff0c;其中元素相对于索引或位置是固定类型的。由于 TypeScript 的性质&#xff0c;这些元素类型在初始化时是已知的。使用元组&#xff0c;我们可以定义可以存储在数组中每个位置的数…

【vue3】基础知识点-setup语法糖

学习vue3&#xff0c;都会从基础知识点学起。了解setup函数&#xff0c;ref&#xff0c;recative&#xff0c;watch、comptued、pinia等如何使用 今天说vue3组合式api&#xff0c;setup函数 在学习过程中一开始接触到的是这样的&#xff0c;定义数据且都要通过return返回 <…

[保研/考研机试] 括号匹配问题 C++实现

题目描述&#xff1a; 在某个字符串(长度不超过100)中有左括号、右括号和大小写字母&#xff1b;规定(与常见的算数式子一样)任何一个左括号都从内到外与在它右边且距离最近的右括号匹配。写一个程序&#xff0c;找到无法匹配的左括号和右括号&#xff0c;输出原来的字符串&am…

grpcGateway配置

这里写自定义目录标题 欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题&#xff0c;有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自定义列表如何创建一个…

python openpyxl模块使用教程

目录 安装 openpyxl 模块工作簿相关方法工作表对象单元格相关方法1. 单元格对象获取2. 单元格属性3. 单元格样式4. 插入/删除 行列 安装 openpyxl 模块 pip install openpyxl -i https://pypi.tuna.tsinghua.edu.cn/simple工作簿相关方法 openpyxl.Workbook() : 新建工作簿&am…

Unity游戏源码分享-模拟城市搭建City Adventure

Unity游戏源码分享-模拟城市搭建City Adventure 插件如下&#xff1a; 下载地址&#xff1a; https://download.csdn.net/download/Highning0007/88191931

excel行转列

1.选中要转的内容&#xff0c;ctrlc 2.选择对应的大小&#xff0c;右击&#xff0c;点转置 3.ok

JavaScript算法【入门】

作者&#xff1a;20岁爱吃必胜客&#xff08;坤制作人&#xff09;&#xff0c;近十年开发经验, 跨域学习者&#xff0c;目前于海外某世界知名高校就读计算机相关专业。荣誉&#xff1a;阿里云博客专家认证、腾讯开发者社区优质创作者&#xff0c;在CTF省赛校赛多次取得好成绩。…

使用nodejs自动生成后端的模板文件

在编写nodejs后端时&#xff0c;我发现一些模板文件是十分通用的&#xff0c;所以想着由机器帮我生成简单的模板文件。利用的是nodejs的fs能力&#xff0c;代码如下 const fs require("fs"); const path require("path"); const { humpTransformLine } …

【vue Dplayer】播放hls视频流

准备工作 安装Dplayer和hls.js npm install dplayer --save npm install hls.js --save准备测试流 hls测试地址&#xff1a;&#xff08;截止2023.08.08有效&#xff09; http://playertest.longtailvideo.com/adaptive/bipbop/gear4/prog_index.m3u8 <template><d…