摘要:是一個可嵌入的引擎,主要關注便攜性和精簡及緊湊性。很容易集成到項目添加和到您的中,并使用從代碼中,調用代碼的功能,反之亦然。
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
添加 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 */
via ourjs
原文
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/87670.html
摘要:一個專注于瀏覽器端和兼容的包管理器。一個整合和的最佳思想,使開發者能快速方便地組織和編寫前端代碼的下一代包管理器。完全插件化的工具,能在中識別和記錄模式。健壯的優雅且功能豐富的模板引擎。完整的經過充分測試和記錄數據結構的庫。 【導讀】:GitHub 上有一個 Awesome – XXX 系列的資源整理。awesome-javascript 是 sorrycc 發起維護的 JS 資源列表...
摘要:轉載來源包管理器管理著庫,并提供讀取和打包它們的工具。能構建更好應用的客戶端包管理器。一個整合和的最佳思想,使開發者能快速方便地組織和編寫前端代碼的下一代包管理器。很棒的組件集合。隱秘地使用和用戶數據。 轉載來源:https://github.com/jobbole/aw... 包管理器管理著 javascript 庫,并提供讀取和打包它們的工具。?npm – npm 是 javasc...
摘要:轉載來源包管理器管理著庫,并提供讀取和打包它們的工具。能構建更好應用的客戶端包管理器。一個整合和的最佳思想,使開發者能快速方便地組織和編寫前端代碼的下一代包管理器。很棒的組件集合。隱秘地使用和用戶數據。 轉載來源:https://github.com/jobbole/aw... 包管理器管理著 javascript 庫,并提供讀取和打包它們的工具。?npm – npm 是 javasc...
摘要:官網全新的靜態包管理器。官網一個整合和官網的最佳思想,使開發者能快速方便地組織和編寫前端代碼的下一代包管理器。官網小巧的兼容的所見即所得的富文本編輯器。官網富文本編輯器。官網由制作,適用于每天寫作的富文本編輯器。 1. 包管理器 管理著 javascript 庫,并提供讀取和打包它們的工具。 npm:npm 是 javascript 的包管理器。官網 cnpm:cnpm 是 由于國...
摘要:日期和時間處理日期和時間的函數庫。使用中可觀察序列,創建異步基于事件應用程序的函數庫。為分布式系統提供延遲和容錯處理。發布使用本機格式分發應用程序的工具。將程序資源和打包成和的本機文件。圖像處理用來幫助創建評估或操作圖形的函數庫。 好資源要分享原文 譯者 唐尤華 翻譯自 github akullpp 構建 這里搜集了用來構建應用程序的工具。 Apache Maven:Mave...
閱讀 1294·2023-04-25 19:33
閱讀 1175·2021-10-21 09:39
閱讀 3647·2021-09-09 09:32
閱讀 2627·2019-08-30 10:58
閱讀 1615·2019-08-29 16:17
閱讀 880·2019-08-29 15:29
閱讀 2892·2019-08-26 11:55
閱讀 2661·2019-08-26 10:33