编写浏览器和Node.js通用的JavaScript模块

浏览器 AMD CommonJS JavaScript Node.js 模块化

长期以来JavaScript语言本身不提供模块化的支持, ES6中终于给出了from, import等关键字来进行模块化的代码组织。 但CommonJS、AMD等规范已经被广为使用,如果希望你的JavaScript同时支持浏览器和Node.js, 现在只有这几种方式:

browserify几乎可以保证Node.js下测试通过的代码在浏览器中仍然能够正常使用。 但缺点也很显然:很容易产生冗余代码并生成一个巨大的JavaScript库。 对于微型的JavaScript工具,小心地编码再合适不过了!见下文。

JS实现无限划动的图片全屏浏览

Android jQuery 事件 滑动窗口 全屏

本文意在解释如何使用jQuery实现一个全屏的图片浏览, 并解释其中的加载策略,兼容问题,以及性能相关问题。 如果你需要在生产代码中使用,请直接搜索并使用既有的全屏浏览插件。

本文只探讨如何加载和划动全屏的图片,关于图片如何打开至全屏请参考: 全屏预览图片的动画和自适应布局

无限加载策略

既然是无限划动,就不能获取所有图片同时加载; 因为要有划动效果,因此当前图片的左右两张需要预加载。 所以可以用三张图片作为一个窗口,使用轮换策略来实现一个无限划动的列表。

<div class="lightbox">
  <div class="container">
    <div class="lightbox-item prev"></div>
    <div class="lightbox-item current"></div>
    <div class="lightbox-item next"></div>
  </div>
</div>

谨慎使用代码注释

封装 接口 算法 注释 重构

最令程序员头痛的事情莫过于阅读别人的代码,但其实时间一久阅读自己的代码也会很痛苦。 问题不是出在『自己或别人』,而是在代码本身。 必要的注释可以阐明实现细节和设计意图,以此节约自己和别人的时间。 然而很多时候注释起的作用却适得其反,比如自动生成的过多的注释分散阅读者的注意力, 而过期的失效的注释更是误导阅读者。

Express.js 性能优化

Express.js Chrome HTTP 缓存 性能

本文讨论如何提高Express在生产环境的性能,包括HTTP响应的压缩与缓存, 视图与样式的缓存,以及调试信息优化。

静态文件缓存

可通过缓存静态文件来提高页面载入速度,同时也减轻了服务器负载。 比如设置缓存时间为一天:

var app = express();
app.use(express.static('./assets', {
    maxAge: 864000  // one day
}));

Mongoose 中实现虚拟字段查询

MongoDB mongoose Schema

mongoose为数据模型提供了虚拟属性, 借此可以更加一致地、方便地读写模型属性,类似于C#或Java中的访问器。 我们知道虚拟属性在Query阶段一定是查不到的,因为事实上MongoDB并没有存储这些属性。 但是否可以通过一个拦截器来实现虚拟属性的查询呢?

这个问题很有趣,而且在很多场景下都相当方便。例如:

  • 实现一个暴力的全文检索时,需要对多个字段匹配统一查询词,该查询词可抽象为虚拟属性;
  • 多处都需要进行同一个复杂条件的查询时,可以用虚拟属性封装该查询条件。

事实上,虚拟属性查询和虚拟属性读写都是为了代码复用。

Mac 下编写中文 Beamer

Mac 字体 LaTeX XeTeX 中文

TEX 是一个文档排版系统,通过内容与样式的分离使作者能够专注于文本内容。 例如:可以使用\chapter{<title>}来添加一个章节标题,而不需手动地去选择18号粗体。

TEX is a document preparation system that enables the document writer to concentrate on the contents of their text, without bothering too much about the formatting of it. For example, chapters are indicated by \chapter{⟨title⟩} rather than by selecting 18pt bold. – texdoc clsguide

不得不承认LaTeX的学习曲线堪比VIM,但熟悉LaTeX带来的回报也是其他排版工具难以企及。 神奇的是LaTeX最大的门槛居然在于中文排版。 本科时与LaTeX一起度过的那些昼夜,基本都是在从Windows到Ubuntu拷贝字体, 以及调试CTEX宏包或者XeLatex配置。

本文给出如何在Mac下舒服地编写TEX演示文稿,包括引入中文,以及使用Beamer。

导航: 上一页 下一页

🔝