写点什么

Duktape:在 C/C++ 项目中嵌入 JavaScript

  • 2014-12-10
  • 本文字数:1013 字

    阅读完需:约 3 分钟

软件可能正在吞噬世界,而 JavaScript 又可能正在吞噬软件世界。凭借可以嵌入到任何 C/C++ 项目中的、完整兼容 ECMAScript 5 的引擎, Duktape 使得 JavaScript 超越了浏览器或服务器的界限。

Duktape 较小的代码库、简单的构建系统,使其非常适合嵌入在其他系统中使用。从技术角度看,它本质上和 Lua 项目很像,但是它运行的 JavaScript 却有着更大的生态系统和更多的开发者。——Tim Caswell

尽管 Lua 并不比 JavaScript 年长多少,但是 JavaScript 在浏览器中、在服务器上(通过 node.js),无处不在,从而获得了更大的认可。对于想嵌入一门脚本语言的项目,Duktape 支持使用一种非常流行的语言及其生态系统。Duktape 项目的创建者 Sami Vaarala 指出,“最初动机就是想为 JavaScript 创建一个类似 Lua 的实现。”

使用 Duktape 非常简单,只需要把 duktape.c 和 duktape.h 添加到项目中。JavaScript 和 C 之间的绑定是双向的,所以可以相互调用。“Hello World!”示例如下:

复制代码
#include "duktape.h"
int main(int argc, char *argv[]) {
duk_context *ctx = duk_create_heap_default();
duk_eval_string(ctx, "print('Hello world!');");
duk_destroy_heap(ctx);
return 0;
}

Tim Caswell 摘取了 Duktape 的核心,用 Dukluv 加以扩展,创建了一个较小的“针对小型设备的类 node.js 环境”。Caswell 提到,他的项目加入了 libuv 到 Duktape 的绑定:

使得 Duktape 可以访问操作系统,从而成为一个支持非阻塞 I/O、定时器(timer)、子进程,并支持加载 libuv 所提供的有用的工具函数的完整通用编程环境。

需要嵌入脚本语言的需求并不新鲜。电子游戏已经这么干了好多年了,比如魔兽世界就使用了 Lua,用于定制界面。Stack Overflow 上有一个很受欢迎的回答指出,Lua 之所以常用,原因在于:

Lua 很小,可移植,而且是用 ANSI C 实现的,易于修改;容易嵌入到其他项目中,好扩展,而且对于游戏开发者最重要的是,运行时占用的内存非常少。

像 SpiderMonkey 和 V8 等浏览器引擎也可以嵌入在其他项目中,但是它们很庞大,不适合小型应用。Caswell 说,对于简单的任务或低功率的机器,它们“太过重量级”了。 Espruino 项目也为微控制器提供了 JavaScript,但是它和 ECMAScript 的兼容性只在 95% 左右,而 Duktape 是完全兼容的。

Duktape 基于 MIT 许可协议开源,源代码托管在GitHub 上。使用过的开发者都对其丰富的文档赞口不绝。

查看英文原文: JavaScript on a Toaster: Embedded JavaScript with Duktape

2014-12-10 12:046788
用户头像
臧秀涛 略懂技术的运营同学。

发布了 300 篇内容, 共 149.0 次阅读, 收获喜欢 35 次。

关注

评论

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

AI口语练习APP的对话练习

北京木奇移动技术有限公司

软件外包公司 AI口语练习 AI口语学习

JetBrains CLion v2024.3.4中文激活安装教程 附永久密钥

Rose

加快培育新质生产力,天翼云息壤智算一体机引领国产AI新征程

科技热闻

MacDroid Pro for mac(安卓手机数据传输助手)2.3激活版

Rose

仓库管理 RPA 技术全解析:优势、应用场景与厂商

Techinsight

RPA Agent 仓库管理系统

从德勤“小勤人”说起:财务RPA如何革新财务工作全流程?

Techinsight

RPA 财务管理 财务办公 Agent智能体

Typora:极简主义者的Markdown写作神器

Rose

开源创意点亮生态未来 第二届OpenHarmony创新应用挑战赛圆满收官

科技热闻

MES中的四大现场执行管理模式详解

万界星空科技

数字化转型 制造业 mes 万界星空科技mes 生产管理MES系统

干货!RPA 化解电商对账复杂流程全解析

Techinsight

电商 电商节 AI Agent

Red Giant for Mac2025(红巨人调色插件套装包含Trapcode、Magic Bullet、VFX)

Rose

京东联盟广告生成式推荐探索与实践-DPO多目标优化

京东零售技术

Color Wheel for Mac(mac色轮工具)v8.5中文激活版

Rose

人工智能丨ChatGPT 免费开放网络搜索,能否挑战 Google 的搜索霸主地位?

测试人

绕过 RAG 实时检索瓶颈,缓存增强生成(CAG)如何助力性能突破?

Baihai IDP

程序员 AI LLMs GenAI CAG

35W+京东商家共同选择的京点点AIGC平台,内容生成妙在哪里? | 京东零售技术实践

京东零售技术

全面开测 - 零门槛,即刻拥有DeepSeek-R1满血版,百万token免费用

小隐乐乐

JetBrains WebStorm v2024.3.4 (JavaScript集成开发环境) 中文激活版

Rose

TechSmith Snagit v2024.4.1 中文版 mac/win最强截图工具

Rose

课程质量评估系统(源码+文档+讲解+演示)

深圳亥时科技

观测云产品更新 | 可用性监测、场景图表、指标管理等优化

观测云

产品迭代

浅谈Tox之一

天翼云开发者社区

Python 自动化测试 Tox

AI口语练习APP的主要功能

北京木奇移动技术有限公司

软件外包公司 AI口语练习 AI口语学习

Elasticsearch:使用阿里云 AI 服务进行向量化和重新排名

阿里云大数据AI技术

人工智能 elasticsearch Qwen DeepSeek

Capture One 23 Pro:专业摄影师的终极RAW编辑工具

Rose

「工业4.0」智慧化工厂解决方案,智慧化工园区总体规划设计方案

金陵老街

智慧园区 智慧化工园区

淘宝拍立淘图片搜索API接口指南(淘宝API系列)

tbapi

淘宝API接口 淘宝图片搜索接口 淘宝拍立淘接口

2025新趋势:传统车企数字化转型有新招啦!

Techinsight

AI RPA 车企 车企数字化 Agent智能体

法院信息化 4.0 版,RPA 如何革新司法流程?

Techinsight

法院 信息化建设 RPA Agent Agent智能体

Beyond Compare 5:文件对比与同步的终极工具

Rose

Duktape:在C/C++项目中嵌入JavaScript_JavaScript_David Iffland_InfoQ精选文章