 
为 Nature 语言提供的 Webview 绑定库,基于 webview C 库实现。该库允许你在 Nature 语言中轻松创建跨平台的桌面应用程序,使用 Web 技术构建用户界面。
- 🚀 跨平台支持:支持 macOS、Linux
- 🌐 现代 Web 技术:使用 HTML、CSS 和 JavaScript 构建原生窗口
- ⚡ 轻量级:无需外部依赖,直接使用系统原生 WebView
- 🔗 双向绑定:支持从 JavaScript 调用 Native 函数
- 📦 简单易用:简洁的 API 设计,快速上手
- Nature 编译器
- C 编译器(GCC、Clang 或 MSVC)
git clone https://github.com/wzzc-dev/nature-webview.git
cd nature-webview项目预编译了各平台的静态库,位于 lib/ 目录下。如需自行构建:
cd webview
mkdir build && cd build
cmake ..
cmake --build .
cp libwebview.a ../../lib/$(uname -s)_$(uname -m)/创建一个简单的 WebView 窗口:
import 'webview.n'
import fmt
fn main() {
fmt.printf("Hello, Nature Webview!\n")
// 创建 webview 实例(debug 模式关闭)
webview.webview_t window = webview.create(0, null)
// 设置窗口标题
webview.set_title(window, "Hello World".to_cstr())
// 设置 HTML 内容
webview.set_html(window, "<html><body><h1>Hello, Nature!</h1></body></html>".to_cstr())
// 运行消息循环
webview.run(window)
// 清理资源
webview.destroy(window)
}nature build --ldflags '-framework WebKit -framework Cocoa -lc++' main.n
./mainnature build --ldflags '-framework WebKit -framework Cocoa -lc++' -arch x86_64 main.n
./mainnature build --ldflags '-lwebkit2gtk-4.1' main.n
./main创建一个新的 webview 实例。
参数:
debug: i32- 是否启用开发者工具(0 或 1)window: webview_t- 父窗口指针(通常为 null)
返回: webview_t - webview 实例指针
设置窗口标题。
参数:
w: webview_t- webview 实例title: libc.cstr- 窗口标题
设置窗口大小。
参数:
w: webview_t- webview 实例width: i32- 窗口宽度height: i32- 窗口高度hint: i32- 尺寸提示(WEBVIEW_HINT_NONE, WEBVIEW_HINT_MIN, WEBVIEW_HINT_MAX)
设置 HTML 内容。
参数:
w: webview_t- webview 实例html: libc.cstr- HTML 字符串
导航到指定 URL。
参数:
w: webview_t- webview 实例url: libc.cstr- 目标 URL
运行主事件循环。
参数:
w: webview_t- webview 实例
销毁 webview 实例并释放资源。
参数:
w: webview_t- webview 实例
// 初始化时执行 JS
webview.init(window, "console.log('Initialized');".to_cstr())
// 运行时执行 JS
webview.eval(window, "document.body.style.background = '#f0f0f0';".to_cstr())nature-webview/
├── lib/ # 预编译静态库
│ ├── darwin_arm64/ # macOS ARM64
│ ├── darwin_amd64/ # macOS Intel
│ ├── linux_x86_64/ # Linux x86_64
├── webview/ # 原始 webview C 库
│ ├── core/ # 核心实现
│ ├── examples/ # C/C++ 示例
│ └── test_driver/ # 测试
├── main.n # 示例入口
├── webview.n # Nature 绑定定义
├── package.toml # 项目配置
└── README.md # 本文件- WebKit.framework
- Cocoa.framework
- libwebkit2gtk-4.1
确保已安装 Xcode 命令行工具:
xcode-select --install# Ubuntu/Debian
sudo apt-get install libwebkit2gtk-4.1-dev
# Fedora
sudo dnf install webkit2gtk4.1-devel
# Arch Linux
sudo pacman -S webkit2gtk-4.1欢迎贡献!请阅读 CONTRIBUTING.md 了解详情。
- Fork 本仓库
- 创建特性分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 提交 Pull Request
本项目基于 MIT 许可证 开源。
- webview/webview - 提供底层 C 库
- Nature - 编程语言
- 所有贡献者
- 作者:wzzc-dev
- 问题反馈:GitHub Issues
注意:本项目处于开发阶段,API 可能会发生变化。建议在生产环境使用前进行充分测试。