- 博客(56)
- 资源 (28)
- 收藏
- 关注
原创 大厂软技能最佳实践--金字塔原理篇
每次看见别人在讲台上滔滔不绝、口若悬河,你是否会憧憬有一天变成自己?每次看见别人跟leader汇报时逻辑缜密、结构清晰,你是否憧憬有一天变成自己?每次看见别人battle的时候有理有据、旁征博引,你是否憧憬有一天变成自己?每次看见别人述职的时候亮点突出、化腐朽为神奇,你是否憧憬有一天变成自己?是的,你一点都不憧憬,你只想做条咸鱼,那你走吧,别好奇我的文章。。。什么是金字塔原理?定义它是思考和表达的一种模式,任何事情都可以提取出一个中心论点,然后拆分为三到七个分论点,每个分论点下面再有三..
2021-02-26 14:28:53
1110
2
原创 开发任务很重时,领导交给你一项架构任务怎么办?
你是一名普通的前端开发,马不停蹄的写着业务代码,勤勤恳恳的工作着。leader看你表现不错,有心栽培你,交给你一项重要的架构任务,但是你已经朝九晚九了,现在该怎么办呢?常见解决方式如果加班完不成,那就加更多的班直到完成,绝不能辜负leader的信任兄弟我怕你有命做,没命拿成绩啊加班只可以用于解决紧急任务,但加班不是银弹!如果我们为了这个架构任务把未来一个月的下班时间从9点变为12点,那就一定会因为加其他的任务从12点变成凌晨2点!一旦遇到线上bug或加急改动,完全没时间休息了。对身体的伤害就不.
2021-02-23 18:05:41
473
6
原创 前端内卷加速破局之道
什么是内卷?罗振宇有这样一个比喻,江湖中有一本葵花宝典(比如vue3源码),大家都想得到它,因为得到之后,可以天下无敌!但如果有一天,葵花宝典被公开了(vue3源码教程),人人都有机会练,这是好事还是坏事呢?这会成为一个灾难,因为一个人拥有时,练不练是一个人的事。大家都拥有,练不练就不由自己决定。比如你有一个仇人,你不练,你的仇家就会练成后来杀你,所以逼得你也得练。最终江湖上所有人都会练葵花宝典,人人都天下无敌,也就没有天下无敌了。但是欲练神功,必先自宫(消耗时间精力就是消耗生命),这是一个通输的结局,..
2021-02-15 14:01:40
2533
14
原创 大厂前端撕逼方法论,从此不再怕battle!!!
老板要做个收款的功能,搞快点(甲方一句话需求)这个需求后天必须要上(产品倒排时间)这个体验不好快改下(UI、交互频繁调整不算工时算bug)时间不够接口还没写完,你先联调一部分(后台框你先联调,联调delay都怪你)表格数据怎么出不来(测试bug先找前端麻烦)…前端:他们都是爸爸,我只是个背锅侠,我太难了,呜呜呜~~~注意:以下方法论不适用于偷工减料,仅用于受到多方PUA时反制PUA,切记!!!前端怎么battle甲方?甲方是爸爸深挖甲方诉求,搞清楚真正的需求和隐藏需求,防止频繁返.
2021-02-08 10:06:58
986
原创 vue3源码分析--真的有必要掌握框架的细枝末节吗?
古人云:工欲善其事必先利其器,磨刀不误砍柴工。但是砍柴的人需要知道怎么制作刀吗?注意:本文先分析要不要学源码,然后分析要不要掌握源码的每一个细枝末节(深究技术)!!!为什么要学源码为了面试被迫学习->毕竟面试可是要造火箭的为了装逼->装逼才是人生的究极快乐遇到问题网上找不到解决方案->只能硬着头皮啃源码想了解优秀的代码长什么样->猎奇心理打磨技术永远不会错->技术是安身立命之本…为什么不要深究源码为了面试被迫学习源码大部分面试官也只是跟风网上的面.
2021-02-07 10:23:39
1069
6
原创 代码重构,最佳实践,你真的会代码重构吗?
WHAT:什么是重构?Martin Fowler:重构是一种对软件内部结构的改善,目的是在不改变软件的可见行为的情况下,使其更易理解,修改成本更低。大型重构对象:对系统、模块、代码结构、类与类之间的关系等的重构方法:有分层垂直拆分、模块化水平拆分、解耦、抽象UI组件、抽象业务组件、抽象区块方法论:编程范式、设计原则、设计模式影响:代码改动多,影响面广,难度较大,耗时较长,引入BUG风险高小型重构对象:对类、函数、变量等代码级别的重构方法:规范命名(见名知意)、规范注释、函数
2021-02-04 00:01:34
1452
3
原创 node --mode 加载不同env文件
vue-cli-service区分打包环境变量package.json–mode指定加载对应的env文件{ "scripts": { "dev": "vue-cli-service serve", "build": "npm run build-pro", "build-pro": "vue-cli-service build --mode production", "build-test": "vue-cli-service build --mode test"
2020-11-05 17:19:02
1983
1
原创 2020年 30K的前端架构面试题总结(持续更新)
30K的前端面试题总结vue部分vue父子组件通信vue组件的data为什么建议写成函数返回对象而不是直接写对象?input的input事件会自带event参数,如何同时绑定其他参数keep-alive有哪些参数?LRU算法原理?refvue为什么不兼容ie8简述Vue的响应式原理js实现简单的双向绑定v-modal如何实现computed 会重新求值吗v-if和v-for写在同一标签上,谁的优先级高?为什么?怎么优化?用户自定义watch有哪些参数vue2通过下标修改数组项或数组length无法触发响应式
2020-06-02 00:39:14
16742
7
原创 DNS解析过程
DNS解析浏览器缓存: 浏览器缓存DNS记录一段时间。有趣的是,操作系统不会告诉浏览器每个DNS记录的生存时间,因此浏览器将它们缓存一段固定的时间(因浏览器而异,2到30分钟)。操作系统缓存: 如果浏览器缓存不包含所需的记录,则浏览器进行系统调用(Windows中的gethostbyname)查看hosts文件。操作系统有自己的缓存。路由器缓存: 请求继续到您的路由器,路由器通常有自己的D...
2020-04-28 00:17:14
620
原创 webpack学习总结
devtool配置sourceMapinline 不生成单独的sourceMap文件,而是直接打包进js文件里module 映射第三方和loader的代码cheap 只映射到出错行,不精确到列;只映射业务代码eval 速度最快,但不全面development: 建议cheap-module-eval-source-mapproduction: 默认不加最好,需要...
2020-04-26 23:33:20
594
原创 js 图解变量环境、词法环境、执行上下文,作用域链查找过程
看到这个标题的时候心里应该是这样的js代码运行过程编译是把代码拿过来创建执行上下文,并创建变量环境、词法环境、可执行代码,将执行上下文压入执行栈。执行是在当前执行上下文环境下执行可执行代码。变量环境:通过var声明或function(){}声明的变量存在这里词法环境:通过let const with() try-catch创建的变量存在这里可执行代码:变量声明提前后,剩下的...
2020-04-17 18:02:35
4006
8
原创 国内知名前端大佬收集(排名不分先后)
前不久司徒正美断开连接了,很多朋友在问:“司徒正美是谁?”。于是我抽时间整理了下比较知名的国内前端大佬。文章目录尤雨溪(尤小右)玉伯(玉伯也叫黑侠/王保平)阮一峰司徒正美(钟钦成)朴灵(JacksonTian\田永强)winter(程劭非)廖雪峰张鑫旭勾三股四月影(吴亮)贺师俊周爱民徐涛徐飞(民工精髓)大漠一丝CSS魔法小芋头君林建锋(sofish)颜海镜尤雨溪(尤小右)vue项目作者...
2020-04-14 19:09:13
28016
17
原创 js实现事件总线EventBus
手写EventBusclass EventBus { constructor() { this._events = [];//存储自定义事件 } /** * 注册事件和处理函数 * @param event * @param fn */ on(event, fn) { if (Array.isArray(event)) { f...
2020-04-14 10:57:11
8751
1
原创 sessionStorage\localStorage总结
获取localStorage最大容量sessionStorage\localStorage在谷歌容量为5M左右(function () { if (!window.localStorage) { console.log('当前浏览器不支持localStorage!') } var test = '0123456789'; var add = function (nu...
2020-04-08 17:29:57
581
原创 vue源码学习 深入patch diff双端对比算法
什么时候调用patch在beforeMount和mounted之间,会执行options.render函数生成新的VNode树。然后调用vm._update(新VNode)更新,然后进入到patch阶段。// src/core/instance/lifecycle.jsexport function mountComponent ( vm: Component, el: ?Eleme...
2020-04-03 13:52:21
1263
原创 vue源码学习总结 深入解析nextTick
nextTick实现机制优先级:setImmediate() > MessageChannel > Promise.resolve().then() > setTimeout(fn,0)执行过程当前tick =>当前tick第一次调用queueNextTick 的时候将回调放入callbacks中,且将timerFunc推入到宏/微任务栈中,设置pending锁=&...
2020-04-02 22:16:19
1073
1
原创 js 宏任务与微任务总结
宏任务macrotask有哪些script setTimeout setInterval setImmediate requestAnimationFrame I/O操作 UI渲染微任务microtask有哪些process.nextTick MutationObserver Promise.then执行优先级主线程script>微任务process.nextTick>pr...
2020-04-02 21:54:50
1529
原创 vue源码学习总结 深入解析template编译成render函数过程
简述编译流程总的来说,在beforeMount之前执行编译过程,第一步通过html-parser将template解析成ast抽象语法树,第二步通过optimize优化ast并标记静态节点和静态根节点,第三步通过generate将ast抽象语法树编译成render字符串并将静态部分放到staticRenderFns中,最后通过new Function(render)生成render函数。在bef...
2020-04-01 17:12:32
3497
3
原创 vue源码学习总结 深入响应式原理
深入响应式原理图请反复观看原理图,画这个图的人请收下我的膝盖。。。从initState切入,发现有3种watcherVue.prototype._init= function (options?: Object) { callHook(vm, 'beforeCreate') initInjections(vm) // resolve injections before data/...
2020-03-31 18:03:48
2220
原创 vue源码学习总结 lifecycle深度解析
钩子函数详细描述钩子函数说明beforeCreatethis.$options初始化完成,生命周期钩子函数、事件函数、渲染函数等已挂载到Vue.prototype上createdinject、data、method、computed、prop、provide可以访问了,但真实dom还没有生成,this.$el还不可用beforeMountrender函数首次...
2020-03-27 18:13:22
1088
原创 vue源码学习总结 prop data method computed 的命名冲突处理策略
vue 组件属性命名冲突处理策略当 prop data method computed 的key值冲突, 获取值优先级策略如下:computed>data>method computed>method>prop prop>data在源码src/instance/state.js 的 initState中,方法的执行顺序为 initProps>ini...
2020-03-26 16:59:50
3635
原创 vue源码学习总结 this.$data this._data this.$options.data this.xxx之间的联系;data重置
假设有如下代码:let option={ name:'demo', el:'#app', template:'<div>{{name}}</div>' data(){ return { name:'demo page.' } }};let vm=new Vue(option);this.$options.data ...
2020-03-26 15:35:10
1172
原创 vue源码学习总结 options合并策略
vue options合并流程格式化数据格式化props为小驼峰命名的对象格式化inject为{key : { from: val}}形式对象格式化directives为{ bind: defFn, update: defFn }形式对象依次合并 parent, child.extends(单个继承组件), child.mixins(数组), child.options,取值越靠...
2020-03-25 18:01:29
643
3
原创 typescript 深入理解装饰器
安装// cmdcnpm i -g typescript配置// cmdtsc --init将tsconfig.json的experimentalDecorators设为true, 启动实验阶段的装饰器功能代码新建文件test.ts// 装饰器调用顺序// 属性装饰器>方法参数装饰器>方法装饰器>静态属性装饰器>静态方法装饰器>类装饰器// ...
2019-09-20 15:59:19
2129
原创 web性能优化原理与方案
深入理解http请求的过程是前端性能优化的核心从请求过程中可以发现一些优化点dns是否可以通过缓存减少dns查询时间?dns缓存可以减少dns解析时间网络请求的过程走最近的网络环境?cdn以空间换时间,减少请求时间相同的静态资源是否可以缓存?下次不再请求,减少请求时间,减轻服务端压力能否减少请求http请求大小?静态文件压缩, gzip减少http请求css\js\img合并服...
2019-08-27 22:14:31
804
原创 flow.js静态类型检查
文章目录flow入门demowebstrom集成flowvs code集成flowflow原始类型详细语法flow入门demo初始化一个flow项目mkdir flow-democd flow-demonpm init -ynpm i flow-bin flow-remove-types --save-dev //安装flow修改package.json"main": "...
2019-08-01 15:59:17
401
原创 js高级函数 柯里化 去柯里化 偏函数 节流 防抖 分时 惰性加载
函数柯里化/** * 函数柯里化 * 每次调用都将参数存起来,最后需要使用的时候才求值 * @param fn * @returns {Function} */let currying = function (fn) { let args = []; return function () { if (arguments.length === 0) { re...
2019-07-23 17:45:01
376
原创 js实现最短路径求解,简单易懂
简介网上看到很多最短路径求解问题的js实现版本,看了老半天,没怎么看懂。看懂了我也复现不了。+_+!所以自己写了个简单易懂的,小白容易看懂。至于大佬,,,,觉得写的不好你来打我咯。。。别看代码长,一大半是测试代码题目已知图如下,所有线段可以来回走,求 A 到 G 最短路线已知图如下,所有线段可以来回走,求 A 到 K 最短路线es6实现如果有多个长度相同的最短路径,只输...
2019-07-05 16:29:28
2974
原创 js发布订阅者模式es6实现及其图解
直接上代码//主题class Dep{ constructor(callback){ this.subs=[]; //每个主题更新数据的方法不一样,所以需要传进来 this.callback=callback; } addSub(sub){ this.subs.push(sub); return this; } notify(){...
2019-07-04 13:44:06
2809
原创 js时间格式化
废话不多说,直接上代码:/** * 时间格式化 * @param date 字符串或日期类型 * @param fmt yyyy-MM-dd hh:mm:ss * @returns {*} */function formatDate(date, fmt){ date=date || new Date(); fmt=fmt || 'yyyy-MM-dd hh:mm:ss'; ...
2019-05-29 10:35:10
1403
原创 css,js文本长度变...省略号
文章目录css文本超出变...省略号js文本超出变...省略号css文本超出变…省略号单行文本.ellipsis{ width:200px;/*必须是固定宽度值*/ overflow:hidden;/*超出部分隐藏*/ text-overflow:ellipsis;/*超出部分显示省略号*/ white-space:nowrap;/*规定段落中的文本不进行换行 */...
2019-05-28 11:19:35
4106
原创 electron创建应用、打包、自动更新
安装环境安装node npm cnpm tomcat安装 visual studio 2017安装 python27安装 Squirrel.Windowsgit bush中执行:git clone --recursive https://github.com/squirrel/squirrel.windowscd squirrel.windows…NuGet\NuGet.exe ...
2019-03-20 13:16:28
1586
3
原创 mongodb基础入门(安装、可视化、用户、增删改查)
安装安装教程参考https://blog.youkuaiyun.com/heshushun/article/details/77776706安装卡住参考https://blog.youkuaiyun.com/Artful_Dodger/article/details/80844844安装可视化工具参考https://blog.youkuaiyun.com/qq_34731574/article/details/8142883...
2019-02-20 17:09:09
217
原创 js new到底做了什么?如何重写new?
new 构造函数()执行顺序在堆中开辟对象内存空间, 记为obj在obj 中添加__proto__属性并指向 构造函数.prototype将构造函数中的this 指向obj执行构造函数内语句若构造函数中没有reutrn 或return this或基本类型(number、string、boolean、null、undefined)的值,则返回obj在堆中的内存地址;若return 引用类...
2019-01-24 11:51:46
2580
原创 js this使用详解
this在不同环境中指向的不一致性可能导致很多难以排查的错误, 特此整理一波this 在不同环境下的指向. 请牢记this最终指向的是运行时调用该函数的对象函数中的this此时 `this=window`function test(){ let x = 1; console.log(this.x); //undefined}//直接调用test(); // 调用的是wi...
2019-01-24 10:46:03
1895
1
原创 js 深克隆(考虑到类型检查,递归爆栈,相同引用,Date和Function等特殊类型克隆,原型克隆)
定义函数获取数据类型function _getDataType(data){ return Object.prototype.toString.call(data).slice(8,-1);};定义函数克隆RegExp类型function copyRegExp(re){ var flags = ''; if (re.global) flags += 'g'; if (re...
2019-01-22 21:29:31
6409
9
原创 js addEventListener事件捕获与冒泡,第三个参数详解,阻止事件传播
结论element.addEventListener(event, function[, useCapture])event:事件名称,如clickfunction:指定要事件触发时执行的函数,可以传入事件参数useCapture:可选。布尔值,指定事件是否在捕获或冒泡阶段执行。默认false:在冒泡阶段执行指定事件true:在捕获阶段执行事件event.stopPropagat...
2019-01-22 12:36:18
10014
3
原创 forEach for-in for-of在Object Array Set Map中异同点
forEach可以遍历数组和类数组对象可以遍历Set和MapSet遍历出的item和index相同不能遍历Objectbreak,continue,return无效从下标0遍历到length-1不会遍历数组上自定义的自有属性和自定义的原型属性(0<n<length-1的数组除外)for-in可以遍历数组和对象遍历出来的是键不能遍历Set和Map,会遍历所有自...
2018-11-27 19:07:04
549
原创 ionic3项目实战教程四(创建自定义directive、带参directive、下拉刷新ion-refresher、上拉加载ion-infinite-scroll)
前言看到一种说法,angular是一个框架,而react和vue只是一个库而已。虽然不敢苟同,但深入学习之后感觉angular确实相当牛皮。一、创建directive,带参directive1.ionic g directive noDblClick //创建一个名为noDblClick的自定义指令 2.修改home.html和no-dbl-click.ts丰富功能//h...
2018-07-25 18:15:26
3908
5
vue3源码 vue-next源码
2020-06-09
iview-admin-2.0源代码(可运行)
2018-07-04
微信公众平台JSSDK开发实战 公众号与HTML5混合模式揭秘_PDF电子书下载 高清 带索引书签目录_席新亮编著
2018-07-04
idea的jetty-runner1.2.1插件
2018-06-06
css揭秘 中文PDF全彩色最新版
2018-05-25
angular2官网文档教程中文翻译版
2017-01-22
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人