自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(20)
  • 资源 (1)
  • 收藏
  • 关注

原创 微信机器人开发

最近在搞微信机器人的东西,想必很多人都听过,那些有女朋友的程序员有的也会给自己女朋友定制一个微信机器人,给机器人接上一些有趣的接口,啥土味情话,天气预报就都上来了,确实很有趣,就找了时间研究一下。上面提到的那些木偶版本目前来说都是能用的,根据需求而定吧。底层的逻辑我觉得才是最值得注意的地方,web版的木偶是直接调用微信接口完成各类动作的,pc版本的木偶是通过往微信里面挂一个dll直接调用微信的方法去实现的。

2022-09-16 11:03:34 4207 1

原创 深扒JS事件循环机制

js是一个单线程的语言,这源于Brendan Eich在发明js的时候觉得一个浏览器的脚本语言不用弄得那么复杂,这位老哥只花了十天就弄出了javascript,我想他应该怎么也没想到js会红到这地步,今天就围绕单线程这个特性说一说Node的几个计时器还有事件循环机制。宏任务和微任务js既然是单线程,那么任务多起来的时候就必须排队,那么怎么排就是第一个问题。首先这里简单解释一下宏任务和微任务,之前看到有的文章说什么微任务会在宏任务执行前执行,纯粹的胡扯,宏任务和微任务的区别就好比你去银行排队办业务,柜台就

2022-03-10 16:11:29 138

原创 Vue源码解析-$mount

前言Vue实例是通过mount方法进行挂载的,上一篇说了new Vue这篇分析一下mount挂载方法。mount的定义在Vue源码中有多处,这是因为Vue需要适配不同的平台以及构建方式,本文这里主要分析一下带compiler的mount实现方式。找入口因为是需要适配不同平台,mount方法定义在src/platform/web/entry-runtime-with-compiler.js下,代码如下:const mount = Vue.prototype.$mountVue.prototype.$

2022-02-16 17:06:41 795

原创 Vue源码解析-new Vue都干了些啥

前言new Vue都干了些啥,估计很多面试都会问到,文章也看过,但是还是想自己扒扒源码看看究竟,因为之前看Vue代码用的都是2.x的,这次也跟着用2.6.11,vue3的留之后吧,现在真的有点卷不动了。解析Vue入口一般源码都是从index开始的,看源码的时候要一部分一部分地看,一次性想看完会极度难受,而且这是一件不可能的事,这篇文章就只分析一下new Vue。Vue的入口是在vue/src/core/index.js里,代码如下:import Vue from './instance/index'

2022-02-16 15:08:44 847

原创 Promise的一些细节问题

前言promise很多人都会用,但往往使用的时候有一些注意不到的细节问题,阮一峰大佬写的ES6入门教程其实已经很详细了,我看过很多遍,经常都会翻出来看;现在这篇博客就探讨一下文档上没有讲或者没有讲得特别清楚的地方以及容易误解的地方。reject了也还会走到then?then很多人在使用的时候会下意识地以为promise执行成功了resolve了之后才会走到then里面去,但很多人也都忽略了个细节,then方法接受两个参数,第一个参数是resolve之后的回调,而第二个参数则是reject之后的回调。大

2021-12-24 14:17:05 943

翻译 Node Redis文档

原文链接 Node RedisNode Redis安装npm i redis例子 const redis = require("redis"); const client = redis.createClient(); client.on("error", function(error) { console.error(error); }); client.set("key", "value", redis.print); client.get.

2021-04-12 18:45:21 1328

原创 webpack打包jq项目$ is not defined的问题

问题描述前段时间做个H5单页想着太简单就没上Vue这样的框架直接jq一把梭,然后在项目刚搭建环境时就出现了 $ is not defined的问题,经过一番检查,确认jq已经打包进项目且运行在业务代码之前,但是$就是没有挂载到window上,然后经过一番苦苦的寻找最后问题定位在了webpack上。原因分析本人使用的是webpack最新版本5.3.2,webpack-cli为4.2.0,因为我想要把jq单独打包成一个文件因此没有选择webpack.ProvidePlugin注入$的方法,而是把jq当成一

2021-01-26 15:23:36 1392

原创 js中数组各种遍历方法的区别

js中数组各种遍历方法的区别平时无论是使用数组还是对象,遍历都是一个很频繁的操作,在js中遍历数组或对象的方法有很多,在敲代码时有时会由于到底应该使用哪个,是不是使用哪个都一样?带着这样的疑惑,翻了一下文档,写了点代码测试一下,写篇博客记录一下。一些老生常谈的区别日常中常用的遍历方法大体有以下几种:for、forEach、for in、for of、map。1、for循环用于循环执行一定次数的代码块,是一个js语句而不是方法,很通用的一种遍历方法,既可以用来循环数组也可以用来循环类数组的数据结构。

2020-08-12 20:27:20 2439 1

原创 微信小程序Input组件聚焦问题兼容

微信小程序Input组件聚焦问题兼容前言最近小程序做得很频繁,无论是原生的还是使用跨端框架。然后一直以来都被小程序的Input组件搞得死去活来,最近在搞的小程序普遍都有表单,其中的Input清除内容以及聚焦弹起键盘的兼容坑得我死去活来,小程序的Input组件我愿称其为最坑组件,没有之一。需求先说一下要实现的需求,就是实现一个Input框的清除按钮,要求清除Input框内容并且在清除内容后自动弹起键盘,要求清除按钮只有在输入框聚焦且内容不为空时显示。需求很容易理解,且我一开始以为很简单。。。实现过程

2020-07-16 15:24:16 4484 3

原创 微信小程序接口鉴权请求异步问题

微信小程序接口鉴权异步问题前言与普通接口鉴权的区别网上一些方法的问题解决方案总结前言前段时间开始做一个新的小程序,因为某些原因,一进入小程序就需要wx.login拿code去调一次后端的登录接口拿一个token,之后几乎所有的接口都需要用到这个token作为参数去请求,这就有点类似于接口的鉴权,一开始我也确实是按照接口鉴权那种方式去做的,但在这其中发现了不少问题。与普通接口鉴权的区别通常情况下的接口鉴权,是有一个登录的过程的,这个登录过程是由用户自主触发的,但小程序里面的登录,由于小程序机制的问题,

2020-05-31 15:05:11 1422

原创 vm.$watch实现原理

vm.$watch实现原理前言用法原理小收获前言vm.$watch这个api在工作中用得还是比较少,应该多数人都会直接在组件内写watch,而不会直接调用这个api来对数据进行监听,大概看了下其源码,写篇博记录一下。用法之前也看过vue文档,但是有一些细节并没有看,现在回过头来发现文档上还是有不少有用的细节没有发现,先放一下$watch的用法参数:/** @param {string|Function} exOrFn * @param {Function|Object} callback*

2020-05-14 23:01:58 1506 2

原创 总线机制监听器与小程序全局异步数据共享

总线机制监听器与小程序全局异步数据共享前言总线机制监听器利用监听器实现异步数据共享总结前言最近一直在搞小程序,无论是原生还是使用跨端框架似乎有一个问题一直难以解决,那就是小程序全局的异步数据共享问题。假设一个场景,在app.js中获取定位信息,这一定是个异步操作,一般情况下这个定位信息也许会存在缓存中然后当某个页面需要使用时直接在缓存里面拿,但是问题是这个数据是异步获取的,不能够保证页面一定能获取到数据,如果这个异步的数据还会影响到页面上其他数据的请求那就更麻烦了,app.js里面的生命周期是一定比页面

2020-05-12 23:28:12 250

原创 Vue响应式实现原理

Vue响应式原理 (1)前言响应式原理收集依赖Vue感知数据变动的方式新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导...

2020-05-06 23:23:33 613

原创 前端实现各种文件下载

前言因为前段时间在做一个Excel文件下载功能需求的时候,绕来绕去弄了许久,现在空出时间来总结一下前端实现各种资源下载的方案,以作保存。使用a标签进行下载最简单的下载方式是用a标签进行下载,然后设定download为文件名,但是这种方法有一定的局限性,分两种情况,第一种:下载的文件本身在项目文件夹下一般设置了download属性都能够成功下载,当属于这种情况时,使用a标签是最简单方便的方式了...

2019-10-08 17:33:30 4858

原创 微信网页内使用canvas生成个性化海报

微信网页内使用canvas生成个性化海报前言需求解决方案1、使用html2canvas插件2、将微信头像转成base64再插进即将画成canvas的dom结构里面前言近期一直在做微信内H5页面,可能是由于自己的不熟悉,微信的jssdk文档一直在翻,几乎是变开发边学习微信的api,然后最近就被一个微信网页内生成一张个性化海报图片的效果给难住了,现虽然是解决了,但是这样的效果估计今后会用到很多,于...

2018-12-29 15:44:05 4804

原创 原型与原型链

原型与原型链构造函数基本知识扩展原型规则五个原型规则instanceof构造函数基本知识在一些典型的面向对象语言中,都存在着类的概念,类就是对象的模板,对象就是类的实例。但在js中不存在类的概念,js不是基于类,而是通过构造函数(constructor)和原型链(propotype chains)实现的。似乎在ES6中引入了类(class)的概念,作为对象的模板,由于本人对ES6的了解还不是...

2018-11-25 12:49:36 249

原创 移动端适配

移动端适配移动设备分辨率前言主流的移动端屏幕以及一些概念viewport视口手机的各种屏幕参数移动端适配rem适配方案vw单位适配移动设备分辨率前言一直以来,我都觉得前端要做移动端的适配都是比较麻烦的事情,现在花一点时间总结一下移动端适配的各种方案,这总结有可能不能很全面,希望以后陆续可以补充完整。主流的移动端屏幕以及一些概念viewport视口我们做前端移动适配的时候,三个视口的概念...

2018-11-04 21:16:12 30296

原创 微信小程序踩坑与填坑篇(一)

微信小程序踩坑与填坑篇(一)1、前言2、微信小程序适配坑1、前言学习微信小程序的路上可以说是一脚一个坑,由于微信小程序网上的资料比较少平时解决问题也只能看看官方社区,但是即便是官方社区资料还是少,所以打算自己总结一下,做一个填坑系列方便自己学习。2、微信小程序适配坑刚刚开始接触微信小程序的时候觉得微信团队还是猛啊,这个rpx单位好用得不行,直接设计图给多少直接写多少就行了,完全不用做适配。...

2018-10-28 17:50:44 4944

原创 微信小程序学习之路(一)

微信小程序学习之路(一)1、前言2、准备工作(1)、IDE的选择1、前言微信小程序所使用的是腾讯自己开发的MINA框架,MINA框架跟主流框架有很大的相似之处,是一个MVVM框架,很庆幸本人先前有学过一点点VUE所以入门MINA框架还算比较顺利,由于需要完全熟悉MINA框架我还需要学习很多,所以微信小程序学习之路篇打算一直写下去,用以督促自己的学习。2、准备工作(1)、IDE的选择对于编...

2018-10-28 15:11:40 325

原创 webpack学习之路—入门篇

webpack学习之路—入门篇1、什么是webpack?2、webpack的安装3、webpack的核心4、实例配置1、什么是webpack?首先是webpack对自己阐述:本质上,webpack 是一个现代 JavaScript 应用程序的静态模块打包器(module bundler)。当 webpack 处理应用程序时,它会递归地构建一个依赖关系图(dependency graph),其中...

2018-10-28 12:45:15 1016

小程序加密---crypto.js

用于小程序加密使用,其中包含了各种加密解密方法,在小程序环境中有一些内置对象是没有的,苦苦找了许多版本才找到一个小程序可用的版本

2020-11-13

空空如也

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

TA关注的人

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