├── .gitignore ├── image ├── 84 │ ├── bug.gif │ └── demo.gif ├── 87 │ ├── finish.gif │ ├── finish.png │ ├── rough.gif │ └── directive.gif ├── 88 │ ├── bug.gif │ └── demo.gif ├── 89 │ ├── bug.gif │ ├── data.png │ └── finish.gif ├── 90 │ ├── bug.png │ ├── demo1.gif │ ├── demo2.gif │ └── show.png ├── 92 │ ├── demo.png │ ├── extend.png │ ├── component.png │ └── component-directive.png ├── 93 │ ├── demo.gif │ └── prop-directive.png ├── 94 │ ├── demo.gif │ └── events-init.png ├── 天猫5s.jpg ├── 天猫6p.jpg ├── 淘宝5s.jpg ├── 淘宝6p.jpg ├── v-tap.gif ├── 前端控二维码.jpg ├── flex_principle.jpg └── wechat-ali-pay.png ├── issue_template.md └── README.md /.gitignore: -------------------------------------------------------------------------------- 1 | .idea 2 | .DS_Store 3 | -------------------------------------------------------------------------------- /image/天猫5s.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/youngwind/blog/HEAD/image/天猫5s.jpg -------------------------------------------------------------------------------- /image/天猫6p.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/youngwind/blog/HEAD/image/天猫6p.jpg -------------------------------------------------------------------------------- /image/淘宝5s.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/youngwind/blog/HEAD/image/淘宝5s.jpg -------------------------------------------------------------------------------- /image/淘宝6p.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/youngwind/blog/HEAD/image/淘宝6p.jpg -------------------------------------------------------------------------------- /image/84/bug.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/youngwind/blog/HEAD/image/84/bug.gif -------------------------------------------------------------------------------- /image/88/bug.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/youngwind/blog/HEAD/image/88/bug.gif -------------------------------------------------------------------------------- /image/89/bug.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/youngwind/blog/HEAD/image/89/bug.gif -------------------------------------------------------------------------------- /image/90/bug.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/youngwind/blog/HEAD/image/90/bug.png -------------------------------------------------------------------------------- /image/v-tap.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/youngwind/blog/HEAD/image/v-tap.gif -------------------------------------------------------------------------------- /image/前端控二维码.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/youngwind/blog/HEAD/image/前端控二维码.jpg -------------------------------------------------------------------------------- /image/84/demo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/youngwind/blog/HEAD/image/84/demo.gif -------------------------------------------------------------------------------- /image/87/finish.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/youngwind/blog/HEAD/image/87/finish.gif -------------------------------------------------------------------------------- /image/87/finish.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/youngwind/blog/HEAD/image/87/finish.png -------------------------------------------------------------------------------- /image/87/rough.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/youngwind/blog/HEAD/image/87/rough.gif -------------------------------------------------------------------------------- /image/88/demo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/youngwind/blog/HEAD/image/88/demo.gif -------------------------------------------------------------------------------- /image/89/data.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/youngwind/blog/HEAD/image/89/data.png -------------------------------------------------------------------------------- /image/89/finish.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/youngwind/blog/HEAD/image/89/finish.gif -------------------------------------------------------------------------------- /image/90/demo1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/youngwind/blog/HEAD/image/90/demo1.gif -------------------------------------------------------------------------------- /image/90/demo2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/youngwind/blog/HEAD/image/90/demo2.gif -------------------------------------------------------------------------------- /image/90/show.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/youngwind/blog/HEAD/image/90/show.png -------------------------------------------------------------------------------- /image/92/demo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/youngwind/blog/HEAD/image/92/demo.png -------------------------------------------------------------------------------- /image/92/extend.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/youngwind/blog/HEAD/image/92/extend.png -------------------------------------------------------------------------------- /image/93/demo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/youngwind/blog/HEAD/image/93/demo.gif -------------------------------------------------------------------------------- /image/94/demo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/youngwind/blog/HEAD/image/94/demo.gif -------------------------------------------------------------------------------- /image/87/directive.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/youngwind/blog/HEAD/image/87/directive.gif -------------------------------------------------------------------------------- /image/92/component.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/youngwind/blog/HEAD/image/92/component.png -------------------------------------------------------------------------------- /image/94/events-init.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/youngwind/blog/HEAD/image/94/events-init.png -------------------------------------------------------------------------------- /image/flex_principle.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/youngwind/blog/HEAD/image/flex_principle.jpg -------------------------------------------------------------------------------- /image/wechat-ali-pay.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/youngwind/blog/HEAD/image/wechat-ali-pay.png -------------------------------------------------------------------------------- /image/93/prop-directive.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/youngwind/blog/HEAD/image/93/prop-directive.png -------------------------------------------------------------------------------- /image/92/component-directive.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/youngwind/blog/HEAD/image/92/component-directive.png -------------------------------------------------------------------------------- /issue_template.md: -------------------------------------------------------------------------------- 1 | # 不要在我的博客开 issue! 2 | # 不要在我的博客开 issue! 3 | # 不要在我的博客开 issue! 4 | # 5 | 6 | # 不要点提交按钮!! 7 | # 不要点提交按钮!! 8 | # 不要点提交按钮!! -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # blog 2 | 梁少峰的个人博客 3 | 4 | 订阅请点 watch, 收藏请点 star, 不要点 fork 5 | 6 | 想在微信上订阅?欢迎关注公众号"前端控" 7 | 8 | ## 2018年 9 | 10 | 1. [JSON.parse 三种实现方式](https://github.com/youngwind/blog/issues/115) 11 | 1. [前端之问,程序员之问,职业之问](https://github.com/youngwind/blog/issues/114) 12 | 1. [浏览器缓存、CacheStorage、Web Worker 与 Service Worker](https://github.com/youngwind/blog/issues/113) 13 | 1. [Vue SSR Demo](https://github.com/youngwind/blog/issues/112) 14 | 15 | ## 2017年 16 | 17 | 1. [单页面应用路由实现原理:以 React-Router 为例](https://github.com/youngwind/blog/issues/109) 18 | 1. [图解 HTTPS:Charles 捕获 HTTPS 的原理](https://github.com/youngwind/blog/issues/108) 19 | 1. [React 事件代理与 stopImmediatePropagation](https://github.com/youngwind/blog/issues/107) 20 | 2. [最小编辑距离问题:递归与动态规划](https://github.com/youngwind/blog/issues/106) 21 | 1. [preact 源码学习系列之二:组件的渲染与更新](https://github.com/youngwind/blog/issues/104) 22 | 1. [preact 源码学习系列之一:JSX解析与DOM渲染](https://github.com/youngwind/blog/issues/103) 23 | 1. [V8引擎探索:如何注入全局变量](https://github.com/youngwind/blog/issues/102) 24 | 1. [webpack源码学习系列之三:loader 机制](https://github.com/youngwind/blog/issues/101) 25 | 100. [webpack源码学习系列之二:code-splitting(代码切割)](https://github.com/youngwind/blog/issues/100) 26 | 99. [webpack源码学习系列之一:如何实现一个简单的webpack](https://github.com/youngwind/blog/issues/99) 27 | 1. [如何实现一个异步模块加载器--以requireJS为例](https://github.com/youngwind/blog/issues/98) 28 | 29 | ## 2016年 30 | 31 | 1. [Mixin、多重继承与装饰者模式](https://github.com/youngwind/blog/issues/97) 32 | 96. [你不知道的回调、异步与生成器](https://github.com/youngwind/blog/issues/96) 33 | 95. [数组遍历、for...of、Interator接口与迭代器模式](https://github.com/youngwind/blog/issues/95) 34 | 1. [vue源码学习系列之十一:组件化原理探索(父子组件通信)](https://github.com/youngwind/blog/issues/94) 35 | 93. [vue源码学习系列之十:组件化原理探索(动态props)](https://github.com/youngwind/blog/issues/93) 36 | 92. [vue源码学习系列之九:组件化原理探索(静态props)](https://github.com/youngwind/blog/issues/92) 37 | 91. [vue早期源码学习系列之八:如何实现"v-repeat"列表渲染](https://github.com/youngwind/blog/issues/91) 38 | 90. [vue早期源码学习系列之七:如何实现"v-if"条件渲染](https://github.com/youngwind/blog/issues/90) 39 | 89. [vue早期源码学习系列之六:如何实现计算属性](https://github.com/youngwind/blog/issues/89) 40 | 88. [vue早期源码学习系列之五:批处理更新DOM](https://github.com/youngwind/blog/issues/88) 41 | 87. [vue早期源码学习系列之四:如何实现动态数据绑定](https://github.com/youngwind/blog/issues/87) 42 | 86. [vue早期源码学习系列之三:如何写一个watch库](https://github.com/youngwind/blog/issues/86) 43 | 85. [vue早期源码学习系列之二:如何监听一个数组的变化](https://github.com/youngwind/blog/issues/85) 44 | 84. [vue早期源码学习系列之一:如何监听一个对象的变化](https://github.com/youngwind/blog/issues/84) 45 | 83. [如何编写一个vue自定义指令](https://github.com/youngwind/blog/issues/83) 46 | 82. [如何开发一个移动web UI组件库:适配篇](https://github.com/youngwind/blog/issues/82) 47 | 81. [如何开发一个移动web UI组件库:vue插件篇](https://github.com/youngwind/blog/issues/81) 48 | 80. [如何开发一个移动web UI组件库:构架篇](https://github.com/youngwind/blog/issues/80) 49 | 1. [Hybrid App中web资源的离线存储与更新机制研究](https://github.com/youngwind/blog/issues/79) 50 | 78. [我为什么要研究Hybrid App ](https://github.com/youngwind/blog/issues/78) 51 | 77. [利用hammer.js解决300ms延时](https://github.com/youngwind/blog/issues/77) 52 | 76. [JSBridge实现原理探索:以toast为例](https://github.com/youngwind/blog/issues/76) 53 | 75. [真机远程调试:chrome://inspect](https://github.com/youngwind/blog/issues/75) 54 | 1. [thief系列之四:从实现getJSON中探索XHR和promise](https://github.com/youngwind/blog/issues/74) 55 | 1. [浏览器history api的研究](https://github.com/youngwind/blog/issues/73) 56 | 72. [浅谈http报文与请求体格式](https://github.com/youngwind/blog/issues/72) 57 | 1. [Mongodb与Mongoose的学习体会](https://github.com/youngwind/blog/issues/71) 58 | 70. [自己动手写一个GithubStarManager](https://github.com/youngwind/blog/issues/70) 59 | 69. [thief系列之三:从实现链式调用中看类数组对象与级联](https://github.com/youngwind/blog/issues/69) 60 | 68. [babel初学者的一些常见误区](https://github.com/youngwind/blog/issues/68) 61 | 1. [如何在redux中捕获处理ajax请求错误](https://github.com/youngwind/blog/issues/67) 62 | 66. [使用react-transition-group引发的this.setState异步问题](https://github.com/youngwind/blog/issues/66) 63 | 65. [webpack打包bundle.js体积大小优化](https://github.com/youngwind/blog/issues/65) 64 | 64. [webpack打包bundle.js依赖分析](https://github.com/youngwind/blog/issues/64) 65 | 63. [thief系列之二:从获取DOM和增删类中看js如何构造一个类](https://github.com/youngwind/blog/issues/63) 66 | 62. [异步回调更优雅的解决方式:async](https://github.com/youngwind/blog/issues/62) 67 | 61. [react-css-transition实战](https://github.com/youngwind/blog/issues/61) 68 | 60. [thief系列之一:总序&&从第一行代码开始](https://github.com/youngwind/blog/issues/60) 69 | 59. [将数组转化成自定义hash键的对象](https://github.com/youngwind/blog/issues/59) 70 | 58. [redux使用的反思:状态存储 ](https://github.com/youngwind/blog/issues/58) 71 | 57. [交互动画系列之三:react动画 ](https://github.com/youngwind/blog/issues/57) 72 | 56. [交互动画系列之二:赛贝尔曲线 ](https://github.com/youngwind/blog/issues/56) 73 | 55. [交互动画系列之一:解决bundle.js首次加载动画问题](https://github.com/youngwind/blog/issues/55) 74 | 54. [rap与mock:接口定义与生成平台](https://github.com/youngwind/blog/issues/54) 75 | 53. [try...catch、express与co错误捕获](https://github.com/youngwind/blog/issues/53) 76 | 52. [自己动手写todolist的后端](https://github.com/youngwind/blog/issues/52) 77 | 51. [nodejs redis实战--如何写登录模块](https://github.com/youngwind/blog/issues/51) 78 | 1. [ie兼容性问题记录](https://github.com/youngwind/blog/issues/50) 79 | 49. [ES6 generator 、yield 与co](https://github.com/youngwind/blog/issues/49) 80 | 1. [shell.js与yargs命令行开发](https://github.com/youngwind/blog/issues/48) 81 | 47. [与脚手架大战:回合2](https://github.com/youngwind/blog/issues/47) 82 | 46. [与脚手架大战:回合1](https://github.com/youngwind/blog/issues/46) 83 | 45. [自己动手写express中间件](https://github.com/youngwind/blog/issues/45) 84 | 44. [nodejs使用sequelize操作数据库](https://github.com/youngwind/blog/issues/44) 85 | 43. [nodejs使用mysql包操作数据库](https://github.com/youngwind/blog/issues/43) 86 | 42. [Selectivizr:让IE6~IE8支持CSS3高级选择器](https://github.com/youngwind/blog/issues/42) 87 | 41. [终端交互——inquire.js](https://github.com/youngwind/blog/issues/41) 88 | 40. [变量检查校验相关:is.js、validator 、JSVerbalExpressions](https://github.com/youngwind/blog/issues/40) 89 | 39. [How to remove "sudo" when npm install -g](https://github.com/youngwind/blog/issues/39) 90 | 38. [一些小技巧的总结](https://github.com/youngwind/blog/issues/38) 91 | 37. [IE8 max-width失效引起的对meta标签的思考](https://github.com/youngwind/blog/issues/37) 92 | 36. [IE8和IE9跨域请求数据兼容性解决方案](https://github.com/youngwind/blog/issues/36) 93 | 35. [jquery.cursor.js:自己编写的光标控制插件](https://github.com/youngwind/blog/issues/35) 94 | 34. [es5-shim和es5-sham](https://github.com/youngwind/blog/issues/34) 95 | 33. [Error: Does Not Satisfy Its Siblings' peerDependencies Requirements](https://github.com/youngwind/blog/issues/33) 96 | 32. [函数自定义属性](https://github.com/youngwind/blog/issues/32) 97 | 31. [浏览器特性检测工具:Modernizr ](https://github.com/youngwind/blog/issues/31) 98 | 30. [利用缓存缩短npm install的时间](https://github.com/youngwind/blog/issues/30) 99 | 29. [ie8 chartjs兼容性解决方案](https://github.com/youngwind/blog/issues/29) 100 | 28. [ie8 placeholder兼容性解决方案](https://github.com/youngwind/blog/issues/28) 101 | 27. [ie8 上传文件后提示下载文件](https://github.com/youngwind/blog/issues/27) 102 | 26. [从gulpfile.js的warning联想到软件的腐败](https://github.com/youngwind/blog/issues/26) 103 | 25. [redux组织代码之:分割action](https://github.com/youngwind/blog/issues/25) 104 | 24. [css样式融合与类继承](https://github.com/youngwind/blog/issues/24) 105 | 23. [react滚动加载之————react-lazy-load](https://github.com/youngwind/blog/issues/23) 106 | 22. [react组件动态处理className](https://github.com/youngwind/blog/issues/22) 107 | 21. [scss-lint实战碰到的一些问题以及解决方案](https://github.com/youngwind/blog/issues/21) 108 | 20. [全局css的终结——css module](https://github.com/youngwind/blog/issues/20) 109 | 19. [代码质量之:scss-lint](https://github.com/youngwind/blog/issues/19) 110 | 18. [组件编写规范之:proptypes](https://github.com/youngwind/blog/issues/18) 111 | 112 | ## 2015年 113 | 114 | 1. [react-router 与 history的版本匹配问题](https://github.com/youngwind/blog/issues/17) 115 | 16. [react-native:寻找像写scss那样写react native 样式的方法](https://github.com/youngwind/blog/issues/16) 116 | 15. [初探react-native踩到的一些坑以及解决方案](https://github.com/youngwind/blog/issues/15) 117 | 14. [在react中使用箭头函数引发的对this的思考](https://github.com/youngwind/blog/issues/14) 118 | 13. [代码质量之:eslint](https://github.com/youngwind/blog/issues/13) 119 | 12. [单元测试之:mocha和chai](https://github.com/youngwind/blog/issues/12) 120 | 11. [redux精简代码之--actionType与redux-action-utils](https://github.com/youngwind/blog/issues/11) 121 | 10. [redux精简代码之--抽象select函数和mapDispatchToProps函数](https://github.com/youngwind/blog/issues/10) 122 | 9. [react 禁止“事件冒泡” ](https://github.com/youngwind/blog/issues/9) 123 | 8. [config.js文件引入env字段区分测试和开发环境](https://github.com/youngwind/blog/issues/8) 124 | 6. [gulp-preprocess 让你的项目只需要一个配置文件](https://github.com/youngwind/blog/issues/7) 125 | 5. [利用代码片段偷懒:dash snippets](https://github.com/youngwind/blog/issues/6) 126 | 4. [git技巧之 --set-upstream](https://github.com/youngwind/blog/issues/5) 127 | 3. [code review](https://github.com/youngwind/blog/issues/4) 128 | 2. [记一次如何找到Object.assign()编译方法的历程](https://github.com/youngwind/blog/issues/3) 129 | 7. [babel配置文件的使用](https://github.com/youngwind/blog/issues/2) 130 | 1. [初探lodash](https://github.com/youngwind/blog/issues/1) 131 | 132 | 133 | 134 | # 捐助 135 | 136 | 为什么要捐助?一篇好文章可以帮助你节省大量的时间,而你的时间是相当宝贵的。 137 | 向文章的作者提供小额捐助,可以鼓励作者写出更好的文章。这是一种良性循环,现在就行动吧! 138 | 鼓励留言,让我认识你。 139 | 140 | ![打赏](./image/wechat-ali-pay.png) 141 | 142 | # 其他订阅方式 143 | 我们都知道,GitHub Blog 的订阅方式用起来实在是不尽人意,star 的话接收不到新 issue 通知,watch 的话有关无关通通都会接到通知,不想看的还得一个一个 unsubscribe,挺麻烦的。怎么办呢?下面是一些可供参考现成解决方案。 144 | 145 | 1. [github-blogs 优化意见收集](https://github.com/yutingzhao1991/github-blogs-weekly/issues/18), By yutingzhao1991 146 | 2. [如何使用 Feed 订阅 GitHub Issues](https://imsun.net/posts/gh-feed/), By 孙士权 147 | --------------------------------------------------------------------------------