blog
梁少峰的个人博客
订阅请点 watch, 收藏请点 star, 不要点 fork
想在微信上订阅?欢迎关注公众号"前端控"
2018年
2017年
- 单页面应用路由实现原理:以 React-Router 为例
- 图解 HTTPS:Charles 捕获 HTTPS 的原理
- React 事件代理与 stopImmediatePropagation
- 最小编辑距离问题:递归与动态规划
- preact 源码学习系列之二:组件的渲染与更新
- preact 源码学习系列之一:JSX解析与DOM渲染
- V8引擎探索:如何注入全局变量
- webpack源码学习系列之三:loader 机制
- webpack源码学习系列之二:code-splitting(代码切割)
- webpack源码学习系列之一:如何实现一个简单的webpack
- 如何实现一个异步模块加载器--以requireJS为例
2016年
- Mixin、多重继承与装饰者模式
- 你不知道的回调、异步与生成器
- 数组遍历、for...of、Interator接口与迭代器模式
- vue源码学习系列之十一:组件化原理探索(父子组件通信)
- vue源码学习系列之十:组件化原理探索(动态props)
- vue源码学习系列之九:组件化原理探索(静态props)
- vue早期源码学习系列之八:如何实现"v-repeat"列表渲染
- vue早期源码学习系列之七:如何实现"v-if"条件渲染
- vue早期源码学习系列之六:如何实现计算属性
- vue早期源码学习系列之五:批处理更新DOM
- vue早期源码学习系列之四:如何实现动态数据绑定
- vue早期源码学习系列之三:如何写一个watch库
- vue早期源码学习系列之二:如何监听一个数组的变化
- vue早期源码学习系列之一:如何监听一个对象的变化
- 如何编写一个vue自定义指令
- 如何开发一个移动web UI组件库:适配篇
- 如何开发一个移动web UI组件库:vue插件篇
- 如何开发一个移动web UI组件库:构架篇
- Hybrid App中web资源的离线存储与更新机制研究
- 我为什么要研究Hybrid App
- 利用hammer.js解决300ms延时
- JSBridge实现原理探索:以toast为例
- 真机远程调试:chrome://inspect
- thief系列之四:从实现getJSON中探索XHR和promise
- 浏览器history api的研究
- 浅谈http报文与请求体格式
- Mongodb与Mongoose的学习体会
- 自己动手写一个GithubStarManager
- thief系列之三:从实现链式调用中看类数组对象与级联
- babel初学者的一些常见误区
- 如何在redux中捕获处理ajax请求错误
- 使用react-transition-group引发的this.setState异步问题
- webpack打包bundle.js体积大小优化
- webpack打包bundle.js依赖分析
- thief系列之二:从获取DOM和增删类中看js如何构造一个类
- 异步回调更优雅的解决方式:async
- react-css-transition实战
- thief系列之一:总序&&从第一行代码开始
- 将数组转化成自定义hash键的对象
- redux使用的反思:状态存储
- 交互动画系列之三:react动画
- 交互动画系列之二:赛贝尔曲线
- 交互动画系列之一:解决bundle.js首次加载动画问题
- rap与mock:接口定义与生成平台
- try...catch、express与co错误捕获
- 自己动手写todolist的后端
- nodejs redis实战--如何写登录模块
- ie兼容性问题记录
- ES6 generator 、yield 与co
- shell.js与yargs命令行开发
- 与脚手架大战:回合2
- 与脚手架大战:回合1
- 自己动手写express中间件
- nodejs使用sequelize操作数据库
- nodejs使用mysql包操作数据库
- Selectivizr:让IE6~IE8支持CSS3高级选择器
- 终端交互——inquire.js
- 变量检查校验相关:is.js、validator 、JSVerbalExpressions
- How to remove "sudo" when npm install -g
- 一些小技巧的总结
- IE8 max-width失效引起的对meta标签的思考
- IE8和IE9跨域请求数据兼容性解决方案
- jquery.cursor.js:自己编写的光标控制插件
- es5-shim和es5-sham
- Error: Does Not Satisfy Its Siblings' peerDependencies Requirements
- 函数自定义属性
- 浏览器特性检测工具:Modernizr
- 利用缓存缩短npm install的时间
- ie8 chartjs兼容性解决方案
- ie8 placeholder兼容性解决方案
- ie8 上传文件后提示下载文件
- 从gulpfile.js的warning联想到软件的腐败
- redux组织代码之:分割action
- css样式融合与类继承
- react滚动加载之————react-lazy-load
- react组件动态处理className
- scss-lint实战碰到的一些问题以及解决方案
- 全局css的终结——css module
- 代码质量之:scss-lint
- 组件编写规范之:proptypes
2015年
- react-router 与 history的版本匹配问题
- react-native:寻找像写scss那样写react native 样式的方法
- 初探react-native踩到的一些坑以及解决方案
- 在react中使用箭头函数引发的对this的思考
- 代码质量之:eslint
- 单元测试之:mocha和chai
- redux精简代码之--actionType与redux-action-utils
- redux精简代码之--抽象select函数和mapDispatchToProps函数
- react 禁止“事件冒泡”
- config.js文件引入env字段区分测试和开发环境
- gulp-preprocess 让你的项目只需要一个配置文件
- 利用代码片段偷懒:dash snippets
- git技巧之 --set-upstream
- code review
- 记一次如何找到Object.assign()编译方法的历程
- babel配置文件的使用
- 初探lodash
捐助
为什么要捐助?一篇好文章可以帮助你节省大量的时间,而你的时间是相当宝贵的。 向文章的作者提供小额捐助,可以鼓励作者写出更好的文章。这是一种良性循环,现在就行动吧! 鼓励留言,让我认识你。
其他订阅方式
我们都知道,GitHub Blog 的订阅方式用起来实在是不尽人意,star 的话接收不到新 issue 通知,watch 的话有关无关通通都会接到通知,不想看的还得一个一个 unsubscribe,挺麻烦的。怎么办呢?下面是一些可供参考现成解决方案。
- github-blogs 优化意见收集, By yutingzhao1991
- 如何使用 Feed 订阅 GitHub Issues, By 孙士权