JavaScript 依赖注入实现
随着AngularJS的流行,依赖注入开始在JavaScript领域获得不少的关注。 DI最突出的好处在于开发可复用可测试的代码单元。 本文以简易的代码解释DI的实现机制,更多对DI优缺点的讨论可参考: 什么时候应该使用依赖注入一文。
随着AngularJS的流行,依赖注入开始在JavaScript领域获得不少的关注。 DI最突出的好处在于开发可复用可测试的代码单元。 本文以简易的代码解释DI的实现机制,更多对DI优缺点的讨论可参考: 什么时候应该使用依赖注入一文。
所有人都知道使用.html()
可以获得元素内容,.find()
可以获得子元素。
但这两个方法不是万能的,在很多场景我们需要其他的API。例如:
下文中整理的jQuery获取元素内容的各种方法及其区别,
包括.html()
, .text()
, .children()
, .contents()
。
依赖注入(Dependency Indection, DI)是 IoC 思想的一种实现,用来解决模块间的依赖关系。 该设计模式的基本思想是集中式的模块管理,模块需要的依赖由DI框架统一注入, 模块自身不去主动发现和构建依赖。
JavaScript 长期以来缺乏模块依赖机制,近年来随着前端的变重社区中出现了非常多的模块化标准和方案。 包括 AMD 标准、CommonJS 规范、ES6 Import 等等。 而 DI 不仅仅是一种模块化工具,而是通过控制反转的思想来解决可测试性和复用性问题。
很多时候我们希望在Vim中可以操作文件和目录,例如备份当前文件、 重命名当前文件、创建和删除旧文件、创建和删除目录等。 这些操作在Bash中当然可以很好地完成,但退出Vim会丢失光标位置、Buffer等信息, Harttle当然希望在Vim中完成这些操作。
本文介绍文件和目录的增删改查,同时编辑多个文件请参考这几篇文章:
长期以来JavaScript语言本身不提供模块化的支持,
ES6中终于给出了from
, import
等关键字来进行模块化的代码组织。
但CommonJS、AMD等规范已经被广为使用,如果希望你的JavaScript同时支持浏览器和Node.js,
现在只有这几种方式:
browserify几乎可以保证Node.js下测试通过的代码在浏览器中仍然能够正常使用。 但缺点也很显然:很容易产生冗余代码并生成一个巨大的JavaScript库。 对于微型的JavaScript工具,小心地编码再合适不过了!见下文。
本文意在解释如何使用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>