写点什么

新 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:119597
用户头像

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

关注

评论

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

“你还活着吗?” “我没死,只是网卡了!”——来自分布式世界的“生死契约”

poemyang

分布式 分布式协议

微信赞赏系统介绍

微擎应用市场

网校培训答题王系统介绍

微擎应用市场

转型技术Leader不能错过的几点建议

丛风

Leader

保护身份安全:FIDO2认证在钓鱼攻击中的应用

运维有小邓

倒计时3天| 9月12日矩阵起源产品发布会重磅演讲嘉宾抢先看!

MatrixOrigin

数据库 AI 发布会 GenAI

6 个最佳无代码 IT 资产管理工具推荐

NocoBase

开源 低代码 无代码 IT资产管理 itam

四方合力推进菁彩Vivid技术应用,引领电影产业视听体验革新

极客天地

你到底是不是个高级程序员

丛风

白血病细胞检测系统(YOLOv8+PyQt5)源码分享

申公豹

人工智能

怎么折都全面!购新机送1600+元“鸿蒙有礼”,承包我的会员自由

最新动态

从工具到智能体:RPA突破天花板的三大路径

Techinsight

AI 到底能不能替代人类编程

丛风

编程

【开发者体验活动】OpenTiny NEXT 前端智能化解决方案应用实践,快来体验吧~

OpenTiny社区

开源 AI 前端 OpenTiny

RPA的天花板真的到了吗?智能体正打开下一个市场

Techinsight

Go语言是不是当今最好的语言

丛风

Go

用 PJMan 模板导入,3 分钟搞定专业甘特图,项目规划效率翻倍

Tecjt_锦图科技

政府与军事网络安全的Bash内核级脚本编程实战

qife122

Bash脚本 蓝队防御

BOE(京东方)“照亮成长路”公益项目走进富平县 科技赋能教育树立可持续发展新标杆

爱极客侠

MCP vs. Agent:定义 | 区别 | 主流Agent智能体工具盘点

职场工具箱

人工智能 AI 在线白板 agent MCP

怎么选适合企业的RPA财务机器人?

Techinsight

编程神作《人月神话》

丛风

具身智能助力医疗普惠,智源清华联合研发全自主颈动脉超声机器人登刊 Nature Communications

智源研究院

关于敏捷开发的干货

丛风

敏捷开发

从一个例子引发的模型设计的思考

丛风

模型设计

矩阵起源助力金盘科技开启智能新征程,CEO王龙出席武汉AI Factory大会

MatrixOrigin

智能制造 AI智能应用 转型升级

您的数据,正在“喂饱”还是“饿死”你的大模型?

MatrixOrigin

AI 数据 大模型

基于YOLOv8的打架斗殴暴力行为智能识别项目源码(目标检测)

申公豹

人工智能

深度解析京东图片搜索API:从图像识别到商品匹配的算法实践

tbapi

京东图片搜索接口 京东拍立淘API 京东图片搜索API 京东图片API

毕业设计、课题要用微信小程序,HTTPS域名、服务器如何一步到位?

贝锐

微信小程序 https 域名

HarmonyOS实现快递APP自动识别地址

程序员潘Sir

鸿蒙 HarmonyOS HarmonyOS NEXT

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