网站首页 > 知识剖析 正文
用html和js写桌面程序一直都备受大家推崇,现在仓颉也有了,通过对C的绑定,可以使用webview-ffi这个框架开发运行自己的桌面程序,地址是https://gitcode.com/Cangjie-SIG/webview-ffi/overview,小伙伴们可以尝试下,当然调用有很多种方法,这里简单介绍一种:
1.将源码下载下来,放入工程中,与src放同一目录,同时创建存放html的目录resources和存放dll的library目录,当然,也可以直接拷贝源码里的目录和文件,如图:
2.修改cjpm.toml,引入webview-ffi
[dependencies]
webview_ffi = {path = "./webview_ffi"}
[package]
cjc-version = "0.56.4"
compile-option = ""
description = "nothing here"
link-option = ""
name = "cjportal"
output-type = "executable"
override-compile-option = ""
src-dir = ""
target-dir = ""
version = "1.0.0"
package-configuration = {}
[target.x86_64-w64-mingw32]
compile-option = "-L ./library/win -l webview"
link-option = "-rpath ./library/win -subsystem windows"
3.在main.cj里编写调用代码。
先创建一个窗口,可以设置大小和窗口名称
//最后一个参数代表是否可开启调试控制台
let w = webview("aichuanzhi", 630, 500, false)
调用的时候,有两种展示方式:
- 设置网站的访问地址,去加载远程页面
w.setUrl("https://www.aichuanzhi.com/")
w.run()
w.destroy()
- 访问本地的html,绑定函数,并在代码里调用。
//main.cj
w.setResources("resources/")
//创建绑定函数
w.bind("hello", { _ =>
var result: JsonValue = JsonInt(1)
Result(result)
})
w.run()
w.destroy()
//index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>计数器示例</title>
<script>
// 初始化计数器
let count = 0;
// 当文档加载完毕后执行
document.addEventListener('DOMContentLoaded', function () {
document.getElementById('count').innerText = count;
// 为按钮添加点击事件监听器
document.getElementById('incButton').addEventListener('click', function () {
//调用仓颉定义的函数
hello().then((error) => {
console.log("hello aichuanzhi!");
});
count++;
document.getElementById('count').innerText = count;
});
});
</script>
</head>
<body>
<div style="text-align:center; margin-top:100px;">
<button id="incButton">点我,调用绑定的函数</button>
<p>Count: <span id="count">0</span></p>
</div>
</body>
</html>
运行效果如图:
初步体验后,这个框架感觉还处于初级阶段,有几个影响体验的点,比如窗口图标的展示,系统托盘不完善,server启动和html加载不同步时,界面不友好等问题,感谢开发人员的付出,希望越来越好[比心]
猜你喜欢
- 2025-01-31 000 前言 | 真实场景=>使用 .NET 9 进行 Web 开发
- 2025-01-31 万字长文把 VSCode 打造成 C++ 开发利器,解决你的多重开发需求
- 2025-01-31 高效设计表格 - 用我们的HTML表格生成器轻松搞定
- 2025-01-31 web前端开发教程,最全JavaScript入门讲解
- 2025-01-31 Rust 不适合开发 Web API(rust开发工具选择)
- 2025-01-31 JavaScript 依然是 Web 开发的王者,你认同吗?
- 2025-01-31 最快1天,搭建你的OpenAPI和开放平台
- 2025-01-31 FastHTML:用Python重新定义Web开发
- 2025-01-31 QQ 用 Electron 重构后,终实现 Linux、macOS、Windows 三端架构统一!
- 2025-01-31 推荐20个开源的前端低代码项目(好看的前端源码)
- 04-29php开发者composer使用看这一篇就够了
- 04-29引用和变量声明在不同语言中的实作
- 04-29PHP 没你想的那么差
- 04-29Ubuntu linux 上的 Nginx 和 Php 安装
- 04-29CentOS下通过yum搭建lnmp(单版本PHP)
- 04-29为什么 PHP8 是个高性能版本
- 04-29PHP8函数包含文件-PHP8知识详解
- 04-29使用无参数函数进行命令执行
- 最近发表
- 标签列表
-
- xml (46)
- css animation (57)
- array_slice (60)
- htmlspecialchars (54)
- position: absolute (54)
- datediff函数 (47)
- array_pop (49)
- jsmap (52)
- toggleclass (43)
- console.time (63)
- .sql (41)
- ahref (40)
- js json.parse (59)
- html复选框 (60)
- css 透明 (44)
- css 颜色 (47)
- php replace (41)
- css nth-child (48)
- min-height (40)
- xml schema (44)
- css 最后一个元素 (46)
- location.origin (44)
- table border (49)
- html tr (40)
- video controls (49)