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

软件可能正在吞噬世界,而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

\\
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值