【VUE】第二期——生命周期及工程化

目录

1 生命周期

1.1 介绍 

1.2 钩子

2 可视化图表库

3 脚手架Vue CLI

3.1 使用步骤

3.2 项目目录介绍

3.3 main.js入口文件代码介绍

4 组件化开发

4.1 组件

4.2 普通组件注册

4.2.1 局部注册 

4.2.2 全局注册


1 生命周期

1.1 介绍 

Vue生命周期:就是一个Vue实例从创建 到 销毁 的整个过程。

生命周期四个阶段:① 创建 ② 挂载 ③ 更新 ④ 销毁

1.创建阶段:创建响应式数据

2.挂载阶段:渲染模板

3.更新阶段:修改数据,更新视图

4.销毁阶段:销毁Vue实例


1.2 钩子

Vue生命周期过程中,会自动运行一些函数,被称为【生命周期钩子】→ 让开发者可以在【特定阶段】运行自己的代码

示例:

<body><div id="app"><h3>{{ title }}</h3><div><button @click="count--">-</button><span>{{ count }}</span><button @click="count++">+</button></div></div><script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script><script>const app = new Vue({el: '#app',data: {count: 100,title: '计数器'},// 1. 创建阶段(准备数据)beforeCreate () {console.log('beforeCreate 响应式数据准备好之前', this.count)},created () {console.log('created 响应式数据准备好之后', this.count)// this.数据名 = 请求回来的数据// 可以开始发送初始化渲染的请求了},// 2. 挂载阶段(渲染模板)beforeMount () {console.log('beforeMount 模板渲染之前', document.querySelector('h3').innerHTML)},mounted () {console.log('mounted 模板渲染之后', document.querySelector('h3').innerHTML)// 可以开始操作dom了},// 3. 更新阶段(修改数据 → 更新视图)beforeUpdate () {console.log('beforeUpdate 数据修改了,视图还没更新', document.querySelector('span').innerHTML)},updated () {console.log('updated 数据修改了,视图已经更新', document.querySelector('span').innerHTML)},// 4. 卸载阶段beforeDestroy () {console.log('beforeDestroy, 卸载前')console.log('清除掉一些Vue以外的资源占用,定时器,延时器...')},destroyed () {console.log('destroyed,卸载后')}})</script>
</body>

2 可视化图表库

官网:

Apache ECharts

饼图渲染:

   (1) 在创建阶段后(created)初始化一个饼图 echarts.init(dom) 


   (2) 将更新饼图数据代码(echarts.setOption({ ... }))封装,每当更新列表时调用一次,根据数据实时更新饼图

   (3) 在挂载阶段后(mouted)调用函数,更新一次饼图数据 

<body><div id="app"><div class="echarts-box" id="main"></div></div><script>const app = new Vue({el: '#app',data: {list: [],name: '',price: ''},created () {// const res = await axios.get('https://applet-base-api-t.itheima.net/bill', {//   params: {//     creator: '小黑'//   }// })// this.list = res.data.datathis.getList()},mounted () {//初始化this.myChart = echarts.init(document.querySelector('#main'))//第一次渲染(无数据渲染)this.myChart.setOption({// 大标题title: {text: '消费账单列表',left: 'center'},// 提示框tooltip: {trigger: 'item'},// 图例legend: {orient: 'vertical',left: 'left'},// 数据项series: [{name: '消费账单',type: 'pie',radius: '50%', // 半径data: [// { value: 1048, name: '球鞋' },// { value: 735, name: '防晒霜' }],emphasis: {itemStyle: {shadowBlur: 10,shadowOffsetX: 0,shadowColor: 'rgba(0, 0, 0, 0.5)'}}}]})},methods: {async getList () {//更新数据const res = await axios.get('https://applet-base-api-t.itheima.net/bill', {params: {creator: '小黑'}})this.list = res.data.data// 更新图表(后续渲染)this.myChart.setOption({// 数据项series: [{data: this.list.map(item => ({ value: item.price, name: item.name}))}]})},}})</script>
</body>

⭐️注意(与以前不同的点):

1.axios可以简写写成axios.请求方式("请求地址", 请求数据对象)

get请求方法需要在请求数据对象里面再挂载一个params对象,然后在里面写参数,而post直接在请求数据对象里面写参数就行了

2.typeof后可以不加小括号(typeof 是一个一元运算符,用于返回一个表示数据类型的字符串)但是还是推荐加括号,这样可读性高


3 脚手架Vue CLI

Vue CLI 是Vue官方提供的一个全局命令工具

可以帮助我们快速创建一个开发Vue项目的标准化基础架子。【集成了webpack配置】

3.1 使用步骤

  1. 全局安装(只需安装一次即可) yarn global add @vue/cli 或者 npm i @vue/cli -g

  2. 查看vue/cli版本: vue --version

  3. 创建项目架子:vue create project-name(项目名不能使用中文)

  4. 启动项目:yarn serve 或者 npm run serve(命令不固定,找package.json)

记录:使用npm源或淘宝镜像且用yarn命令报错

解决:切换腾讯镜像,并且使用npm命令下载


3.2 项目目录介绍

虽然脚手架中的文件有很多,目前咱们只需认识三个文件即可

  1. main.js 入口文件

  2. App.vue App根组件

  3. index.html 模板文件


3.3 main.js入口文件代码介绍

//导入Vue模块
import Vue from 'vue'
//导入App根组件
import App from './App.vue'//设置控制台是否打印当前环境:生产环境or开发环境
Vue.config.productionTip = false//vue自动创建的实例化代码(简写)
new Vue({render: h => h(App),
}).$mount('#app')//完整写法
new Vue({//el指定Vue所管理的容器,与上述.$mount('#app')效果一样el:"#app",//render基于App.vue创建结构渲染index.htmlrender: (createElement) => {return createElement(App)}
})

4 组件化开发

4.1 组件

语法高亮插件:

构成:

  • template:结构 (有且只能一个根元素)

  • script: js逻辑

  • style: 样式 (可支持less,需要装包)

让组件支持less:

(1) style标签,lang="less" 开启less功能

(2) 装包: yarn add less less-loader -D 或者npm i less less-loader -D


4.2 普通组件注册

4.2.1 局部注册 

特点: 只能在注册的组件内使用

步骤:

1. 创建.vue文件(三个组成部分),可输入vue快速创建

 

组件名规范:大驼峰命名法, 如 HmHeader 

2. 在使用的组件内先导入再注册,最后使用

注册语法:

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

例:

// 导入需要注册的组件
import HmHeader from './components/HmHeader'export default {  // 局部注册components: {HmHeader:HmHeaer,//或//HmHeader}
}

使用方式:

当成html标签使用即可 <组件名></组件名> 


4.2.2 全局注册

特点:全局注册的组件,在项目的任何组件中都能使用

步骤:

1. 创建.vue组件(三个组成部分)

与上述一样,此处不再赘述

2. 在main.js中进行全局注册

Vue.component('组件名', 组件对象)

 例:

// 导入需要全局注册的组件
import HmButton from './components/HmButton'
Vue.component('HmButton', HmButton)

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

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

相关文章

SyntaxError: Unexpected keyword ‘else‘

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》、《前端求职突破计划》 &#x1f35a; 蓝桥云课签约作者、…

Spring Boot静态资源访问顺序

在 Spring Boot 中&#xff0c;static 和 public 目录都用于存放静态资源&#xff08;如 HTML、CSS、JavaScript、图片等文件&#xff09;&#xff0c;但它们在使用上有一些细微的区别。以下是它们的详细对比&#xff1a; 1. 默认优先级 Spring Boot 会按照以下优先级加载静态…

windows 平台如何点击网页上的url ,会打开远程桌面连接服务器

你可以使用自定义协议方案&#xff08;Protocol Scheme&#xff09;实现网页上点击URL后自动启动远程桌面连接&#xff08;mstsc&#xff09;&#xff0c;参考你提供的C代码思路&#xff0c;如下实现&#xff1a; 第一步&#xff1a;注册自定义协议 使用类似openmstsc://协议…

UniApp 运行的微信小程序如何进行深度优化

UniApp 运行的微信小程序如何进行深度优化 目录 引言性能优化 1. 减少包体积2. 优化页面加载速度3. 减少 setData 调用4. 使用分包加载 代码优化 1. 减少不必要的代码2. 使用条件编译3. 优化图片资源 用户体验优化 1. 优化交互体验2. 预加载数据3. 使用骨架屏 调试与监控 1. …

ESP32S3N16R8驱动ST7701S屏幕(vscode+PlatfoemIO)

1.开发板配置 本人开发板使用ESP32S3-wroom1-n16r8最小系统板 由于基于vscode与PlatformIO框架开发&#xff0c;无espidf框架&#xff0c;因此无法直接烧录程序&#xff0c;配置开发板参数如下&#xff1a; 在platformio.ini文件中&#xff0c;配置使用esp32-s3-devkitc-1开发…

ASP.NET 微服务网关 Ocelot+Consul+Skywalking

ASP.NET 微服务网关 OcelotConsulSkywalking APIGateWaySample简介网关相关技术核心其它 请求处理流程环境搭建代码运行效果图 APIGateWaySample Ocelot Consul Skywalking 简介 系统设计图 网关 API网关&#xff08;Gateway&#xff09;是一个服务器&#xff0c;是系统…

频谱分析仪的使用

频谱分析仪设置带宽的方式&#xff1a; 可以利用同轴线缆来制作近场探头&#xff1a; 区别dB和dBm两个单位&#xff1a; 无线电波的发射功率是指在给定频段范围内的能量&#xff0c;通常有两种衡量 或测量标准&#xff1a;   1、功率&#xff08;W&#xff09;&#xff1a;相…

【数据分析】转录组基因表达的KEGG通路富集分析教程

禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍差异分析(limma)KEGG富集分析(enrichKEGG)可视化加载R包数据下载导入数据基因差异分析火山图KEGG通路富集分析可视化通路结果另一个案例总结系统信息参考介绍 KEGG富集分析,可…

关于sqlalchemy的使用

关于sqlalchemy的使用 说明一、sqlachemy总体使用思路二、安装与创建库、连结库三、创建表、增加数据四、查询记录五、更新或删除六、关联表定义 说明 本教程所需软件及库python3.10、sqlalchemy安装与创建库、连结库创建表、增加数据查询记录 一、sqlachemy总体使用思路 在…

在 IntelliJ IDEA 中使用 JUnit 进行单元测试

1. 介绍 JUnit JUnit 是 Java 语言中最流行的单元测试框架之一。它基于 xUnit 设计模式&#xff0c;支持 测试自动化、断言&#xff08;Assertions&#xff09;和测试生命周期管理&#xff0c;是 Java 开发中进行 TDD&#xff08;测试驱动开发&#xff09; 的重要工具。 JUni…

单片机的发展

一、引言 单片机自诞生以来&#xff0c;经历了四十多年的风风雨雨&#xff0c;从最初的工业控制逐步扩展到家电、通信、智能家居等各个领域。其发展过程就像是一场精彩的冒险&#xff0c;每一次技术的革新都像是在未知的海域中开辟新的航线。 二、单片机的发展历程 &#xff…

常见的博弈模型有哪些

常见的博弈模型有哪些 目录 常见的博弈模型有哪些**1. 重复博弈(Repeated Game)****2. 进化博弈论(Evolutionary Game Theory)****3. 机制设计(Mechanism Design)****4. 微分博弈(Differential Game)****5. 贝叶斯博弈(Bayesian Game)****6. 合作博弈(Cooperative G…

【MySQL-数据类型】数据类型分类+数值类型+文本、二进制类型+String类型

一、数据类型分类 二、数值类型 1.bit类型 测试环境ubuntu 基本语法&#xff1a; bit[(M)]&#xff1a;位字段类型&#xff0c;M表示每个值的位数&#xff0c;范围从1&#xff5e;64&#xff1b;如果M被忽略&#xff0c;默认为1举例&#xff1a; create table testBit(id i…

golang从入门到做牛马:第一篇-我与golang的缘分,go语言简介

还记得2018年的夏天,刚毕业的我不知道该做些什么,于是自学了一周的go语言,想要找一份go语言工作的代码,当时的go还没有go mod来管理依赖包,在北京找了一个月的工作,找到了一个小公司做了后端开发,当然使用go语言开发,带着兴奋劲,年轻身体也好,边努力学习,边工作。 时…

【数据库】MySQL常见聚合查询详解

在数据库操作中&#xff0c;聚合查询是非常重要的一部分。通过聚合查询&#xff0c;我们可以对数据进行汇总、统计和分析。MySQL提供了丰富的聚合函数来满足不同的需求。本文将详细介绍MySQL中常见的40个聚合函数及其使用场景&#xff0c;并通过8个的案例展示它们的用法。 一、…

调研:如何实现智能分析助手(Agent)(AutoCoder、FastGPT、AutoGen、DataCopilot)

文章目录 调研&#xff1a;如何实现智能分析助手&#xff08;Agent&#xff09;&#xff08;AutoCoder、FastGPT、AutoGen、DataCopilot&#xff09;一、交互流程二、数据流程三、架构分类四、开源产品4.1 AutoCoder&#xff08;知识库变体&#xff09;4.2 FastGPT&#xff08;…

【Vue CLI脚手架开发】——6.scoped样式

文章目录 一、scoped是什么二、应用案例1.使用代码2.原理3父组件App未添加scoped影响 一、scoped是什么 我们知道vue为了防止css样式污染&#xff0c;在每个组件中提供了 scoped属性进行限定css作用域&#xff1b;当<style>标签有 scoped 属性时&#xff0c;它的 CSS 只…

高精算法的用法及其优势

高精度问题是指当数据的位数非常大&#xff08;超出标准数据类型的范围&#xff09;时&#xff0c;如何进行计算和存储的问题。常见场景包括大整数的加、减、乘、除、取模等操作。以下是解决高精度问题的常用方法与技巧&#xff1a; 一、数据存储 数组存储 用整型数组存储&am…

VM+CentOS虚拟机

关于VMCentOS虚拟机的配置和使用&#xff0c;可以参考以下博客中的详细教程&#xff1a; **一、VMCentOS虚拟机配置** 1. **虚拟机网络配置** - 在VMware中&#xff0c;点击“编辑”→“虚拟网络编辑器”&#xff0c;选择VMnet8并进行相关设置。 - 子网IP可以改成如192.168.1…

设置 CursorRules 规则

为什么要设置CursorRules&#xff1f; 设置 CursorRules 可以帮助优化代码生成和开发流程&#xff0c;提升工作效率。具体的好处包括&#xff1a; 1、自动化代码生成 &#xff1a;通过定义规则&#xff0c;Cursor 可以根据你的开发需求自动生成符合规定的代码模板&#xff0c…