写点什么

新 JavaScript 库的激动人心之处

  • 2015-01-19
  • 本文字数:1980 字

    阅读完需:约 6 分钟

近期在 GitHub 上出现了大量新的 JavaScript 库,我们要来看一下其中非常棒的一些库。

QuaggaJS: 完全使用 JavaScript 编写的条形码扫描程序

QuaggaJS 是一种条形码扫描程序,完全使用 JavaScript 编写,支持对各种类型的条形码——像 EAN 和 CODE128——的实时定位和解码。

尽管已经存在各种各样的条形码库,但它还是从头编写的,而并没有从流行的 zxing 库移植过来。 QuaggaJS 实现的特性是一种条形码扫描程序,它能够在图形中找到类似于条形码的样式,得到估计的边界框,包括旋转的情况。 这样,你就可以在图形中做很智能的二维码识别。

如果你想要完全利用 QuaggaJS 的优势,那么浏览器需要支持 getUserMedia 这个 API,它在最新版本的 Firefox、Safari、Chrome 和 Opera 中都已经实现。

这个库暴露了以下 API:

Quagga.init(config, callback)
这个方法会根据给定的配置和回调函数对库进行初始化,回调函数会在载入过程完毕后调用。 如果配置了实时检测,那么初始化过程还会请求访问相机。

Quagga.start()
当库初始化之后,start() 方法会启动视频流,并开始对图像进行定位和解码。

Quagga.stop()
如果当前解码器在运行,那么在调用 stop() 之后,解码器就不会再处理任何图像。

Quagga.onDetected(callback)
注册一个回调函数,它会在成功定位和解码一个条形码模式之后触发。 在调用回调函数的时候,解码后的数据会作为第一个参数。

Quagga.decodeSingle(config, callback)
和上述的方法不同,这个方法不会依赖于 getUserMedia,而会在单独的图像上处理。 提供的回调函数和 onDetected 中的一样,会包含解码后的数据作为第一个参数。

The QuaggaJS 示例库中包含了更多示例和用例。

Lining.js: 为 CSS web 排版所用的 JavaScript 插件

Lining.js 是用来处理带有元素的单独行的库。 你只需要在元素上增加 data-lining 属性,就可以使用 Lining.js,然后使用 CSS 来设置它的样式。

在 CSS 中我们已经拥有::first-line 这个选择器,可以在元素的第一行上应用样式。 但并没有类似于::nth-line()、::nth-last-line() 或者::last-line 之类的选择器。 Lining.js 对你的文本提供了完整的行控制,如下示例所示:

复制代码
<div class="poem" data-lining="">Some text...</div>
<style type="text/css">.poem .line[first] { /* `.poem::first-line`*/ }
.poem .line[last] { /* `.poem::last-line` */ }
.poem .line[index="5"] { /* `.poem::nth-line(5)` */ }
.poem .line:nth-of-type(-n+2) { /* `.poem::nth-line(-n+2)` */ }
.poem .line:nth-last-of-type(2n) { /* `.poem:::nth-last-line(2n)` */ }
</style>
<script src="YOUR_PATH/lining.min.js"></script>

现在,Lining.js 只支持主要浏览器,像 Chrome、Firefox、Safari 和 Opera。 但不支持 IE。

InteractJS: 使用 JavaScript 实现拖放、缩放和多点触控手势

InteractJS 是一个 JavaScript 模块,它为最新的浏览器(包括 IE8 以上版本)增加了拖放、缩放和多点触控手势,并带有惯性和快照功能。

这个库的主要目的是替换 jQuery UI 所提供的功能。 因此,使用 InteractJS 来编写的 web 应用在智能手机和平板上会更加易用。 InteractJS 是一个轻量级的库,可以与 SVG 技术协作,处理多点触控输入,而把渲染元素以及设置其样式的任务留给了应用程序。

官方的 InteractJS 站点提供了拖拽、快照、缩放和多点触控旋转的示例和用例。

TreeJS: 构建和操作可挂钩的树

Tree.js 是一种用来构建和操作可挂钩的树的 JavaScript 库。 对于查找和遍历目录结构,它是一种很有用的插件。

想象一下,你在 web 应用程序中有一个管理部分,需要浏览文件系统。 那么使用 Tree.js,你就可以像下面这样来展示文件系统:

复制代码
javascript
var myTree = Tree.tree({
    children: [
        {
            name: 'dupuis',
            children: [
                {
                    name: 'prunelle',
                    children: [
                        {
                            name: 'lebrac',
                            job: 'designer'
                        },
                        {
                            name: 'lagaffe',
                            firstname: 'gaston',
                            job: 'sleeper'
                        },
                    ]
                }
            ]
        }
    ]
});

为了找到一个节点,你可以传递任意一个有效的目录结构作为参数,就可以在这个树中搜索。

复制代码
javascript
var lebrac = myTree.find('/dupuis/prunelle/lebrac');
lebrac.data() // { name: 'lebrac', job: 'designer' }
lebrac.attr('job'); // designer
lebrac.path(); // /dupuis/prunelle/lebrac

GitHub 上的 The Tree.js 库提供了其他使用挂钩和保证(promises)的案例。

查看英文原文: What’s Exciting in New JavaScript Libraries

2015-01-19 17:119460
用户头像

发布了 340 篇内容, 共 142.4 次阅读, 收获喜欢 13 次。

关注

评论

发布
暂无评论
发现更多内容

京东商品详情接口在电商行业中的重要性及实时数据获取实现

Noah

DevSecOps研讨会年终专场来啦!邀您共探如何打好DevOps基础,赋能创新

龙智—DevSecOps解决方案

京东面试:说说Cookie、Session和Token的区别?

王磊

Java 面试

HarmonyOS振动效果开发指导

HarmonyOS开发者

HarmonyOS

如何通过追踪用户旅程,找到流失用户

Footprint Analytics

区块链游戏 Web 3.0

KubeWharf:解析云原生未来的分布式操作系统

数字扫地僧

KubeWharf

【高效视频处理】体验火山引擎多媒体处理框架 BMF

数字扫地僧

BMF

给 Web 前端工程师看的用 Rust 开发 wasm 组件实战 | 京东云技术团队

京东科技开发者

rust 前端 webassembly 前端组件

08 | 栈:如何实现浏览器的前进和后退功能

鲁米

MYSQL EXPLAIN 执行计划 | 京东物流技术团队

京东科技开发者

MySQL 数据库 EXPLAIN EXPLAIN执行计划

手把手带你离线部署Walrus,体验极简应用交付

SEAL安全

应用交付 应用交付平台 12 月 PK 榜 Walrus

一键自动修改和翻新OC源码,解决苹果审核4.3和马甲问题

优化开发者体验,推动API测试行业发展,SmartBear收购API设计和文档领域领导者Stoplight

龙智—DevSecOps解决方案

API

关于Nuxt.js 服务端组件的使用

秃头小帅oi

Dapp燃烧铸币模式系统开发丨智能合约技术开发

l8l259l3365

KubeWharf:基于Kubernetes的分布式操作系统,助力云原生化部署和管理

bug菌

Kubernetes 社区征文

NFTScan | 11.27~12.03 NFT 市场热点汇总

NFT Research

NFT NFT\ NFTScan

一次讲清楚京东科技百亿级用户画像平台的探索和实践 | 京东云技术团队

京东科技开发者

数据库 Clickhouse 用户画像 用户画像平台

如何实现高效代码审查,赋能大规模开发

龙智—DevSecOps解决方案

代码审查

深度探索E3PO:360° 视频传输平台的前沿技术与应用

数字扫地僧

E3PO

Wireshark中的ICMP协议包分析

小魏写代码

DDD学习与感悟——总是觉得自己在CRUD怎么办? | 京东云技术团队

京东科技开发者

架构 DDD 软件设计 curd

原来低代码开发部署起来这么简单

伤感汤姆布利柏

前端 低代码 低代码开发

淘宝商品详情接口在电商运营中的应用实例

Noah

智能LED屏幕未来升级方向

Dylan

个性化 定制化 LED显示屏 全彩LED显示屏 led显示屏厂家

对标世界一流!用友已与74家中央企业达成集团级合作!

用友BIP

【FAQ】运动健康服务端侧数据常见问题及解答

HarmonyOS SDK

HMS Core

法律情境扮演、逆向推理文字游戏、AIGC创作……见证AI极致生产力!

飞桨PaddlePaddle

人工智能 AIGC

紫龙游戏解锁Jira与Perforce的游戏开发行业实践

龙智—DevSecOps解决方案

紫龙游戏

新JavaScript库的激动人心之处_JavaScript_Philip De Smedt_InfoQ精选文章