认识soui4js(第1篇)
源代码:https://github.com/soui4js/soui4js
soui4js是soui4+quickjs的结合体。
soui4是一套c++ directui客户端开发框架,soui4js则将soui4的开发语言从C++迁移到了js。
可能有人要问:为什么要使用js来开发?
使用js开发最大的优势就是开发快速,代码写下来就可以运行,测试,同时更方便热更新。
下面先来看一下源代码的代码结构:

下面先介绍一下这几个目录的功能。
bin: 程序运行目录,包括依赖库的dll。
depends: 本项目依赖的两个库(soui4, quickjs)的.h及.lib, .a
doc: 文档目录,目前还只有一个截图
node_modules/@types : 提供vscode编写soui4js的js代码时支持api提示使用的ts文件。包含soui4导出到js空间的所有API的定义。
qjsbind :一个将soui4类型导出到js的绑定支持库,编译输出为一个静态库。
soui4js-host:这是编译生成使用soui4及soui4js的宿主exe的vs工程目录。
soui4js:导出soui4接口到quickjs的代码。要看在soui4js里可以使用哪些api, 除了可以从node_modules/@types查看外,如何实现及使用也可以查看这个工程代码。
utils:一个提供辅助工具api的VS工程,编译后生成一个utils.dll,它是一个js模块,可以在js代码中使用import * as utils from "utils.dll"; 来使用。
wizard: 这是soui4js是一个向导程序,使用xml+js袜,需要使用bin目录下的soui4js-host.exe来运行。参见run_wizard.bat
run_host.bat :执行这个bat会启动bin/soui4js-host.exe, 加载bin/main.js,启动一个js小程序下载运行平台。效果如下图:

run_wizard.bat : 执行这个bat会启动bin/soui4js-host.exe, 加载wizard/main.js,启动一个soui4js的新建工程向导。效果如下:

在项目路径中指定一个路径(为空的时候会自动创建),点击“创建项目”按钮,程序会自动在指定路径中创建一个soui4js的工程框架。
如果您安装有vscode,则会自动使用vscode来打开该工程。您可以在vscode里编辑并运行代码。(代码编辑,调试见下篇)
认识soui4js(第1篇)的更多相关文章
- TGL站长关于常见问题的回复
问题地址: http://www.thegrouplet.com/thread-112923-1-1.html 问题: 网站配有太多的模板是否影响网站加载速度 月光答复: wp不需要删除其他的模板,不 ...
- 故障重现(内存篇2),JAVA内存不足导致频繁回收和swap引起的性能问题
背景起因: 记起以前的另一次也是关于内存的调优分享下 有个系统平时运行非常稳定运行(没经历过大并发考验),然而在一次活动后,人数并发一上来后,系统开始卡. 我按经验开始调优,在每个关键步骤的加入如 ...
- 论:开发者信仰之“天下IT是一家“(Java .NET篇)
比尔盖茨公认的IT界领军人物,打造了辉煌一时的PC时代. 2008年,史蒂夫鲍尔默接替了盖茨的工作,成为微软公司的总裁. 2013年他与微软做了最后的道别. 2013年以后,我才真正看到了微软的变化. ...
- [ 高并发]Java高并发编程系列第二篇--线程同步
高并发,听起来高大上的一个词汇,在身处于互联网潮的社会大趋势下,高并发赋予了更多的传奇色彩.首先,我们可以看到很多招聘中,会提到有高并发项目者优先.高并发,意味着,你的前雇主,有很大的业务层面的需求, ...
- [高并发]Java高并发编程系列开山篇--线程实现
Java是最早开始有并发的语言之一,再过去传统多任务的模式下,人们发现很难解决一些更为复杂的问题,这个时候我们就有了并发. 引用 多线程比多任务更加有挑战.多线程是在同一个程序内部并行执行,因此会对相 ...
- 操作系统篇-调用门与特权级(CPL、DPL和RPL)
|| 版权声明:本文为博主原创文章,未经博主允许不得转载. 一.前言 在前两篇文章(<操作系统篇-浅谈实模式与保护模式>和<操作系统篇-分段机制与GDT|LDT>)中,我们提到 ...
- 通过AngularJS实现前端与后台的数据对接(二)——服务(service,$http)篇
什么是服务? 服务提供了一种能在应用的整个生命周期内保持数据的方法,它能够在控制器之间进行通信,并且能保证数据的一致性. 服务是一个单例对象,在每个应用中只会被实例化一次(被$injector实例化) ...
- javascript动画系列第三篇——碰撞检测
前面的话 前面分别介绍了拖拽模拟和磁性吸附,当可视区域内存在多个可拖拽元素,就出现碰撞检测的问题,这也是javascript动画的一个经典问题.本篇将详细介绍碰撞检测 原理介绍 碰撞检测的方法有很多, ...
- 从0开始搭建SQL Server AlwaysOn 第一篇(配置域控)
从0开始搭建SQL Server AlwaysOn 第一篇(配置域控) 第一篇http://www.cnblogs.com/lyhabc/p/4678330.html第二篇http://www.cnb ...
- 从0开始搭建SQL Server AlwaysOn 第二篇(配置故障转移集群)
从0开始搭建SQL Server AlwaysOn 第二篇(配置故障转移集群) 第一篇http://www.cnblogs.com/lyhabc/p/4678330.html第二篇http://www ...
随机推荐
- Java深度历险(一)——Java字节代码的操纵
[编者按]Java作为业界应用最为广泛的语言之一,深得众多软件厂商和开发者的推崇,更是被包括Oracle在内的众多JCP成员积极地推动发展.但是对于Java语言的深度理解和运用,毕竟是很少会有人涉及的 ...
- 浏览器实时查看日志系统-log.io
log.io 是一个实时日志监控工具,采用 node.js + socket.io 开发,使用浏览器访问,每秒可以处理超过5000条日志变动消息.有一点要指出来的是 log.io 只监视日志变动并不存 ...
- Spring Boot 使用 slf4j 进行日志记录
SLF4J,即简单日志门面(Simple Logging Facade forJava),不是具体的日志解决方案,它只服务于各种各样的日志系统.按照官方的说法,SLF4J 是一个用于日志系统的简单Fa ...
- JavaScript 样式操作
1.类名操作 class类名以字符串的形式存储到标签和Dom元素的属性中,标签属性为class,Dom元素属性为className,两个属性是均支持读取和修改,修改其中的一个会同步至另一个属性 cla ...
- 攻防世界:Crypto习题之easy_RSA
攻防世界:Crypto习题之easy_RSA RSA 加密 在非对称加密算法中,单向函数被广泛应用,用于确保从公钥加密后的密文无法轻易推导出私钥,从而保证数据的安全性.而其中最著名的算法便是 RSA ...
- JAVA8的computeIfAbsent使用方法
基础说明 computeIfAbsent 是 Java 8 引入的 Map 接口中的一个默认方法.它允许你以原子操作的方式在给定键不存在时计算其值,并将其添加到映射中.如果该键已经存在,则返回已存在的 ...
- arcpy获取polygon内环
当使用arcpy获取polygon几何的时候,不能像ao一样获取到内外环,只能获取到单个部件.而part返回的即是一个点组了. 所以只能通过None对象进行分割,确定部件内的内外环.一个part内,只 ...
- jsp移动端和pc端页面判断及切换
function goPAGE() { if ((navigator.userAgent.match(/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobi ...
- Element Plus组件v-loading在el-dialog组件上使用无效
前情 公司有经常需要做一些后台管理页面,我们选择了Element Plus,它是基于 Vue 3,面向设计师和开发者的组件库,是Vue框架生态中比较火的UI组件库,组件库丰富易用,组件链接:一个 Vu ...
- manim边学边做--渐变生长
本篇介绍Manim中的渐变生长类的动画. 这类动画的特点是可以清晰地展示图形的生成过程.物体的运动变化,帮助我们更好地理解抽象概念和复杂结构. 渐变生长类的动画的主要有: GrowArrow:让箭头从 ...