【技术分享】易语言也能做现代化UI?Sciter.JS 封装模块发布

## 前言:易语言UI的痛点

长期以来,易语言开发者在界面设计上一直面临着巨大的挑战。自带的组件库风格古老(Win98/XP风格),虽然有各种皮肤模块(如EXUI、DUI等),但学习成本高,且灵活性始终不如 Web 前端技术。

**如果能用 HTML/CSS/JavaScript 来写易语言程序的界面,那该多好?**

Sciter 引擎就是为此而生的。它是一个轻量级、可嵌入的 HTML/CSS/JS 引擎。但是,Sciter 官方提供的 API 是基于 C++ 函数指针表的,这对于易语言来说调用非常困难。

为了解决这个问题,我开发了 **SciterWrapper** —— 一个专门为易语言设计的 Sciter 中间件。

## 什么是 SciterWrapper?

SciterWrapper 是一个标准的 DLL 动态链接库,它将 Sciter 复杂的函数指针调用封装成了易语言可以直接调用的标准导出函数。

### 核心特性

1.  **极简调用**:无需处理复杂的指针和内存结构,直接调用 `Sciter_加载HTML文件` 即可显示界面。

2.  **Sciter.JS 支持**:基于最新的 Sciter.JS 引擎,支持 ES6 语法,可以使用现代前端技术栈。

3.  **无边框窗口支持**:内置了完美的无边框窗口实现,支持拖拽、缩放、阴影,轻松实现类似 **英雄联盟客户端** 的不规则窗口效果。

4.  **双向通信**

    *   易语言 -> JS:可以执行 JS 脚本,修改 DOM 元素。

    *   JS -> 易语言:支持 TIScript/JS 调用易语言子程序,处理业务逻辑。

5.  **调试支持**:支持连接 `inspector.exe`,像在 Chrome 浏览器里一样调试你的界面代码。

## 效果展示:复刻英雄联盟客户端

利用本模块,我制作了一个高仿英雄联盟(League of Legends)海克斯科技风格的客户端界面。

可以看到,通过 CSS3 的渐变、阴影和动画,我们可以轻松实现充满科技感的界面,而这在传统易语言绘图中是极其困难的。

## 快速上手

使用本模块非常简单,只需要几行代码即可创建一个浏览器窗口:

```e

.版本 2

.程序集 窗口程序集_启动窗口

.子程序 __启动窗口_创建完毕

    .局部变量 窗口句柄, 整数型

    ' 1. 初始化引擎 (开启调试模式)

    .如果真 (Sciter_初始化 ("", 真) = 假)

        信息框 ("Sciter初始化失败!", 0, , )

        结束 ()

    .如果真结束

    ' 2. 创建无边框窗口 (1280x720)

    窗口句柄 = Sciter_创建无边框窗口 (1280, 720)

    ' 3. 加载 HTML 文件

    Sciter_加载HTML文件 (窗口句柄, 取运行目录 () + "\ui\index.htm")

    ' 4. 显示窗口

    Sciter_显示窗口 (窗口句柄)

    ' 5. 进入消息循环

    Sciter_运行 ()

```

## 进阶功能:JS 调用易语言

在 HTML 中:

```javascript

// 调用易语言函数

Window.this.xcall("EPL_Func", "Hello from JS");

```

在易语言中:

```e

' 注册回调函数处理来自 JS 的调用

```

## 结语

SciterWrapper 让易语言开发者能够利用庞大的前端生态资源。无论是做炫酷的游戏启动器、现代化的管理软件,还是数据可视化大屏,现在都变得轻而易举。

项目已发布在精易论坛,欢迎大家下载体验!

---Sciter.JS 易语言封装模块 - 用 HTML/CSS 写界面 (附 噜阿噜 界…
https://bbs.ijingyi.com/forum.php?mod=viewthread&tid=14868751
(出处: 精易论坛)

*Tags: 易语言, Sciter, UI界面, 模块, *

点赞

发表回复

昵称和uid可以选填一个,填邮箱必填(留言回复后将会发邮件给你)
tips:输入uid可以快速获得你的昵称和头像