vue详解(3)

1. Vue 生命周期总结

四个阶段,八个钩子 -> 三个常用 createdmounted,beforeDestroy
created

2. 工程化开发 & 脚手架 Vue CLI

  • 基本介绍:
    Vue CLI 是 Vue 官方提供的一个全局命令工具
    可以帮助我们快速创建一个开发 Vue 项目的标准化基础架子。【集成了 webpack 配置】
  • 好处:
  1. 开箱即用,零配置
  2. 内置 babel 等工具
  3. 标准化
  • 使用步骤:
  1. 全局安装 (一次) :yarn global add @vue/clinpm i @vue/cli -g
  2. 查看 Vue 版本:vue --version
  3. 创建项目架子:vue create project-name(项目名-不能用中文)
  4. 跳转到该目录下:cd project-name
  5. 启动项目: yarn servenpm run serve(找package.json)

3. 脚手架目录文件介绍 & 项目运行流程

vuecll

  • main.js 核心代码
  1. 导入 Vue:
    import Vue from 'vue'
  2. 导入 App.vue
    import App from './App.vue'
  3. 实例化 Vue,将 App.vue 渲染到 index.html 容器中
new Vue({
render: h => h(App),
}).$mount('#app')

4. App.vue 文件(根组件)

整个应用最上层的组件,包裹所有普通小组件。
一个根组件App.vue,包含的三个部分
template 结构 (只能有一个根节点)
style 样式 (可以支持less,需要装包 less 和 less-loader )
(1) style标签,lang=“less” 开启less功能
(2) 装包: 不要直接输入npm install less less-loader -g,这会直接按照最新版本,可能会报错,输入npm install less less-loader --save-dev
script 行为

5. 普通组件的注册使用:

1. 局部注册:只能在注册的组件内使用
① 创建 .vue 文件 (三个组成部分)
② 在使用的组件内导入并注册

// 导入需要注册的组件
import 组件对象 from '.vue文件路径'
import HmHeader from './components/HmHeader'
export default {
// 局部注册
components: {
'组件名': 组件对象,
HmHeader
}
}

2. 全局注册:所有组件内都能使用
① 创建 .vue 文件 (三个组成部分)
main.js 中进行全局注册

// 在App.vue导入需要全局注册的组件
import HmButton from './components/HmButton'
// 调用 Vue.component 进行全局注册
// Vue.component('组件名', 组件对象)
Vue.component('HmButton', HmButton)

  • 使用:当成 html 标签使用 <组件名></组件名>
  • 注意: 组件名规范 → 大驼峰命名法,如:HmHeader
  • 技巧:一般都用局部注册,如果发现确实是通用组件,再定义到全局。

6. 组件三大组成部分的注意点:

  • 结构:有且只能一个根元素
  • 样式:默认全局样式,加上 scoped 局部样式
  • 逻辑:data是一个函数,保证数据独立。
data () {
return {
count: 100
}
},

7. 组件通信

1. 两种组件关系分类 和 对应的组件通信方案

  • 父子关系 → props & $emit
  • 非父子关系 → provide & inject 或 eventbus
  • 通用方案 → vuex

2. 父子通信方案的核心流程

  • 2.1 父传子props:
    父组件通过 props 将数据传递给子组件
    ① 父中给子添加属性传值 ② 子props 接收 ③ 子组件使用
  • 2.2 子传父 e m i t :子组件利用 ∗ ∗ emit: 子组件利用 ** emit:子组件利用emit** 通知父组件,进行修改更新
    ① 子$emit 发送消息 ②父中给子添加消息监听 ③ 父中实现处理函数

8. 什么是 prop

  • Prop 定义:组件上 注册的一些 自定义属性
  • Prop 作用:向子组件传递数据
  • 特点:可以 传递 任意数量 的prop;可以 传递 任意类型 的prop

1. props 校验

  • 作用:为组件的 prop 指定验证要求,不符合要求,控制台就会有错误提示 → 帮助开发者,快速发现错误
  • 语法:① 类型校验;② 非空校验;③ 默认值;④ 自定义校验
//基础写法:类型校验
props: {
校验的属性名: 类型 // Number String Boolean Array Function Object类型做约束
},
//完整写法(类型、是否必填、默认值、自定义校验)
props: {
校验的属性名: {
type: 类型, // Number String Boolean ...
required: true, // 是否必填
default: 默认值, // 默认值
validator (value) {
// 自定义校验逻辑
return 是否通过校验
}
}
},

2. prop & data、单向数据流

共同点:都可以给组件提供数据。
区别:

  • data 的数据是自己的 → 随便改
  • prop 的数据是外部的 → 不能直接改,要遵循 单向数据流
    单向数据流:父级 prop 的数据更新,会向下流动,影响子组件。这个数据流动是单向的。
    口诀:谁的数据谁负责
    prop

8. 非父子通信 (拓展) - event bus 事件总线

作用:非父子组件之间,进行简易消息传递。(复杂场景 → Vuex)

  1. 创建一个都能访问到的事件总线 (空 Vue 实例) → utils/EventBus.js
import Vue from 'vue'
const Bus = new Vue()
export default Bus
  1. A 组件(接收方),监听 Bus 实例的事件
created () {
Bus.$on('sendMsg', (msg) => {
this.msg = msg
})
}
  1. B 组件(发送方),触发 Bus 实例的事件
Bus.$emit('sendMsg', '这是一个消息')

9. 非父子通信 (拓展) - provide & inject

provide & inject 作用:跨层级共享数据。

  1. 父组件 provide 提供数据
export default {
provide () {
return {
// 普通类型【非响应式】
color: this.color, 
// 复杂类型【响应式】
userInfo: this.userInfo,
}
}
}
  1. 子/孙组件 inject 取值使用
export default {
inject: ['color','userInfo'],
created () {
console.log(this.color, this.userInfo)
}
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于深度学习的脑部肿瘤检测系统

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长 QQ 名片 :) 1. 项目简介 当大脑中形成异常细胞时&#xff0c;就会发生脑肿瘤。肿瘤主要有两种类型&#xff1a;癌性&#xff08;恶性&#xff09;肿瘤和良性肿瘤。恶性肿瘤可分为原发性肿瘤和继发性肿瘤&#xff0c;前者始…

单片机STM32中断与事件的区别

【转】1-单片机STM32---中断与事件的区别 - Engraver - 博客园 (cnblogs.com) 路径不同&#xff0c;处理方式不同&#xff0c;是否有程序不同&#xff0c;是否有cpu参与不同。 事件是比中断更新的升级产物。

Golang | Leetcode Golang题解之第41题缺失的第一个正数

题目&#xff1a; 题解&#xff1a; func firstMissingPositive(nums []int) int {n : len(nums)for i : 0; i < n; i {for nums[i] > 0 && nums[i] < n && nums[nums[i]-1] ! nums[i] {nums[nums[i]-1], nums[i] nums[i], nums[nums[i]-1]}}for i …

JavaScript变量及数据类型

目录 概述&#xff1a; 变量&#xff1a; 前言&#xff1a; 变量的命名&#xff1a; 定义变量&#xff1a; 为变量赋值&#xff1a; 变量提升&#xff1a; let和const关键字&#xff1a; JS数据类型&#xff1a; 前言&#xff1a; typeof操作符&#xff1a; JS基本…

一二三应用开发平台使用手册——系统管理-用户组-使用说明

概述 在RBAC模型中&#xff0c;资源、角色、用户三个关键元素&#xff0c;构成权限体系。在平台设计和实现的时候&#xff0c;以下几个核心问题思考如下&#xff1a; 角色&#xff0c;单层平铺还是树形结构&#xff1f; 在小型应用中&#xff0c;角色数量有限的情况下&#x…

Gitea 简单介绍、用法以及使用注意事项!

Gitea 是一个轻量级的代码托管解决方案&#xff0c;它提供了一个简单而强大的平台&#xff0c;用于托管和协作开发项目。基于 Go 语言编写&#xff0c;与 GitLab 和 GitHub Enterprise 类似&#xff0c;但专为自托管而设计。以下是对 Gitea 的详细介绍&#xff0c;包括常用命令…

SpringBoot---------@Value,@ConfigurationProperyies以及多环境开发配置

application.yml server:port: 8080#logging: # level: # root: info(默认)array:name: zzlage: 18subject:- Java- Vue- SpringBoot Value注解的使用:从yml配置文件中获取数据&#xff0c;即可在类中使用 Value("${server.port}")private String port;Value(&q…

SpringBoot中Bean的创建过程及扩展操作点 @by_TWJ

目录 1. 类含义2. Bean创建过程 - 流程图3. 例子3.1. 可变属性注入到实体中3.2. 模拟Bean创建的例子 1. 类含义 BeanDefinition - 类定义&#xff0c;为Bean创建提供一些定义类的信息。实现类如下&#xff1a; RootBeanDefinition - 类定义信息&#xff0c;包含有父子关系的Be…

美国RAKSmart服务器性能科普

当我们谈论服务器性能时&#xff0c;无疑会涉及多个维度&#xff0c;包括存储能力、网络连接、稳定性、管理界面以及安全性等。在这篇科普文章中&#xff0c;我们将深入探讨美国RAKSmart服务器的性能特点。 首先&#xff0c;RAKSmart服务器在存储和扩展性方面表现出色。它们配备…

Git 工作原理

Git 工作原理 | CoderMast编程桅杆https://www.codermast.com/dev-tools/git/git-workspace-index-repo.html Workspace&#xff1a;工作区Index / Stage&#xff1a;暂存区Repository&#xff1a;仓库区&#xff08;或本地仓库&#xff09;Remote&#xff1a;远程仓库 Git 一…

绿联 安装transmission

绿联 安装transmission及中文UI 1、镜像 linuxserver/transmission:latest 2、安装 2.1、创建容器 按需配置权重。 2.2、基础设置 2.3、网络 桥接即可。 注&#xff1a;如果使用IPV6&#xff0c;请选择"host"模式。 注&#xff1a;如果使用IPV6&#xff0c;请选…

网络数据包嗅探器工具

组织的网络非常庞大&#xff0c;包含服务器、交换机、路由器和接入点等众多节点&#xff0c;由于许多资源和流量不断通过这些节点&#xff0c;因此很难确定大量流量是真实的还是安全攻击的迹象&#xff0c;了解和了解组织的网络流量至关重要&#xff0c;一个有用的资源是网络数…

JAVA学习笔记31(IO流)

1.IO流 1.文件流 ​ *文件在程序中是以流的形式来操作的 2.常用文件操作 1.创建文件对象 1.new File(String pathname) //根据路径构建一个File对象 main() {}public void create01() {String filePath "e:\\news1.txt";File filePath new File(filePath);tr…

c++ 线性搜索与二分搜索

线性搜索 假设该项目以随机顺序存在于数组中&#xff0c;并且我们必须找到一个项目。那么搜索目标项目的唯一方法就是从第一个位置开始&#xff0c;并将其与目标进行比较。如果项目相同&#xff0c;我们将返回当前项目的位置。否则&#xff0c;我们将转移到下一个位置。…

HTML 中创建 WebSocket服务与接收webSocket发送内容

效果图 服务端 html客户端接受的消息 接下来开始实现服务端 创建server.js const WebSocket require(ws);const wss new WebSocket.Server({ port: 8877 });wss.on(connection, function connection(ws) {console.log(WebSocket connection opened.);// 每隔 5 秒发送一次…

NIO之ByteBuffer

NIO中的ByteBuffer是缓冲区&#xff0c;其中有几个比较重要的属性capacity&#xff0c;position和limit。 capacity&#xff1a; 其中&#xff0c;capacity是缓冲区的容量大小&#xff0c;在分配内存空间后不会改变。 limit&#xff1a; limit是限制位置&#xff0c;在读写模…

【MongoDB】数据的自动过期,TTL索引

文章目录 1. 前言2.概念与使用2.1.使用方式2.2.数组中包含日期字段2.3.设置具体的过期时间点2.4.额外的过滤条件 3.总结 1. 前言 在近期的工作中&#xff0c;使用了MongoDB来保存了一些日志数据&#xff0c;但是这些日志数据具有一定的时效性&#xff0c;也就是按照业务的需要…

活动回顾丨雀跃山城•2024重庆爱鸟周主题公益活动落地大坪大融城

重庆&#xff0c;这座美丽的山城&#xff0c;不仅有着独特的山水风光&#xff0c;更是众多鸟类栖息繁衍的家园。重庆将四月第一周定为“重庆爱鸟周”&#xff0c;为提高青少年珍稀动物保护意识&#xff0c;4月20日&#xff0c;大坪大融城携手传益千里开展雀跃山城?2024重庆爱鸟…

cox版本的Boruta+SHAP分析(心力衰竭数据集)

Cox版本的BorutaSHAP分析&#xff08;心力衰竭数据集&#xff09; Boruta算法是变量筛选的有力工具&#xff0c;而SHAP分析是观察预测变量与结局变量间关系的不错的方法&#xff0c;在传统的分析方法的基础上提供了一个全新的视角。Boruta算法SHAP分析&#xff0c;正在逐渐成为…

Python代码格式化工具Black介绍

Black 是一个 Python 代码格式化工具&#xff0c;以其简洁和一致的格式化风格而闻名。它被设计为一个“零妥协”的代码格式化程序&#xff0c;意味着它会自动地将代码格式化为一种统一的风格&#xff0c;而不需要用户进行任何配置。Black 严格遵循 PEP 8 -- Python 的官方编码风…
最新文章