我的创作纪念日三年收获和感悟

机缘

我刚开始接触创作也是最近几年开始,当初就是希望自己的收获分享给大家,不仅使自己成长,也可以带着大家一起成长,独乐乐不如众乐乐,人都是自私的以前我都是看到好的知识文章都是自己藏起来,发现收获的东西越来越多但是没法释放,后来朋友教导我学会分享,分享自己的收获,分享自己的所知所行,才会有越来越多的人与自己链接,爱才会发生。人们生活在一个自我中心的世界里,这会感觉到痛苦,因为人生中所有伟大的幸福只有当你不自私不贪婪,当你愿意分享时才会出现。
转眼间我的博客已经有九年时间里,九年前我还是对我的很模糊,感觉人生没有方向迷茫,不知道自己该干什么,不知道自己想要啥,对自己的未来毫无规划,那时候还在写着生活的笔记,翻看八九年前的过往笔记,看到那时候自己胡思乱想的样子可真可爱啊,有的时候就是我们勤于思索,我们人生就会充满太多的疑惑,我们甚至难以走出而迷茫,所以不要焦虑过好当下才是最重要的。

请添加图片描述

实战项目中的经验分享

在学习vue做项目中我也是看见一堆代码一脸懵,学习最快的方式就是实践,根据官网多写几个例子是掌握vue最快的方式,接下来我就总结开发vue项目的一些实践经验

  1. vue生命周期的应用
    请添加图片描述

以上是vue官网上的生命周期的方法,大致划分一下分为创建前/后,挂载前/后,更新前/后,销毁前/后这四个阶段。各个阶段的状态总结如下:

beforeCreate: 在beforeCreate生命周期执行时,data和methods中的数据还未初始化,所以此时不能使用data中的数据和methods中的方法
created: data 和 methods初始化完毕,此时可以使用methods 中的方法和data 中的数据
beforeMount: template模版已经编译好,但还未挂载到页面,此时页面还是上一个状态
mounted: 此时Vue实例初始化完成了,DOM挂载完毕,可以直接操作dom或者使用第三发dom库
beforeUpdate: 此时data已更新,但还未同步页面
updated: data和页面都已经更新完成
beforeDestory: Vue实例进入销毁阶段,但所有的 data 和 methods ,指令, 过滤器等都处于可用状态
destroyed: 此时组件已经被销毁,data,methods等都不可用

1.2 vue常用修饰符及作用:

  1. 事件修饰符
  • stop 阻止事件冒泡
  • .prevent 阻止事件默认行为
  • .self 事件绑定的元素本身触发时才触发回调
  • .once 事件只能触发一次,第二次就不会触发了
  • .native 将一个vue组件变成一个普通的html,使其可以监听click等原生事件,具体使用如下:
<button @click.native="handleClick">ok</button>
  1. 表单修饰符
  • .lazy 在输入框输入完内容,光标离开时才更新试图
  • .trim 过滤首尾空格
  • .number 如果想输入数字,那它就会限制你输入的只能是数字,那就相当于没有加.number
<input type="text" v-model.trim="value">
  1. vuex的几种属性和作用,以及使用vuex的基本模式

state的改变完全由mutations控制, 我们也没必要任何项目都使用vuex,对于中大型复杂项目而言,需要共享的状态很多时,使用vuex才是最佳的选择。接下来我将详细介绍各api的概念和作用。

  • state 单一状态树,用一个对象就包含了全部的应用层级状态,并且作为一个唯一数据源而存在
  • getters 就像计算属性一样,getter 的返回值会根据它的依赖被缓存起来,且只有当它的依赖值发生了改变才会被重新计算 比如如下案例:
  • Mutation 更改 Vuex 的 store 中的状态的唯一方法,使用案例如下:
const store = new Vuex.Store({
  state: {
    num: 1
  },
  mutations: {
    add (state) {
      // 变更状态
      state.num++
    }
  }
})

// 在项目中使用mutation
store.commit('add')
// 添加额外参数
store.commit('add', 10)
  • Action Action 提交的是mutation,而不是直接变更状态,可以包含任意异步操作,具体用法如下:
const store = new Vuex.Store({
  state: {
    num: 0
  },
  mutations: {
    add (state) {
      state.num++
    }
  },
  actions: {
    add (context) {
      context.commit('add')
    },
    asyncAdd ({ commit }) {
    setTimeout(() => {
      commit('add')
    }
  }
})
// 分发action
store.dispatch('add')
// 异步action
store.dispatch('asyncAdd')
// 异步传参
store.dispatch('asyncAdd', { num: 10 })
  • Moudule 将store分割成模块(module)。每个模块拥有自已的state、mutation、action、getter、甚至是嵌套子模块;

对宏任务和微任务的理解
JS的整个执行过程,我们称为事件循环过程,这个过程中涉及执行栈和两个任务队列:宏任务、微任务。

宏任务包括:

1、script整体代码

2、setTimeout、setInterval

3、node环境的setImmediate

4、输入输出和UI render

微任务包括:

1、node环境的process.nextTick

2、Promise的回调函数

3、MutationObserver的回调

4、await后面的代码

执行过程:执行宏任务,执行该宏任务产生的微任务,微任务执行完毕后,再回到宏任务中进行下一轮循环。

解决过的代码


setTimeout(function() {
    console.log(1)
});
new Promise(resolve = >{
    resolve();
}).then(() = >{
    new Promise(resolve = >{
        resolve();
    }).then(() = >{
        console.log(2);
    }).then(() = >{
        console.log(3);
    });
}).then(() = >{
    new Promise((resolve = >{
        resolve()
    })).then(() = >{
        new Promise((resolve) = >{
            resolve()
        }).then(() = >{
            console.log(4)
        }).then(() = >{
            console.log(5)
        })
    }).then(() = >{
        console.log(6);
    })
}).then(() = >{
    console.log(7);
}) setTimeout(function() {
    console.log(8)
});

// 错误2 3 4 5  6 7 1 8
// 正确2、3、7、4、6、5、1、8

日常

平时利用闲暇时间进行创作,其实写作最难的就是持续创作了,或者是懒惰,或者是拖延,或者是遇到了瓶颈,最终成功与否很大程度在与是否坚持,坚持才是最困难的,要努力克服💪

收获

随着我越来越勤奋的发布文章,我收获的赞和粉丝也随之增长,访问也快超过十万多 有下班的时候都看见99+支持我的作品的人越来越多确实令我挺开心愉快的,我也会更加努力,感谢粉丝对我的支持和一路的陪伴。
在这里插入图片描述
请添加图片描述

在这一年里遇见认识了技术大牛:大数据梦想家,是我很敬佩的一个人,一起交谈学习了很多东西也认识看到了自己的那个我,也更加接纳自己,使自己也更加豁然开朗,把自己的能量转变为更积极的行为。
请添加图片描述


我希望在新的一年里更加热爱开发,更加热爱创作,努力成为更好的自己,通过不断的学习,找到自己的方向,是继续朝着技术方向走,还是向管理方向发展,还要看自己情况来走。最终还是保持热爱不断的向前进步。

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

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

相关文章

python类的初始化

问题描述 存在这样的两个类&#xff0c;都在同一个模块a.py内 class YamlGlobal:with open(get_project_path() "/cfg/global.yaml", r, encodingutf-8) as f:glVar yaml.load(f, Loaderyaml.SafeLoader)......class DatabaseGlobal:itd InstanceDao(SQLAlchemy…

qml的操作 -- VS2022开发qml,

在使用VS开发软件的时候一般大型软件都会使用模组的方式。每个模组之间独立开发&#xff0c;关于qml写的UI模组也不例外&#xff0c;如果所有的qml都挤在一个文件夹下也不利于管理&#xff0c;维护起来也比较吃力。比较好的管理方法就是按照功能分布存放在不同的文件夹下。还有…

性能分析与调优: Linux 使用ELRepo升级CentOS内核

目录 一、实验 1.环境 2.agent 服务器使用ELRepo升级CentOS内核 二、问题 1. RHEL-7, SL-7 或者 CentOS-7系统如何安装ELRepo 2.RHEL-8或者RHEL-9系统如何安装ELRepo 一、实验 1.环境 &#xff08;1&#xff09;主机 表1-1 主机 主机架构组件IP备注prometheus 监测 系…

Python中的装饰器

顾名思义&#xff0c;函数装饰器就是对这个函数进行了装饰&#xff0c;比如在函数的前后进行日志打印等。在Python中&#xff0c;装饰器是一种特殊的语法&#xff0c;用于简化函数或方法的定义和调用。装饰器允许你在不修改原始函数代码的情况下&#xff0c;通过在其上应用装饰…

Java Swing手搓童年坦克大战游戏(II)

文章目录 0.初衷1.创建游戏窗口2.创建坦克3.实现坦克移动和发射炮弹4.创建地图4.1关于地图瓦片的尺寸遇到的问题 5.坦克与障碍物的碰撞处理5.1碰撞检测5.2坦克与地图中的瓦片碰撞5.3坦克相互碰撞5.4坦克碰见炮弹5.5坦克拐弯 6.道具6.1星星6.2炸弹6.3钟表6.4城堡6.5坦克6.6无敌圈…

React 实现拖放功能

介绍 本篇文章将会使用react实现简单拖放功能。 样例 布局拖放 LayoutResize.js import React, {useState} from "react"; import { Button } from "antd"; import "./LayoutResize.css";export const LayoutResize () > {const [state,…

canvas 实心文字设置(含最大宽度)的示例

查看专栏目录 canvas示例教程100专栏&#xff0c;提供canvas的基础知识&#xff0c;高级动画&#xff0c;相关应用扩展等信息。canvas作为html的一部分&#xff0c;是图像图标地图可视化的一个重要的基础&#xff0c;学好了canvas&#xff0c;在其他的一些应用上将会起到非常重…

【Docker】docker 服务相关命令

目录 1. 启动docker 服务 2.查看docker 服务的状态 3. 停止docker 服务 4.重启 docker 服务 5.开机自启动命令 1. 启动docker 服务 systemctl start docker 2.查看docker 服务的状态 systemctl status docker 3. 停止docker 服务 systemctl stop docker 此时再使用 syst…

RDD入门——RDD 代码

创建RDD 程序入口 SparkContext val conf new SparkConf().setMaster("local[2]").setAppName(spark_context") val sc: SparkContext new SparkContext(conf) SparkContext 是 spark-core 的入口组件&#xff0c;是一个 Spark 程序的入口&#xff0c;在 Sp…

BRF文件数据结构

一.BRF-文件头数据结构 type_mesh "mesh" 网格 type_material "material" 材质struct brf_header{int type_length; //4个字节, type字符串对应长度char* type_name; //根据type_length获取int type_content_num; //4个字节,对应类型所含个数,例如含有模…

数据分析——火车信息

任务目标 任务 1、整理火车发车信息数据&#xff0c;结果的表格形式为&#xff1a; 2、并输出最终的发车信息表 难点 1、多文件 一个文件夹&#xff0c;多个月的发车信息&#xff0c;一个excel&#xff0c;放一天的发车情况 2、数据表的格式特殊 如何分析表是一个难点 数…

UnityVR入门之六 如何让3DUI层级在场景模型之上

一、问题来源 根据 UnityVR入门之五 射线检测交互-CSDN博客 这一章节我们了解到VR要与UI交互需要将Canvas设置为World Space属性&#xff0c;然后使用碰撞盒的方式进行射线交互。 正常我们ui是始终叠加在3d场景之上的&#xff0c;如此设置当ui与场景模型相交就会遮挡穿模 二、解…

git常用命令及概念对比

查看日志 git config --list 查看git的配置 git status 查看暂存区和工作区的变化内容&#xff08;查看工作区和暂存区有哪些修改&#xff09; git log 查看当前分支的commit 记录 git log -p commitID详细查看commitID的具体内容 git log -L :funcName:fileName 查看file…

el-form点击提交后把验证失败的数据传给了后端

问题&#xff1a;版本号需要根据后端返回的结果查看是否可用&#xff0c;在这里1.0.0是不可用的&#xff0c;如果点击其他地方则会报红&#xff0c;可是直接点击提交&#xff0c;则会把1.0.0这个错误的数据也提交给后端。 解决方案&#xff1a; html代码&#xff1a; <el…

Flume基础知识(十):Flume 聚合实战

1&#xff09;案例需求&#xff1a; hadoop100上的 Flume-1 监控文件/opt/module/group.log&#xff0c; hadoop101上的 Flume-2 监控某一个端口的数据流&#xff0c; Flume-1 与 Flume-2 将数据发送给 hadoop102 上的 Flume-3&#xff0c;Flume-3 将最终数据打印 到控制台。…

【Pytorch】学习记录分享11——GAN对抗生成网络

PyTorch GAN对抗生成网络 0. 工程实现1. GAN对抗生成网络结构2. GAN 构造损失函数&#xff08;LOSS&#xff09;3. GAN对抗生成网络核心逻辑3.1 参数加载&#xff1a;3.2 生成器&#xff1a;3.3 判别器&#xff1a; 0. 工程实现 原理解析&#xff1a; 论文解析&#xff1a;GAN…

综合跨平台全端ui自动化测试框架Airtest——AirtestIDE录制微信小程序脚本教学

前言 有在自动化测试领域的小伙伴应该都知道&#xff0c;app和小程序自动化这一类的自动化测试在实际操作中有时候很棘手让人心烦&#xff0c;动不动就是用appium写代码脚本维护什么的&#xff0c;不仅步骤繁琐&#xff0c;环境配置方面也是繁琐无比&#xff0c;动不动就与客户…

云计算:OpenStack 分布式架构管理VXLAN网络(单控制节点与多计算节点)

目录 一、实验 1.环境 2.各节点新增网卡准备VXLAN网络 3.控制节点配置私有网络 4.计算节点1配置私有网络 5.计算节点2配置私有网络 6.重启服务 7.修改Dashboard 8.新建项目&#xff08;租户&#xff09;及用户 9.新建网络与子网 10.新建实例 11.新建路由 12.新增浮…

【机器学习】循环神经网络(二)-LSTM示例(keras)国际航空乘客问题的回归问题...

使用 Keras 在 Python 中使用 LSTM 循环神经网络进行时间序列预测 国际航空乘客问题的回归问题 这个文件是一个CSV格式的数据集&#xff0c;它包含了从1949年1月到1960年12月的每个月的国际航空乘客的总数&#xff08;以千为单位&#xff09;。第一行是列名&#xff0c;分别是&…

贯穿设计模式-享元模式思考

写享元模式的时候&#xff0c;会想使用ConcurrentHashMap来保证并发&#xff0c;没有使用双重锁会不会有问题&#xff1f;但是在synchronize代码块里面需要尽量避免throw异常&#xff0c;希望有经验的同学能够给出解答&#xff1f; 1月6号补充&#xff1a;没有使用双重锁会有问…