OurJS


OurJS-我们的JS, 我们的技术-IT文摘; 专注JS相关领域;
我们热爱编程, 我们热爱技术;我们是高大上, 有品味的码农;

欢迎您订阅我们的技术周刊


我们会向您分享我们精心收集整理的,最新的行业资讯,技术动态,外文翻译,热点文章;
我们使用第三方邮件列表向您推送,我们不保存您的任何个人资料,注重您的隐私,您可以随时退订,

欢迎分享您的观点,经验,技巧,心得

让我们一起找寻程序员的快乐,探索技术, 发现IT人生的乐趣;


本网站使用缓存技术每次加载仅需很小流量, 可在手机中流畅浏览;
如果您发现任何BUG,请即时告知我们: ourjs(at)ourjs.com

Duktape:一个新的小巧的超精简可嵌入式JavaScript引擎


分享到
分类 技术前沿   关键字 开源   发布 ourjs  1418359733939
注意 转载须保留原文链接,译文链接,作者译者等信息。  
Duktape是一个可嵌入的Javascript引擎,主要关注便携性和精简及紧凑性。
Duktape很容易集成到C/C++项目: 添加duktape.c和duktape.h到您的build中,并使用Duktape API从C代码中,调用ECMAScript代码的功能,反之亦然。


主要特性:

  • 嵌入式,便携,小巧:
    200kB的代码
    46KB RAM启动(X86,默认选项)
    22KB RAM启动(X86,lowmem选项)
    42kLoC源(不包括注释等)
    可以运行在具有256kB的闪存和96KB RAM的系统平台

  • ECMAScript的E5/ E5.1标准,一些功能从E6草案借来的
  • 内置正则表达式引擎
  • 内置的Unicode支持
  • 最小的平台依赖性
  • 结合"引用计数"和"标记清除"的垃圾收集与回收机制
  • 自定义功能,如协程,内置日志框架,并内置CommonJS的基础模块加载框架(注: 类似node.js中的require/export)
  • 使用ECMAScript ES6 Proxy对象实现的Property virtualization
  • 自由许可证(MIT)


目前状态: 稳定


技术支持:
用户社区Q&A: stackoverflow duktape 标签 
漏洞和新功能要求: GitHub Issues 
一般讨论: IRC #duktape on chat.freenode.net

如何使用


1. 添加到编绎系统

添加 Duktape C 源文件和头文件到你的build。任何build系统均可支持. 发行包里有一个Makefile的范例作为参考. 下面是一个简单的例子:

$ gcc -std=c99 -o test test.c duktape.c -lm
$ ./test
Hello world!


2 初始化上下文(context)

初始化并在你的程序中使用Duktape

/* test.c */
#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;
}

3 添加C语言函数绑定(function bindings)

在Ecmascript(JavaScript)代码中调用C语言的函数,首先要声明你的C函数:

int adder(duk_context *ctx) {
  int i;
  int n = duk_get_top(ctx);  /* #args */
  double res = 0.0;

  for (i = 0; i < n; i++) {
    res += duk_to_number(ctx, i);
  }

  duk_push_number(ctx, res);
  return 1;  /* one return value */
}

注册你的函数, 例如,放到global对象中:

duk_push_global_object(ctx);
duk_push_c_function(ctx, adder, DUK_VARARGS);
duk_put_prop_string(ctx, -2 /*idx:global*/, "adder");
duk_pop(ctx);  /* pop global */

然后你就可以在Ecmascript中调用这个函数:

duk_eval_string(ctx, "print('2+3=' + adder(2, 3));");
duk_pop(ctx);  /* pop eval result */

原文地址: 点此
社区评论 ( Beta版 )
OnceDoc 您自己的企业内容管理系统——文档、流程、知识库、报表、网盘All In One

访问404页面,寻找丢失儿童
 热门文章 - 分享最多
  1. NodeJS就是癌症[2011]
  2. NodeJS会是昙花一现吗?
  3. 提高NodeJS网站的安全性:Web服务器防黑客攻击技巧
  4. JavaScript的设计缺陷?浮点运算:0.1 + 0.2 != 0.3
  5. 2015年的JavaScript:Angular之类的框架将被库取代
  6. 什么是IndexedDB:Web离线数据库入门简介及基础教程
  7. HTML5的TCP和UDP Web Socket API草案定稿
  8. 基于HTML5和JavaScript实现的Winamp MP3播放器
  9. Node.JS编码规范指南教程:教你优雅地写JavaScript代码
  10. 为什么io.js要从Node.js中分裂出来?
  11. AirJD-简单好用的免费建站工具

 相关阅读 - 技术前沿
  1. HTML5的TCP和UDP Web Socket API草案定稿
  2. SpiderMonkey的JavaScript引擎[Firefox]性能超越V8[Chrome]
  3. 基于 Web 的 Go 语言 IDE
  4. Nginx的大计划:将原生支持JavaScript
  5. 不需要密码的登录
  6. 15个最好的HTML5前端响应式框架(2014)
  7. Go 语言基础教程:10分钟入门
  8. Docker究竟是什么,为什么这么流行,它的优点和缺陷有哪些?
  9. JavaScript有可能取代AppleScript成为OS X平台的默认编程脚本
  10. NodeBots-JavaScript在智能设备驱动(物联网)中的崛起

 关键字 - 开源
  1. Mongoose学习参考文档——基础篇
  2. NodeJS 文件(夹)压缩/解压方案(zip/unzip)-Linux上zip相关命令
  3. QRCode:用纯JavaScript实现的微信二维码图片生成器
  4. Stop-Server:用手机关闭你的电脑
  5. 几款开源的图形化Redis客户端管理软件
  6. Node.JS如何调用Chrome打开浏览器链接地址
  7. 开源的多行字符串工具: 在JS中整段地写HTML
  8. 使用NodeJS搭建邮件自动发送服务器
  9. 15个最好用的Node.JS后端框架
  10. Github Pages疑似被封: 再也不能用Pages搭建个人博客了

 欢迎订阅 - 技术周刊

我们热爱编程, 我们热爱技术; 我们是高端, 大气, 上档次, 有品味, 时刻需要和国际接轨的码农; 欢迎您订阅我们的技术周刊; 您只需要在右上角输入您的邮箱即可; 我们注重您的隐私,您可以随时退订.
加入我们吧! 让我们一起找寻码农的快乐,探索技术, 发现IT人生的乐趣;


 关注我们

我们的微信公众号: ourjs-com
打开微信扫一扫即可关注我们:
IT文摘-程序员(码农)技术周刊

ourjs官方微信号