番禺路 x 淮海西路

827 的始发站,车窗外飘着雨夹雪。从彗星的学校后门走出来,我的心跳极度缓慢,一个问题始终盘旋在我的脑海中 —— 我要成为什么样的人。 彗星是我的初中同学,在这里做心理学研究,而她不久就要去另一座城市继续搞学术了。我们同在这座城市三年,但各自忙自己的事情,聚首的次数恐怕两只手掌就能数得下来。无论是性格还是所处的...

怎样值回技术分享会的门票?—— 聊聊 D2 13th.

# 作为一个资「浅」工程师,我一直以来对技术分享会有种爱恨交织的情感,「爱」是因为可以感受到职业前沿的脉动,「恨」则是因为期待满载技术回家的期待打了水漂 —— 「我在哪,他是谁,讲的什么玩意我咋听不懂?」。于是听一场分享会的印象变成了:带着焦虑前去,坐在会场懵逼,脑袋空空回家,Nothing changes。 ...

8012 见闻

# 都 8012 年了,人类怎么还在流行写年终总结呢?想来想去,也许是成年人忙忙碌碌,好不容易逮着个机会,给生活一些「仪式感」。时间不以人的意志流淌,所以人只能改变自己的感知系统,让时间「慢」一点。慢下来,想清楚一些重要的事情;慢下来,消化一些囫囵吞下的瞬间,然后接着赶路。展开我的这一年,常有波澜,偶有平静。 一...

Webpack 打包出的模块是怎样运行的?(下)

# 上篇讨论中 我们探索了 Webpack 是如何整合模块并让其有序地运行在浏览器中的,为了简化流程,我们只涉及了两个模块。 这样两个小模块,将它们打包进一个 main.js 文件,总体积也不会发生数量级的变化,但实际项目中,需要用到的模块数量和大小都足以让 main.js 爆发式膨胀,如果我们此时还坚持这个模...

Webpack 打包出的模块是怎样运行的?(上)

# Webpack 是时下最流行的前端打包工具,它打包开发代码,输出能在各种浏览器运行的代码,提升了开发至发布过程的效率。 你可能已经知道,这种便捷是由 Webpack 的插件系统带来的,但我们今天先把这些概念放在一边,从简单的实践开始,探索 Webpack 打包出的代码是如何在浏览器环境运行的。 简单配置配...

狙杀页面卡顿 —— Performance 指南

本文首发于知乎饿了么前端专栏 今天介绍下 Chrome dev tools 家族的一个小兄弟,它在 Chrome 57 之前叫作「Timeline」,而现在换了个更长的马甲 —— 「Performance」,毕竟名字要「长~~~~~~~~~」更能吸引注意。 也许你曾不经意启动过这个工具,看见里面五颜六色的图表...

再见吧👋 React dangerouslySetInnerHTML

# 背景在 React 项目中常会遇到渲染 HTML 内容的情况。可以利用 react 的 dangerouslySetInnerHTML 属性,完成基础开发。 示例: 12345678function createMarkup() { return {__html: 'First &...

2017,进步

转眼间,就到了写第二篇年终总结的时候了。有人说工作以后时间会过得非常快,快到你还没来得及咀嚼就下肚了。我不得不承认很有这种感觉,但并非没有味道。相反,2017 对我来说,又是很有味道的一年,以至于将它咽下之后,还能回味无穷。想想 2017 年我的关键词,应该是进步。 担子2016-2017 年中,作为无畏的新人小...

手把手教你撸一个 Webpack Loader

经常逛 webpack 官网的同学应该会很眼熟上面的图。正如它宣传的一样,webpack 能把左侧各种类型的文件(webpack 把它们叫作「模块」)统一打包为右边被通用浏览器支持的文件。webpack 就像是魔术师的帽子,放进去一条丝巾,变出来一只白鸽。那这个「魔术」的过程是如何实现的呢?今天我们从 webp...

【话说 Redux 源码(五)】applyMiddleware —— Redux 的拓展坞

这是本 Redux 源码阅读历程的第五篇文章,我们聊聊 applyMiddleware。在此假设你已经对 Redux 中间件有一定认识,建议先阅读官方文档。 为什么有 applyMiddleware ?在对 createStore 的 API —— dispatch 进行分析时,我们知道 dispatch 只接收...