• 2024-02-02quickjs-emscripten webassembly 包
    quickjs-emscripten是基于emscripten将quickjsc版本,编译为了webassembly方便通过npm使用包含的特性支持node以及web使用安全的执行js(支持到es2020)quickjsruntime进行创建以及维护值暴露主机函数到quickjsruntime通过asyncify支持执行异步代码参考使用app.mjs
  • 2023-12-15quickjs运行typescript?
    一、前言quickjs是标准的js引擎,不可能直接运行ts文件。所以需要对ts文件,进行编译,编译成符合当前版本的js脚本,然后在运行。二、简单ts例子安装typescript,就有tsc编译器。使用npm之类安装。使用tsc--init创建项目,此时会得到一个tsconfig.js配置文件。在src目录创建一
  • 2023-12-14quickjs C功能扩展的四种写法
    一、前言 茴香豆的“茴”字有多少种写法?这篇博客不是为了炫技,是JS就是这么多种情况。比如C语言,就只能通过函数调用,没有类的概念。比如Java,就只能通过类、对象的方式。不能单独创建函数。哪怕main函数也要包装成一个class。而JS,即可以提供函数,也可以提供类。在ES5之前,JS
  • 2023-12-11quickjs集成http功能
    零、前言默认的quickjs,是js引擎,需要自己移植类似curl库,才能使quickjs有http请求功能。js引擎+一些本地功能调用=js运行时。一、libcurl库这个库的安装或编译,也是比较麻烦的事情,特别是需要使其支持https访问,配置和编译更是麻烦。因此,还是使用上次提到的vcpkg。通过vcpkg
  • 2023-12-05quickjs模块封装、类封装
    一、模块封装、类封装通过quickjs,封装JS模块,然后可以通过import导入对应模块,还可以导入具体的类。全部代码如下。1#include"quickjs-libc.h"2#include<stdio.h>3#include<inttypes.h>4#include<string.h>5#include"cutils.h"67staticJSC
  • 2023-12-04quickjs加载字节码文件
    一、使用qjsc编译字节码hello.js console.log("HelloWorld") qjsc.exe-chello.js1constuint32_tqjsc_hello_size=78;23constuint8_tqjsc_hello[78]={40x02,0x04,0x0e,0x63,0x6f,0x6e,0x73,0x6f,50x6c,0x65,0x06,0x6c,0x6f,
  • 2023-11-29quickjs调用lvgl函数
    实现本次使用quickjs的最主要目的,就是通过程序动态加载js,然后调用lvgl函数库,实现渲染。以达到类似小程序的效果。后续还会实现类似小程序效果,通过quickjs解析xml(html),编译成js然后调用lvgl库,实现界面渲染。通过quickjs会调用c语言提供的底层功能,如wifi、蓝牙、串口uart、iic
  • 2023-11-28quickjs调用C函数
    QuickJS调用C函数,这个可以参考官方的std、os进行实现。外部库core.h1#include<string.h>2#include"quickjs-libc.h"3#include"cutils.h"45externJSModuleDef*js_init_module_core(JSContext*ctx,constchar*module_name);core.c1#include&qu
  • 2023-11-24嵌入式使用quickjs
    零、前言之前搞过在嵌入式中引入Lua作为脚本,以实现动态执行效果。详见(https://www.cnblogs.com/wunaozai/p/14087370.html)但是众所周知原因,其实Lua远远没有JS好,一方面是目前前端的如日中天,加之前端开源的库很多。很多都可以复用。在选型用哪个JS引擎时,参考了网上的资料,
  • 2023-11-24quickjs入门学习
    由于最近在学习quickjs,把学习过程中遇到的问题和功能验证的过程都记录下来,这篇是quickjs入门学习的目录导航。  本文地址:https://www.cnblogs.com/wunaozai/p/17853962.html