12 2023 档案
摘要:一、前言 quickjs是标准的js引擎,不可能直接运行ts文件。所以需要对ts文件,进行编译,编译成符合当前版本的js脚本,然后在运行。 二、简单ts例子 安装typescript,就有tsc编译器。使用npm之类安装。使用 tsc --init 创建项目,此时会得到一个tsconfig.js 配
阅读全文
摘要:一、前言 茴香豆的“茴”字有多少种写法?这篇博客不是为了炫技,是JS就是这么多种情况。比如C语言,就只能通过函数调用,没有类的概念。比如Java,就只能通过类、对象的方式。不能单独创建函数。哪怕main函数也要包装成一个class。而JS,即可以提供函数,也可以提供类。 在ES5之前,JS还没有模块
阅读全文
摘要:零、前言 默认的quickjs,是js引擎,需要自己移植类似curl库,才能使quickjs有http请求功能。js引擎+一些本地功能调用=js运行时。 一、libcurl库 这个库的安装或编译,也是比较麻烦的事情,特别是需要使其支持https访问,配置和编译更是麻烦。因此,还是使用上次提到的vcp
阅读全文
摘要:一、前言 这次通过这两篇博客,对libuv再次深入了解。因为后面结合iotjs,txiki.js会有很多地方用到libuv库。同时由于上一篇libuv博文是跟lvgl结合的。这一篇则比较纯粹的见解libuv库的使用。 二、默认的setTimeout例子,了解原理 1 import {setTimeo
阅读全文
摘要:一、模块封装、类封装 通过quickjs,封装JS模块,然后可以通过import 导入对应模块,还可以导入具体的类。全部代码如下。 1 #include "quickjs-libc.h" 2 #include <stdio.h> 3 #include <inttypes.h> 4 #include
阅读全文
摘要:一、使用qjsc编译字节码 hello.js console.log("Hello World") qjsc.exe -c hello.js 1 const uint32_t qjsc_hello_size = 78; 2 3 const uint8_t qjsc_hello[78] = { 4 0
阅读全文
摘要:零、前言 默认quickjs 是有setTimeout函数的实现的。但是由于js的进程与ui进程会有冲突,因此,需要通过重写quickjs的setTimeout,改用系统进程实现才行。 这里以大部分基于quickjs开源的框架中使用最多的libuv作为底层库。 一、编译libuv库 通过github
阅读全文