可怜的前端小程序员
码龄8年
关注
提问 私信
  • 博客:108,972
    108,972
    总访问量
  • 53
    原创
  • 833,412
    排名
  • 13
    粉丝
  • 0
    铁粉

个人简介:前端开发小程序员一枚,各种学习中。随心记录一些工作中遇到的问题

IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:浙江省
  • 加入CSDN时间: 2017-05-12
博客简介:

qq_38761664的博客

查看详细资料
个人成就
  • 获得60次点赞
  • 内容获得24次评论
  • 获得34次收藏
创作历程
  • 1篇
    2022年
  • 2篇
    2021年
  • 11篇
    2020年
  • 35篇
    2019年
  • 7篇
    2018年
  • 17篇
    2017年
成就勋章
TA的专栏
  • css
    1篇
  • vue
    14篇
  • svg
    3篇
  • jq
    2篇
  • echarts
    1篇
  • js
    41篇
  • go
    1篇
  • html
    1篇
兴趣领域 设置
  • 前端
    javascriptvue.jses6
创作活动更多

超级创作者激励计划

万元现金补贴,高额收益分成,专属VIP内容创作者流量扶持,等你加入!

去参加
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

码元和码点(字符串截取截取得是码元,汉字有一些偏僻字占据两个码元,字符的函数往往不是我们期待)

字符串截取截取得是码元,汉字有一些偏僻字占据两个码元,字符的函数往往不是我们期待
原创
发布博客 2022.12.05 ·
669 阅读 ·
0 点赞 ·
1 评论 ·
0 收藏

vue源码解析之mustache模板引擎

数据变为视图的方法纯Dom方法:非常笨拙,没有实战价值 数据join法:曾今流行 ES6反引号法:`${}`语法糖 模板引擎:解决数据变为视图最优雅的方法
原创
发布博客 2021.05.28 ·
255 阅读 ·
3 点赞 ·
2 评论 ·
0 收藏

面试啦,被问到排序算法了,该学习学习排序的那些算法了

算法概述算法分类十种常见排序算法可以分为两大类:非线性时间比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此称为非线性时间比较类排序。线性时间非比较类排序:不通过比较来决定元素间的相对次序,它可以突破基于比较排序的时间下界,以线性时间运行,因此称为线性时间非比较类排序。算法复杂度相关概念稳定:如果a原本在b前面,而a=b,排序之后a仍然在b的前面。不稳定:如果a原本在b的前面,而a=b,排序之后 a 可能会出现在 b 的后面。
转载
发布博客 2021.01.11 ·
219 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

vue原理解析

1.kvue.jsclass KVue{ constructor(options){ this.$options=options this.$data = options.data observe(options.data) proxy(this,'$data') //创建编译器 new Compile(options.el,this) }}class Observe{ co.
原创
发布博客 2020.12.07 ·
509 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

vue-router实现原理

1.k-vue-router实现//k-vue-router.js实现import Link from './krouter-link'import View from './krouter-view'let Vue;// 1.实现一个插件:挂载$routerclass KVueRouter { constructor(options) { this.$options = options // 利用Vue提供的defineReactive做响应化 // 创建响应式的
原创
发布博客 2020.09.28 ·
197 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

vuex原理

let Vue;class Store { constructor(options) { this._mutations = options.mutations; this._actions = options.actions; this.getters = {} this._wrappedGetters = options.getters const computed ={} const store = this // getters处理.
原创
发布博客 2020.09.28 ·
226 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

职责链模式

//职责链模式let order500 = function(orderType,pay,stock){ if(orderType===1&&pay===true){ console.log('500定金预购,得到100优惠券') }else{ return 'nextOrder' }}let order200 = function(orderType,pay,stock){ if(orderType===2&&.
原创
发布博客 2020.07.08 ·
228 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

模式之模板方法

class Beverage { //定义饮料类 boilWater(){ console.log('将水煮沸') } brew(){ throw new Error('子类需重写brew方法') } pourInCup(){ throw new Error('子类需重写brew方法') } addCondiments(){ throw new Error('子类需重写brew方法').
原创
发布博客 2020.07.06 ·
140 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

组合模式(文件夹的扫描)

class Folder { constructor(name){ this.name = name; this.files = []; this.parent= null;//添加父类 } add(file){ file.parent = this;//设置父对象 this.files.push(file) } scan(){ console.log('开始扫描文件夹:.
原创
发布博客 2020.07.02 ·
291 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

命令模式

菜鸟教程中代理模式总结)1.定义:将请求以命令的形式包裹在对象中,并传给调用对象。调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该对象执行命令。2.主要解决:行为请求者与行为实现者通常是一种紧耦合的关系,为了消除这种耦合关系3.何时使用:命令执行过程较为复杂且可能存在变化,需要对执行命令动作本身进行额外操作,此时可以考虑使用命令模式4.如何解决:通过调用者调用接受者执行命令,顺序:调用者→接受者→命令。5.关键代码:定义三个角色:1、received 真正的命令执行对象
转载
发布博客 2020.07.01 ·
1402 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

订阅模式初探(2)【复杂应用-命名空间与先发布再订阅】

var Event = (function(){ var global = this, Event, _default = 'default'; Event = function(){ var _listen, _trigger, _remove, _slice = Array.prototype.slice, _shift = Array.prototype.shift, _u.
原创
发布博客 2020.06.29 ·
151 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

订阅模式初探(1)

class Event{ constructor(){ this.clientList={} } listen(key,fn){ if(!this.clientList[key]){ this.clientList[key]=[] } this.clie...
原创
发布博客 2020.06.24 ·
193 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

代理函数的运用以及给自己的一些话

注意事项:代理与本地接口的一致性(代理对象与本地对象需要有对外一致的接口)应用场景一(图片预加载)var myImage =(function(){ var imgNode = document.createElement('img') document.body.appendChild(imgNode) return { setSrc(src){ imgNode.src = src } }})()var
原创
发布博客 2020.06.23 ·
327 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

函数的应用(数据节流,分时函数)

1.数据节流关于数据节流的代码实现有很多种,下面throttle函数的原理是,将即将被执行的函数用setTimeout延迟一段时间执行。如果该次延迟执行还没有完成,则忽略接下来调用该函数的请求。throttle函数接受两个参数,第一个参数为需要被延迟执行的函数,第二个参数为延迟执行的时间。代码如下:var throttle = function(fn,interval){ var timer, // 定时器 firstTime=true // 是否是第一次调用 return
原创
发布博客 2020.06.17 ·
364 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Node+TS+Koa+vue 商城全栈开发1(node部分-fs)

//文件系统模块fsconst fs = require('fs')// console.log(fs)//write// 写入数据到文件// fs.writeFile(file,data[,options],callback) (文件路径,内容,可选配置项容,回调函数)// input/output => i/o操作 =>流 二进制 =>buffer//创建文件...
原创
发布博客 2019.12.23 ·
325 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Node+TS+Koa+vue 商城全栈开发1(node部分-buffer)

//Buffer类,缓冲//buffer对象类似于数组,他的元素都是16进制的两位数,即0~255的数值,给元素的赋值如果小于0,就将该值逐次加256,直到得到一个0255之间的整数,如果得到赋值大于255,就逐次减256,直到得到0255区间内的数值。如果是小数,则舍弃小数部分,只保留整数部分。//process.stdin.on('data',(e)=>{//...
原创
发布博客 2019.12.20 ·
274 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Node+TS+Koa+vue 商城全栈开发1(node部分-process)

// 线程 console.log(process)//argv:用来获取当前运行node程序的相关参数 console.log(process.argv) if(process.argv.includes('-v')){ console.log('v1.0.0') } console.log(process.env)//当前系统环境变量 if(process...
原创
发布博客 2019.12.20 ·
287 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Node+TS+Koa+vue 商城全栈开发1(Node部分-event loop)

微任务、宏任务首先,JavaScript是一个单线程的脚本语言。所以就是说在一行代码执行的过程中,必然不会存在同时执行的另一行代码,就像使用alert()以后进行疯狂console.log,如果没有关闭弹框,控制台是不会显示出一条log信息的。亦或者有些代码执行了大量计算,比方说在前端暴力破解密码之类的鬼操作,这就会导致后续代码一直在等待,页面处于假死状态,因为前边的代码并没有执行完。...
转载
发布博客 2019.12.16 ·
193 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

Node+TS+Koa+vue 商城全栈开发1(es6部分-class)

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-...
原创
发布博客 2019.12.11 ·
192 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Node+TS+Koa+vue 商城全栈开发1(es6部分-set,weakSet)

SetES6 提供了新的数据结构 Set。它类似于数组,但是成员的值都是唯一的,没有重复的值。基本用法Set本身是一个构造函数,用来生成 Set 数据结构(即set方法返回的就是set数据)。跟foreach搭配可以去重const s = new Set(); [2, 3, 5, 4, 5, 2, 2].forEach(x => s.add(x)); // add()方...
转载
发布博客 2019.12.10 ·
177 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏
加载更多