IT技术博客大学习 共学习 共进步
首页 / 小橘子D dorange
IT 2016-04-02 13:18:32 / 累计浏览 2,760

好用的CSS模块化打包工具CSS-Combo

这篇讲的是如何用一个轻量工具解决CSS开发中的模块化管理难题。作者从团队实践出发,指出CSS开发长期缺乏像JS那样成熟的模块化方案,导致大型项目样式文件臃肿、维护困难。 核心思路是利用CSS原生的`@import`语法。在开发时,将样式拆分成多个子模块文件(如`header.css`、`layout.css`),然后在一个主入口文件中按需引入。这种方式浏览器直接支持,方便本地调试和团队协作,模块职责清晰,增删功能也只需注释掉对应的`@import`行。 不过,直接使用`@import`会导致线上性能问题(如请求过多)。因此,作者开发了配套的NodeJS工具 **CSS-Combo**。开发者在上线前运行简单命令,即可将所有通过`@import`引入的模块合并、压缩成一个CSS文件,兼顾了开发时的灵活性与上线时的性能。 文章还分享了利用此模块化方案进行线上调试的技巧(如通过URL参数切换源码与打包文件),以及关于`@import`语法规则的最佳实践。对于仍不习惯使用LESS/SASS等预处理器的团队,这是一种原生、直接的CSS模块化与打包解决方案。

IT 2016-03-21 14:07:28 / 累计浏览 2,040

探究 Node.js 中的 drain 事件

这篇讲的是 Node.js 中一个容易被忽视的事件——`drain`,作者从自己频繁看到却不知其所以然的使用场景出发,带着“什么时候触发”和“能用来干嘛”的疑问,进行了一番探究。 核心发现直指 `socket.write` 的返回值与底层“高水位线”(`highWaterMark`,默认 16KB)的关系:只有当写入的数据量累积超过这个阈值,`write` 才会返回 `false`,并在缓冲区被清空后触发 `drain` 事件。这解释了为什么简单的数据写入或高并发但数据处理极快的场景下,事件往往不会出现。 作者通过传输大文件的 HTTP 服务器实验,成功复现了事件触发,并揭示了它的核心作用——**用于实现流量控制,避免内存无限增长**。最佳实践是:当 `write` 返回 `false` 时暂停读取或生产数据的流,在 `drain` 事件触发后恢复,从而根据消费速度反向调节生产速度。 文章最后通过内存监控数据的对比,直观地验证了这种流控制策略在防止内存泄漏方面的必要性和有效性。