自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

DavidFFFFFF的博客

一个小菜鸟的程序进击史

  • 博客(48)
  • 收藏
  • 关注

原创 npm install原理分析

npm原理分析,主要看Npm版本之间的提升;npm 3.0 扁平化 :安装模块时,不管其是直接依赖还是子依赖的依赖,优先将其安装在 node_modules 根目录。npm 5.0 新增了 package-lock.json 文件,锁定依赖结构看这张图就能大体了解npm install的原理1.检查 .npmrc 文件:优先级为:项目级的 .npmrc 文件 > 用户级的 .npmrc 文件> 全局级的 .npmrc 文件 > npm 内置的 .npmrc 文件2.检查项目.

2020-08-08 13:30:20 496

原创 HTTPS 原理分析

随着https建站成本的降低(颁发ca证书的权威机构可以颁发免费、低价格的证书),使用https协议的网站用的越来越多。大家都知道使用Https`协议的网站更安全,像ssl应用层,对称加密和非对称加密,证书验证等等,那么问题来了,使用https协议一定就是安全的吗?带着这个问题,我们来深入探究下https的原理和如何保证安全性的。https原理先po一张图,了解下Https在http的基础上做了哪些事?https协议本身并不是一种新的协议,在HTTP跟TCP中间加多了一层加密层TLS/SSL.

2020-07-26 02:02:19 481

原创 关于canvas.toDataURL 在iOS运行失败的问题

关于canvas.toDataURL 在iOS运行失败的问题最近做了一个海报生成的组件,需要drawimage到画布上,image来源包括本地和异地的图片src;首先讲一点,异地图片如果不设置允许跨域访问,canvas.toDataURL是无法画image的,报画布污染的错;首先放一张我要生成的图;上面加载了两张本地图片,两张异地图片,写了一些文字;在windows谷歌浏览器跑是好的,是吧...

2019-07-09 18:25:49 10109 7

原创 关于浏览器的执行机制(event loop)

浏览器是多线程的,它们在内核制控下相互配合以保持同步。一个浏览器至少实现三个常驻线程:JavaScript引擎线程,GUI渲染线程,浏览器事件触发线程。我们在学习浏览器的执行机制前,首先要了解浏览器的线程和线程之间的关系;1.浏览器的线程有哪些?GUI 渲染线程负责渲染浏览器界面,解析 HTML,CSS,构建 DOM 树和 RenderObject 树,布局和绘制等;当界面需要重绘(Repaint)或由于某种操作引发回流(reflow)时,该线程就会执行;注意:GUI 渲染线程与 JS .

2020-08-22 18:54:11 842

原创 手写js ---- instanceof方法

递归方法:function instanceof_(left,right){ if(left.__proto__ === null){ return false; }else{ if(left.__proto__ === right.prototype){ return true; }else{ return instanceof_(left.__proto__,right);

2020-08-10 21:38:47 366

原创 手写Js代码 (3) ------ 函数柯里化

function multi() { var args = Array.prototype.slice.call(arguments); var fn = function(...arg) { return multi.apply(null,arg.concat(args)); } fn.toString = function() { return args.reduce(function(a, b) { return .

2020-08-10 21:26:29 493

原创 手写Js代码 (2) ------ call方法,apply方法,bind方法

// 实现思路,给target对象加symble类型的属性,指向thisFunction.prototype.myCall = function (target,...args){ // 判断如果targe为null或者undefined,将this指向window 或者Clobalthis target = target || globalThis; // 将this指针指向返回的对象 const prop = Symbol(); target[prop

2020-08-10 20:54:31 138

原创 手写Js代码 (1) ------ new方法

function _new(target,...args){ // 定义一个返回的对象 let obj = {}; if(target.prototype !== null){ // 对象的原型对象指向目标的构造函数 obj = Object.create(target.prototype); } // 将this指针指向返回的对象 const result = target.apply(obj,args); if((t

2020-08-10 20:06:39 192

原创 当class遇上console.log的坑,该怎么办?

最近为了面试,疯狂刷题,当我遇到这个题;大脑已经崩塌,我开始钻牛角尖了,怎么办??? 干了这杯苦酒,下辈子不当程序员!!!先上题目: const chain=new Chain(); chain.eat().sleep(5).eat().sleep(6).eat().work() 输出结果是: console.log(eat->sleep(5)->eat->sleep(6)->eat-work);其实吧,题目很简单,只要class的方法返回自身就行;先上我的代码c.

2020-08-09 23:18:13 461 1

转载 Vue.js 组件编码规范

Vue.js 组件编码规范这个 链接 用来查看本翻译与英文版是否有差别(如果你没有看到 README.md 发生变化,那就意味着这份翻译文档是最新的)。 其它语言英文葡萄牙语日本韩语俄语目标本规范提供了一种统一的编码规范来编写 Vue.js 代码。这使得代码具有如下的特性:其它开发者或是团队成员更容易阅读和理解。IDEs 更容易理解代码,从而提供高亮、格式化等辅助功能更容易使用现有的工具更容易实现缓存以及代码包的分拆本指南为 De Voorhoede 参考 R

2020-08-07 10:53:09 194

原创 JavaScript 内存机制

看了几篇关于js内存机制的文章,感觉大家讲内容的都是大差不差,下面是我整理了多篇文章后得出的最全最核心内容。1.简介学过c++的同学都知道,内存是要主动申请和释放的。每种编程语言都有它的内存管理机制,比如简单的C有低级的内存管理基元,像malloc(),free()。同样我们在学习JavaScript的时候,很有必要了解JavaScript的内存管理机制。JavaScript的内存管理机制是:内存基元在变量(对象,字符串等等)创建时分配,然后在他们不再被使用时“自动”释放。对于前端开发来说,.

2020-08-03 18:22:03 130

转载 Vue源码分析 ----- 消失的$dispatch 和 $broadcast

$dispatch 和 $broadcast作为一对情侣 ????属性,在 Vue 1.0 中主要用来实现基于组件树结构的事件流通信 —— 通过向上或向下以冒泡的形式传递事件流,以实现嵌套父子组件的通信。但是由于其显功能缺陷,在 Vue 2.0 中就被移除了。虽然 Vue 官网已经不再支持使用 $dispatch 和 $broadcast 进行组件通信,但是在很多基于 Vue 的 UI 框架中都有对其的封装,包括 element-ui、iview 等等。那么$dispatch 和 $broadcast 到

2020-07-23 19:50:59 274

原创 Vue源码解析-------组件之间的通信

vue组件之间的通信分为两种:父子组件之间的通信:propsevent(通过v-on在父组件声明,通过emit在子组件调用)v-model(prop是value,通过触发input事件动态更改变量).sync 通过修饰符,默认绑定对象,并通过对象或者对象属性的name为事件名在子组件通过emit触发;ref$parent$children非父子组件之间的通信:$attr$listenersprovide,inject 动态注入$root 访问根实例vuex 集中式存储所.

2020-07-22 21:31:34 250

原创 git常用命令二 git rebase

rebase 的意义,就是对一个分支做「变基」操作。常用的场景:Rebase 场景一:合并多个commit提交;1.我们来合并最近的 4 次提交纪录,执行:git rebase -i HEAD~4这时候,会自动进入 vi 编辑模式:pick:保留该commit(缩写:p)reword:保留该commit,但我需要修改该commit的注释(缩写:r)edit:保留该commit, 但我要停下来修改该提交(不仅仅修改注释)(缩写:e)squash:将该commit和前一个commit合.

2020-07-21 15:56:02 731

原创 git常用命令一 git reset

常用场景:当你在工作的时候发现之前commit的提交的代码有问题,你想撤回在本地commit提交,最简单的方法就是git reset下面介绍下git reset的原理和常用的option参数;git reset就是可以让HEAD这个指针指向其他的节点。比如我们有一次commit不是不是很满意,需要回到上一次的Commit里面。那么这个时候就需要通过reset,把HEAD指针指向上一次的commit的点。在介绍常用参数之前,先复习下之前关于本地git add commit 的流程,本地git区域总.

2020-07-21 11:54:59 237

原创 CSRF跨域攻击原理浅谈

CSRF(Cross-site request forgery),中文名称:跨站请求伪造,也被称为:one click attack/session riding,缩写为:CSRF/XSRF。看了好多文章对csrf原理的解释,一直不明白不明白一个B网站的img标签的请求是如何挟持到A网站的cookies进行模拟跨域请求的。直到看到一位大佬写的一篇文章,我才大体猜到了其中的原理。不多废话,直接上核心原理:CSRF攻击是源于WEB的隐式身份验证机制!WEB的身份验证机制虽然可以保证一个请求是来自于某.

2020-07-18 20:02:42 800

原创 Vue源码解析(1)

Dep和watcher的关系什么关系?多对多如何建立的?data中徐行的get()中建立关系,dep.subs watcher.depIds什么时候建立?初始化,解析模板中的表达式时 ,new Watcher对象时建立;Array.apply(null, { length: 20 }).map(function () { return createElement('p', 'hi')})apply函数不是接受数组的吗?为什么可以接受对象;带着好奇我查了下文档,原来从e

2020-07-02 17:21:44 345

原创 vscode setting设置 自动保存时整理代码

{ // vscode默认启用了根据文件类型自动设置tabsize的选项 "editor.detectIndentation": false, // 重新设定tabsize "editor.tabSize": 2, // #每次保存的时候自动格式化 "editor.formatOnSave": true, // #每次保存的时候将代码按eslint格式进行修复 "...

2020-01-14 13:31:59 1424

转载 .gitignore不生效问题 转载

原文链接问题:在使用git进行版本控制的过程中发现,将想被忽略的文件(文件夹)配置到.gitignore文件中后,实际修改了想被忽略的文件,调用git status查看时,仍然会提示提交这些文件。也就是说实际并没有被忽略原因:原因是git ignore只会对不在git仓库中的文件进行忽略,如果这些文件已经在git仓库中,则不会忽略。所以如果需要忽略的文件已经提交到本地仓库,则需要从本地仓库...

2019-11-13 17:04:52 167

原创 git仓库切换连接方式 【https---ssh]

原文链接:https://blog.csdn.net/fastjack/article/details/79757520在管理Git项目上,很多时候都是直接使用https url克隆到本地,当然也有有些人使用SSH url克隆到本地。这两种方式的主要区别在于:使用https url克隆对初学者来说会比较方便,复制https url然后到git Bash里面直接用clone命令克隆到本地就好了,...

2019-09-19 11:00:46 3292

原创 关于git 凭证存储 credential helper配置 ,解决(git pull,push,fetch)remote not found的问题

昨天不知怎么搞得,项目本地git bash一直连不上远程origin,一直在报错(图1),在网上看了一篇博客,要重新配置git 凭证存储,这里涉及到的知识就是git通过http或https的方式连接远程仓库时用户名和密码的记忆存储问题;凭证存储在使用Git进行开发的时候,我们可以使用ssh方式或者http url方式来进行源码的clone/push/pull,如果你使用的是 SSH 方式连接...

2019-03-27 16:49:56 38599

原创 websocket聊天室情景处理———断线与退出

最近自己在做一个包含聊天功能的项目,其中用到的Vue+webscocket,遇到了好多问题,包括自己遇到的一些需求。需求:断线自动连接判断主动退出和被动掉线聊天框消息不因添加而向下滚动解决方法:断线在监听里面,然后关闭当前webSocket进程后再去请求创建新的ws进程; this.socket.onclose = function(e){ let logout ...

2018-12-28 15:57:11 2083

原创 如何降低与心仪的人的尬聊次数,成功上位 ^_^

这不是一篇技术博客,不是一篇技术博客,不是一篇技术博客。作为一名工作多年的程序猿,我深知大部分程序猿哥哥弟弟们都有一样的通病,直男癌,尬聊,闷骚…等等 。这篇博客是我作为过来人,教大家如何避免跟心仪的妹子尬聊。

2018-12-14 09:52:26 699

原创 Fetch API

Fetch API浏览器实现的Fetch API 提供了一个获取资源的接口(包括跨域)◉ 引言它是什么?为什么要使用它?它能解决什么问题?它在解决问题上有什么优势?它有哪些劣势?怎么使用它?最佳实践和封装1. 它是什么?浏览器窗口对象 window 下挂载的 fetch() 方法用于发起获取资源的请求。它返回一个 Promise,这个 Promise 会在请求响应...

2018-11-02 13:42:29 358

原创 微信支付遇到的缺少参数问题

最近工作还是比较忙的,好就想继续更新下博客。现在是2018-11-1 20:40,刚忙完项目,趁着记忆还清晰就把现在的项目遇到的问题记录一下;微信支付 提示JSAPI缺少参数:调用的方法代码是: wx.chooseWXPay({ appId:data.pay_parameters.appId, timestamp: data.pay_...

2018-11-01 20:51:26 10224

原创 微信小程序 全面屏适配

最近在做小程序,说实话小程序的坑我才刚踩。今天做了一个关于小程序自定义navigator的功能,不废话,先上图通过配置app.json的window属性的navigationStyle(导航栏样式,仅支持以下值: default 默认样式custom 自定义导航栏,只保留右上角胶囊按钮),改为custom模式,来自定义navigator。注释: 注:navigation...

2018-09-10 16:05:23 18144

原创 关于 JS 的脚本执行及 SetTimeOut延迟时间为0的详解

关于 JS 的脚本执行及 SetTimeOut延迟时间为0的详解 大海和星辰之间,是我们征途的方向;js是一种描述型的语言,由浏览器动态的解析与执行;严格来讲,js是单线程执行的,也就是说js脚本运行顺序是一个接一个执行;由 John Resig 的 How JavaScript Timers Work 可以知道,现有的 JavaScript 引擎是单线程处理任务的。它把任务放到队列...

2018-03-13 09:22:18 1257

转载 发现 prototype的强大 + 文件上传插件WebUploader

添加文件上传状态查看功能: 这次使用的WebUploader是由Baidu WebFE(FEX)团队开发的一个简单的以HTML5为主,FLASH为辅的现代文件上传组件。在现代的浏览器里面能充分发挥HTML5的优势,同时又不摒弃主流IE浏览器,沿用原来的FLASH运行时,兼容IE6+,iOS 6+, android 4+。两套运行时,同样的调用方式,可供用户任意选用。引入资源&...

2018-01-31 15:55:53 342

原创 年终杂记

转眼间,2017年已经过去,今年算是不平凡的一年 项目还是那个项目,版本却换了好几套,不断有新的模块加进来,老的模块大都被摒弃;产品换了一拨,开发也加入了几位新面孔;从去年的 小打小闹 到今年的招兵买马,大展拳脚,时间向前,公司有了靠山;总之一句话,一切都在变,公司在壮大,正是大好年华,只待拼搏朝夕。

2018-01-03 10:07:29 222

转载 “评论实名制”,10月1日即将实施

网信办8月25日公布《互联网跟帖评论服务管理规定》,自2017年10月1日起施行。《规定》共计十三条。第一条至第三条,对目的依据、适用范围、监管主体作出规定。第四条,对跟帖评论新产品新应用新功能进行安全评估作出规定。第五条,对跟帖评论服务提供者主体责任作出规定。第六条,对跟帖评论服务提供者及其用户自律作出规定。第七条,对跟帖评论服务提供者及其从业人员不得干预舆论作出规定。第八条和第九条,对跟帖评论服

2017-09-06 15:37:46 406

原创 HTML5新特性:FileReader 和 FormData

最近用vue做的项目中有用到一个关于图片上传,实时预览;其中我用到了两个HTML5的新特性:FileReader和FormData;首先介绍下这两个方法: HTML5定义了FileReader作为文件API的重要成员用于读取文件,根据W3C的定义,FileReader接口提供了读取文件的方法和包含读取文件结果的各类事件模型,想查看详细描述,请阅读FileReader。1.检测浏览器对File

2017-09-04 13:34:19 13399

转载 Vue.js v-bind遇到的数据渲染问题

作者:江湖z 链接:http://www.jianshu.com/p/98dfa4c6389c 來源:简书 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。一. v-bind介绍数据绑定一个常见需求是操作元素的 class 列表和它的内联样式。因为它们都是属性 ,我们可以用 v-bind 处理它们:只需要计算出表达式最终的字符串。不过,字符串拼接麻烦又易错。因此,在 v-b

2017-08-03 13:44:54 2268

原创 VUE项目实战

Vue实战—–用户登录及注册1.用户登录 用户登录页面主要是获取当前页面用户输入的帐号跟密码,验证是否为空并通过VUE axios(http请求插件),vue更新到2.0之后,作者就宣告不再对vue-resource更新,而是推荐的axios,前一段时间用了一下,现在说一下它的基本用法。配置文件选项,这里的config是对一些基本信息的配置,比如请求头,baseURL,请求方式等等,当然这里提

2017-07-29 23:45:54 2259

原创 如何通过apache2配置多站点

设置多站点详细的步骤和设置可以参考官方文档。假设主站的域名为:www.bitrix.zjf(原生bitrix代码),第二个站点域名取为:site2.bitrix.zjf(定制后的bitrix代码)准备首先需要把需要共享的核心放到共享目录(mv),比如:/var/www/shared/,包括bitrix, upload文件夹mv /var/www/html/bitrix /var/www/share

2017-07-14 17:34:46 1373

转载 转载 为什么我们应该学好英语

本文作者用自己的亲身经历,讲述如何科学、高效的学习英语;本人感觉这几项经验不光适用于学习英语,它还能适用于我们日常学习、工作、生活中的方方面面,作者向我们传授的是如何正确的认识自己、掌控自己、认清人与人之间的差别,从而更好的找到适合自己的路! 原文 作者:MeCKodo(二哲)认知篇为什么我们应该学好英语首先我们应该明白 英语 是一门使用 广泛 的语言,其广泛程度可以从维基百科的用户结构窥探

2017-07-12 15:36:06 663

原创 Vue.js(version 2)的时代已到来,前端攻城狮你准备好了吗?-------- 一、

轻量化的前端UI框架—–Vue.js本文拿vue对比其他前端框架,介绍它的强大之处,我会列出相应的实例供大家参考,具体功能可以参考官方API:Virtual DOM(虚拟DOM)组件化应用 Vue 专注于创造前端的富应用。不同于早期的JavaScript框架“功能齐全”,Vue只有框架的骨架,其他的功能如路由、状态管理等是框架分离的组件。虚拟DOM所谓的Virtual DOM基本上说就是它名

2017-07-06 16:06:39 558

转载 Vue vs React: Javascript 框架之战 #转载

本文详细的介绍了vue.js和react.js的能力;vue.js更灵活,能够更好的结合当前的项目,进行升级优化;而react.js是由facebook团队创建开发及维护,跟vue有很多契合的地方,比如都注重显示层,都使用Virtual DOM,而react.js的亮点就是模板 vs JSX、状态管理 vs 对象属性、React Native能在手机上创建原生应用;Vue vs Rea

2017-06-29 16:19:43 751

原创 关于vue+router+webpack项目开发前期报错:找不到 module vue-router

这是报错Can't resolve 'vue-router(找不到路由模块)main.jsimport Vue from 'vue'import VueRouter from 'vue-router';import App from './App.vue';Vue.use(VueRouter)import routes from './routers.js'//创建router实例cons

2017-06-28 11:21:35 4355

原创 字符转义之PHP与JS

PHP字符转义的语法:urlencode string urlencode ( string $str )返回一个字符串,其中除- _之外所有非字母数字字符。已经被替换为%(%)符号,后面是两个十六进制数字和空格编码为+(+)符号。它的编码方式与WWW表单上发布的数据的编码方式相同,这与应用程序/ x - WWW - form - urlen编码媒体类型相同。这不同于»RFC 3986编码(参见

2017-06-16 13:52:09 942

原创 php+js 分享博客的功能

一开始,我是这么做的,把要分享的博客内容放到a标签的value中,然后通过点击事件传值this.getAttribute(‘value),传给transMit 函数;<a href="javascript:void(0);" id="blog-share-add-<?=$arResult["Post"]["ID"]?>" value="<?=$arResult["Post"]["textFormat

2017-06-15 15:17:16 748

空空如也

空空如也

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

TA关注的人

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