自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(54)
  • 收藏
  • 关注

原创 Vue-Safari浏览器请求“尝试载入资源时发生错误”

【代码】Vue-Safari浏览器请求“尝试载入资源时发生错误”

2023-05-31 17:11:24 661

原创 Node-解决sequelize配置时区,差8小时问题

解决sequelize配置时区,差8小时问题

2023-04-17 17:01:32 664 1

原创 vue3-getActivePinia was called with no active Pinia. Did you forget to install pinia?

getActivePinia was called with no active Pinia. Did you forget to install pinia?

2022-07-10 18:07:44 13729 3

原创 Vue-$set内部实现浅析

结合官网及源码浅析Vue.set/$set使用场景及内部实现

2022-06-08 17:53:46 217

原创 Vue-自定义tab组件v-model

v-modelv-model 是 vue 里面的一个指令,一般可以用在 input 标签上,来做数据的双向绑定示例:<input v-model="text">// v-model其实就是下面的语法糖<input :value="text" @input="text = $event.target.value">我们再来看看官网的示例props: ['value'],render: function (createElement) { var self = th

2022-03-21 12:27:46 1524

原创 js-Promise的all、allSettled、any、race 方法简介

1、all所有的Promise对象均成功后才会执行all中的then回调,否则返回的是最先rejected状态的值。const promise1 = new Promise((resolve, reject) => { setTimeout(() => { resolve('promise1'); }, 1000);})const promise2 = new Promise((resolve, reject) => { setTimeout

2022-01-27 17:32:08 3055

原创 css-伪类与伪元素

1、伪类伪类用于定义元素的特殊状态。状态是动态变化的,所以一个元素达到一个特定状态时,它可能得到一个伪类的样式;例如,鼠标悬停在元素上时的样式:link应用于未访问的链接:vistited应用于已经被访问过的链接:hover应用于鼠标悬停于其上的元素:active应用于被激活的元素:x-child:first-child:last-child:nth-child(n)…2、伪元素伪元素用于设置元素指定部分的样式。例如设置元素的首字母、首行的样式、在元素的内容之前或之后插入

2021-12-06 20:45:45 167

原创 Vue-使用svg-icon

1、svgsvg是一种可缩放矢量图形:改变尺寸的情况下其图形质量不会有损失可自定义填充颜色2、创建svg-icon组件3、引用svg文件4、配置5、使用svg-icon

2021-10-19 10:41:47 906

原创 Vue-移动端rem适配

1、rem使用 rem 单位可以让设计更加灵活,能够控制元素整体放大缩小,而不是固定大小。rem单位基于 html 元素字体大小,2、适配工具lib-flexiblepostcss-px2rem-exclude3、lib-flexible安装lib-flexible:npm install lib-flexible --save入口main.ts文件中引入lib-flexible:import ‘lib-flexible’到此,我们已经算是完成移动端适配了;我们先来看看lib-fl

2021-09-17 17:35:32 1347 1

原创 js-el-table ResizeObserver loop limit exceeded解决办法

这个错误我是通过VConsole插件发现的,在浏览器中并没有报错在网上也搜索了不少答案,可以确定是问题出在el-table组件上,但是网上解决办法,大多数都是说宽度问题导致,但是我总感觉我的问题不是出在这里(主要是方法太繁琐了)于是乎我从代码梳理,我的代码里表格进行了多次复用,每次的列数据都是不同的,这个时候我就感觉是不是复用这一块出了问题,于是乎我在el-table组件上增加了唯一key,结果居然真的解决了这个问题总结:通过给el-table增加唯一key,解决该问题;如果遇到同样问题可以先试试增加

2021-07-27 17:25:53 1059

原创 Vue-个人博客项目

主要出于学习目的开发本项目,采用Vue3 + webpack + ts技术栈1、思维导图2、简介项目主要包含首页、案例、技术、关于四大模块;底部导航则直接跳转到关于页面首页包含案例中前三个数据、技术中前三个数据、案例该模块的案例皆是个人或者参与开发的项目技术技术方面涉及到原生iOS、前端、小程序;项目里则直接跳转到csdn博客关于主要是个人的简历介绍,包括工作经历等...

2021-07-15 19:05:29 1050

原创 Vue-手写Vuex

1、Vuex引入Vueximport Vuex from 'vuex'Vue.use(Vuex)使用// store/index.jsexport default new Vuex.Store({ state: { // 版本 version: 'v1' }, getters: { version: state => state.version }, actions: { setVersion({ commit, state }

2021-06-26 17:54:35 152

原创 小程序-趣生活项目

1、脑图2、功能本项目结合云开发技术进行后台开发,所以不涉及后台技术问题;主要分为视频、首页、发布、我的四个大模块组成;短视频采用官网提供的video-swiper组件进行实现,视频数据来源于抖音、全民等网站,可自行网上查找抓包方法首页包含顶部轮播图、话题、广场、文章荟模块;话题模块是包含了发布时带有该话题的所有动态;广场是所有动态的展示;文章部分目前没有编辑功能,只能通过云开发传入数据,目前支持markdown文件解析发布支持纯文本/图文形式内容,并可以选择话题进行发布,发布后

2021-06-21 21:27:21 121

原创 js-手写Promise

1、Promise创建MyPromise.js文件,在里面进行MyPromise逻辑处理我们先看原生Promise的使用:new Promise((resolve,reject) => { })有代码可以看出:原生Promise通过new创建Promise对象,然后传入两个函数resolve、reject参数用于后续执行;好的,那我们从这方面开始手写MyPromise。首先,需要通过new创建对象,那就需要在内部实现构造函数其次构造函数需要传入两个函数作为执行者Pormi

2021-06-12 23:06:23 974

原创 js-call、apply、bind函数

1、示例var zs = { name: "张三", say: function (gender, age) { console.log(this.name + ',' + gender + ',' + age); }}var ls = { name: "李四",}2、释义call接收多个参数,第一个参数为函数上下文this,后边参数为函数本身的参数。// 示例:zs.say.call(ls, "男", "16"); // "李四,男,16"apply

2021-05-17 15:05:19 92

原创 js-闭包的应用

注意⚠️:后续组件用ZT统一开头组件使用场景优化点ZTGoodContainer页面通用业务框架嵌入了移动驾驶舱业务场景,仅限移动驾驶舱ZTContainer页面通用框架区域及日期仍需从外部传入,代码冗余仍存在,没有做到很好的集成ZTModule页面模块通用模版:包括标题、副标题、数据冒泡说明;slot填充业务内容–ZTSectionMenuTab选项卡:现已不单独使用早期使用,后续不再使用,ZTTabModule替代ZTScrollspyTa

2021-05-13 19:53:31 130

原创 js-闭包

1、释义闭包(closure)就是能够读取其他函数内部变量的函数。由于在Javascript语言中,只有函数内部的子函数才能读取局部变量,因此可以把闭包简单理解成定义在一个函数内部的函数。所以在本质上,闭包就是将函数内部和函数外部连接起来的一座桥梁。2、示例var globalfunction f1() { function f2() { console.log(v1) var v2 = 999 v1 = 111 } var

2021-05-08 15:20:54 105

原创 Vue-浅拷贝与深拷贝

1、释义浅拷贝:创建一个新对象,这个对象有着原始对象属性值的精确拷贝;如果是基础类型拷贝的就是基础类型的值,如果是引用类型拷贝的就是内存地址;如果其中一个对象改变了这个地址就会影响另一个对象深拷贝:将一个对象从内存中完整的拷贝一份出来,从堆内存中开辟一个新的区域存放新的对象,改变对象不会影响原对象2、示例浅拷贝基础类型var a = 1var b = ab = 2console.log(a,b)// 1 2改变不会使原始数据改变引用类型var per = {name

2021-04-21 17:12:31 2344 1

原创 Vue-生命周期及组件间生命周期顺序

1、Vue生命周期官网生命周期图镇场源码可见:src/core/instance/init.jsVue2状态操作beforeCreate实例初始化之后完全创建之前,this指向创建的实例,不能访问到data、methods等上的方法和数据都没初始化初始化非响应式变量(一般用不到)created实例完全创建,可访问data、methods等上的方法和数据,但是未挂载到DOM,不能访问到el属性,ref属性内容为空数组获取不操作dom的数据(一般用不到,不建议这里做获

2021-04-18 14:21:47 356

原创 Vue-源码解析key的作用

1、key的作用我们可以在Vue官方看到key的定义和作用:key的特殊 attribute 主要用在 Vue 的虚拟 DOM 算法,在新旧 nodes 对比时辨识 VNodes。如果不使用 key,Vue 会使用一种最大限度减少动态元素并且尽可能的尝试就地修改/复用相同类型元素的算法。而使用 key 时,它会基于 key 的变化重新排列元素顺序,并且会移除 key 不存在的元素。有相同父元素的子元素必须有独特的 key。重复的 key 会造成渲染错误。最常见的用例是结合 v-for:<ul

2021-04-11 18:26:37 478

原创 Vue-源码解析组件的data属性为什么必须是函数

1、示例首先我们先看看如果把组件的data设置成非函数是啥效果代码如下:// Home.vue<template> <div class="home"> <HelloWorld /> </div></template><script>import HelloWorld from "@/components/HelloWorld.vue";import { mapGetters, mapActions }

2021-04-09 09:10:40 129

原创 Vue-源码解析v-for 和 v-if优先级

1、源码解析当v-for 和 v-if在同一级使用时,系统会报错This 'v-if' should be moved to the wrapper element,因为当它们处于同一节点,v-for的优先级比v-if更高。这种情况时,for循环还是会走下去。下面我们先从渲染函数再到源码进行分析:const VueTemplateCompiler = require('vue-template-compiler')const template = '<div v-for="item in 3"

2021-03-28 19:57:11 884

原创 Vue-源码解析v-if 和 v-show

1、共同点皆可动态控制DOM元素的显示与隐藏2、区别v-if动态的向DOM树内添加或者删除DOM元素真正的条件渲染,它会确保在切换过程中条件块内的事件监听器和子组件适当地被销毁和重建;在初始渲染条件为假时,什么也不做。由于存在销毁和重建,具有更高的切换消耗v-show通过设置DOM元素的display样式属性控制显示和隐藏不管初始条件是什么,元素总是会被渲染,只是简单地基于 CSS 进行切换。由于总是会被渲染,所以初始时有更高的渲染消耗3、原理剖析v-ifconst Vue

2021-03-28 18:41:39 818

原创 iOS-加密算法

一、散列算法(签名算法/摘要)散列算法,又称哈希函数,是一种单向加密算法。在信息安全技术中,经常需要验证消息的完整性,散列(Hash)函数提供了这一服务,它对不同长度的输入消息,产生固定长度的输出。因为其结果是不可逆的,既然是不可逆的,那么当然不是用来加密的,而是签名。MD5不可逆:MD5是不可逆转的。压缩性:任意长度的数据,算出的MD5值长度都是固定的。容易计算:从原数据计算出MD5值很容易。抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别。强抗碰撞:已知原

2020-09-05 11:03:38 2830 2

原创 iOS-runtime应用场景

1、私有变量当我们需要访问一个.m中的私有属性的时候,需要通过class_getInstanceVariable和object_getIvar来获取我们想要的属性;object_setIvar 来更改私有属性。- (void)viewDidLoad { [super viewDidLoad]; Person *person = [[Person alloc] init]; NSLog(@"%@", person.p_description); // 获取所有属

2020-08-27 17:40:21 142

原创 iOS-runtime初识

一、runtime简介Objective-C是一种动态语言,其中最主要的是消息机制。理解 Objective-C 的 runtime 机制可以适当的时候对语言进行扩展,从系统层面解决项目中的一些设计或技术问题。Objective-C中一切皆对象,我们知道一个类被初始化成一个实例,这个实例是一个对象。实际上一个类本质上也是一个对象,在runtime中用结构体表示。二、runtime详解Objective-C中有这样几个文件,这里主要介绍runtime.h和message.h这两个文件中的相关方法

2020-08-23 14:34:07 95

原创 iOS-GCD的理解与使用

一、任务和队列任务:在线程中执行的操作;执行任务有两种方式:同步执行 和 异步执行:同步执行:同步添加任务到队列中,前一个任务没有执行完,后面不能执行。不开辟新线程异步执行:异步添加任务到队列中,任务同一时间可以一起执行。开启多个新线程队列:队列是一种特殊的线性表,采用 FIFO(先进先出)的原则;GCD中有两种队列:串行队列和并发队列:串行队列:每次只有一个任务被执行,让任务一个接着一个地执行并发队列:可以让多个任务并发(同时)执行二、队列和任务的创建1、队列使用dispatc

2020-08-13 18:02:23 177

原创 iOS-组件化开发:路由设计

一、为什么需要路由首先我们应该清楚为什么要组件化开发,它将复杂项目拆分出各个模块,有助于多人大型团队的协同开发。在这里各个模块可以看作是一个独立的app,但随着业务的发展,系统变得越来越复杂,项目内各模块之间耦合严重, 这对代码质量,以及开发效率都会造成很大的影响。为了解决这个问题,路由这个东西就应运而生了;它主要是做啥呢,其实就相当于各个模块之间的中转处理,不用各个模块之间直接调用了。这样才是真正意义上的组件化。二、路由设计先上路由设计图1、路由大量应用于前端页面,通过把一个 URL 与一

2020-06-07 17:49:19 720

原创 iOS-组件化开发:创建私有库

创建私有库之前需要集成cocoapods包管理,这里不做赘述了。一、本地私有库1、为了方便说明,我将从已有项目ModuleProject入手,将项目中A、B和网络请求模块抽离出来2、项目同级目录下新建“Lib”文件夹用于放置私有库文件,cd到Lib目录下,使用pod lib create PQNetwork创建本地私有库创建完成后生成项目并自动打开xcode工程3、将ModuleProject -> PQNetwork文件夹文件复制到刚才创建的私有库项目中,要注意路径4、cd到Exa

2020-05-19 22:20:48 466

原创 iOS-链式编程

链式编程听起来就有种高大上的感觉让人望而却步,但在日常开发中基本都会和它打上交道,典型的例子就是开发布局框架Masonry的语法结构make.top.bottom.left.right.equalTo(10).offset(10);类似于这种通过点语法,将代码块像链子一样串联起来,就是链式编程,这样的代码是不是看起来更清晰,写起来更方便了啊下面我们跟随Masonry的源码来了解怎么实现...

2020-05-01 22:23:10 522

原创 iOS-自定义KVO

在之前的KVO实现原理中知道,KVO会动态创建子类NSKVONotifying_XXX,今天我们由此着手自己实现KVO1、创建NSObject+MyKVO分类@interface NSObject (MyKVO)-(void)my_addObserver:(NSObject *)observer forKeyPath:(NSString *)keyPath options:(NSKeyVa...

2020-04-19 15:34:39 280

原创 iOS-KVO基础使用以及实现原理

一、定义KVO全称KeyValueObserving,俗称键值监听,可以用于监听某个对象属性值的改变。由于KVO的实现机制,所以对属性才会发生作用,一般继承自NSObject的对象都默认支持KVO。二、使用场景监听属性值变化KVO主要用来做键值观察操作,想要一个值发生改变后通知另一个对象,则用KVO实现最为合适三、基础使用新建Person// Person.h@interfac...

2020-04-16 09:49:35 358

原创 iOS-KVC调用顺序以及实现原理

一、定义KVC(Key-value coding)键值编码,对NSObjcet的扩展,开发者通过Key名直接访问对象的属性,或者给对象的属性赋值。而不需要调用明确的存取方法。二、主要使用场景1.动态地设值和取值可以在运行时动态地访问和修改对象的属性;例如进行json转model操作时,可以使用runtime来获取成员变量,并利用KVC进行修改。2.访问和修改私有变量当我们需要访问和...

2020-04-14 14:56:22 389

原创 iOS-WKWebview高度问题

WKWebview获取高度问题-底部空白1.注入js代码// 提取html文件中所有图片标签,修改宽度为屏幕宽度,高度自适应 let js = "function resetImages () {" + "var imgstyle=document.getElementsByTagName('img');" + "for(var...

2019-05-15 10:06:40 1478

原创 swift-UIImagePickerController取消不灵敏

if #available(iOS 11.0, *) { let name = "PUPhotoPickerHostViewController" let namespace = Bundle.main.infoDictionary!["CFBundleExecutable"] as! Strin...

2019-04-26 14:01:07 359

原创 iOS开发-xib创建控制器 frame 一直是600

这个问题是在上线后才发现的(boss发现的这个bug,心里慌得一逼),目前是在iOS10系统上出现这个问题;使用xib创建ViewController,初始化的时候发现界面完全超出手机屏幕范围,debug后发现ViewController宽高一直是 600,最终耗时半天终于google到类似问题,需要将xib中的一个Size属性设置为 Freeform...

2018-10-09 14:25:47 339

原创 小程序开发-Now you can provide attr "wx:key" for a "wx:for" to improve performance

当我们开发微信小程序用到"wx:for"时可能会在控制台报"Now you can provide attr "wx:key" for a "wx:for" to improve performance"警告不要慌张这只是警告不妨碍运行,消除警告只需要在"wx:for"后面添加wx:key="xxx"就行了...

2018-03-16 22:47:37 26839

转载 iOS开发-一篇博客让你精通Autolayout适配

在网上看了无数篇博客,终于在这篇博客中让我彻底了解使用Autolayout适配屏幕,内容相当简单,怪我太笨。。。在此奉上链接http://blog.csdn.net/yuanxiangg/article/details/47951441

2017-04-06 10:37:12 309

转载 iOS开发-protocol buffer的使用

其实protocol buffer(简称PB)在iOS中用到的还是比较少的,但是为什么我还要介绍呢,因为相对于json来说,PB更能节省流量而且会自动创建Model文件,这就少敲了不少代码啊;闲话不多说,上两篇博客以供大家学习1、http://www.jianshu.com/p/8c6c009bc5002、http://blog.csdn.net/leihaoyude/article/

2016-12-05 15:47:08 305

转载 iOS开发-app国际化

这是我觉得写得比较简单易懂的两篇博客:http://blog.csdn.net/xwren362922604/article/details/17190061(这个容易)http://www.cnblogs.com/tangbinblog/p/3972318.html

2016-12-05 15:45:09 209

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除