2天时间,聊今年最热的 Agent、上下文工程、AI 产品创新等话题。2025 年最后一场~ 了解详情
写点什么

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

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

关注

评论

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

哈尔滨等保测评流程:从准备到完成的详细指南

等保测评

企业内网即时通讯软件,怎样的软件适合企业使用?

BeeWorks

即时通讯 IM 私有化部署

从零构建AI测试平台:文档解析与知识库构建全解析

测试人

YashanDB数据库故障诊断与恢复策略解析

数据库砖家

哈尔滨等保测评:企业如何高效通过测评

等保测评

如何通过Python SDK 获取Collection

DashVector

人工智能 数据库 AI 向量检索 大模型

YashanDB数据库故障恢复与备份最佳实践

数据库砖家

企业为什么内部要用专业的即时通讯工具?BeeWorks总结这几点

BeeWorks

即时通讯 IM 私有化部署

TinyEngine 2.8 正式上线:AI能力就位、Docker一键起飞!

OpenTiny社区

开源 前端 低代码

YashanDB数据库管理系统升级与迁移实战教程

数据库砖家

邀请函丨Altair 2025 青年才俊支持计划启动!

Altair RapidMiner

人工智能 AI 仿真 CAE Simlab

首届AI国际人才峰会启幕,智源携手港投公司共筑青年创新生态

智源研究院

人工智能

构建 AI 智能体的实用开源技术栈(框架、计算机与浏览器操控、语音功能、文档理解...)

Baihai IDP

人工智能 AI 智能体 LLM AI Agent

搞懂 ELK 日志系统架构,这一篇就够了(含实战图解)

左诗右码

9个CST电磁仿真软件电路获取S参数的方法

思茂信息

cst cst仿真软件 CST软件

YashanDB数据库故障诊断与快速修复指南

数据库砖家

基于YOLOv8的无人机交通监控-十类城市交通场景目标精准识别【含完整训练源码+部署教程】

申公豹

人工智能

技术干货丨基于SimSolid的塑胶模具温度场瞬态分析

Altair RapidMiner

汽车 制造业 仿真 CAE SimSolid

大数据-80 Spark 从 MapReduce 到 Spark:大数据处理引擎的三代演进全景解析

武子康

scala 大数据 flink spark 分布式

从文本到二进制:HTTP/2不止于性能,更是对HTTP/1核心语义的传承与革新

poemyang

网络协议 RPC HTTP2.0 RPC框架 HTTP/2

YashanDB数据库故障诊断及自动恢复技术

数据库砖家

YashanDB数据库故障自动修复机制详解

数据库砖家

会议室无缝LED视频墙:高效沟通

Dylan

会议室 LED display LED显示屏 投影仪 LED屏幕

详细教程:如何利用nslookup命令查询DNS解析状态?

防火墙后吃泡面

YashanDB数据库故障恢复自动化流程分享

数据库砖家

快时尚电商行业智能体设计思路与应用实践(三)借助 Transcribe/Polly 打造新一代智能语音客服,实现媲美人工客服的对话体验

亚马逊云科技 (Amazon Web Services)

华为云Tokens服务全面接入384超节点,以“大杂烩”优势打造先进算力

华为云开发者联盟

人工智能 华为云 华为云开发者联盟 CloudMatrix384超节点 Tokens

《烟草行政处罚案卷制作与评查平台研发纪实》,深度剖析精益求精的背后历程

中烟创新

欧洲数字化养殖平台 Herdwatch 借力 Iceberg + StarRocks 提升分析能力

StarRocks

数据库 iceberg StarRocks 湖仓一体 Herdwatch

Google Translate 新增 AI 实时翻译和语言学习功能;奥特曼:手机电脑难发挥 AI 潜力,需要更先进硬件丨日报

声网

一篇推文如何引爆一个 AI 硬件项目?Build in Public 到底是什么?丨活动回顾

声网

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