2 个不稳定版本
0.2.0 | 2023 年 10 月 30 日 |
---|---|
0.1.0 | 2023 年 10 月 24 日 |
566 在 HTTP 服务器
1.5MB
3K SLoC
包含 (WOFF 字体,150KB) static/fonts/AlegreyaSans-Italic.woff,(WOFF 字体,145KB) static/fonts/AlegreyaSans-Bold.woff,(WOFF 字体,145KB) static/fonts/AlegreyaSans-Regular.woff,(WOFF 字体,95KB) static/fonts/AlegreyaSans-Bold.woff2,(WOFF 字体,98KB) static/fonts/AlegreyaSans-Italic.woff2,(WOFF 字体,96KB) static/fonts/AlegreyaSans-Regular.woff2 等 4 项。
ANNIS 前端实验
ANNIS 是一个开源的、灵活的基于 Web 浏览器的搜索和可视化架构,用于处理具有各种类型注释的复杂多层次语言学语料库。这是 ANNIS 的一个 实验性 版本,试图重新思考 ANNIS 前端的用户界面和实现。
与原始 ANNIS 版本 4 的区别是什么?
实验版本的功能集非常有限,目前仅支持将结果导出为 CSV。将来将添加其他功能,如其他导出器或频率分析。
为什么从头开始?
ANNIS 4 基于名为 Vaadin 8 的 Web 前端库。由于 Vaadin 8 已达到生命周期的终点且不再接收更新,我们必须重新思考 ANNIS 前端的全套技术应用堆栈。升级到 Vaadin 23 实际上相当于完全重写,因此我们应该公开我们使用的编程语言和框架。特别是,移植不同的可视化工具可能会成为一个更大的挑战。这个项目旨在使用基于 Rust 的框架和技术创建一个实验性原型,并逐步创建 ANNIS 前端的新一代。虽然 Vaadin 7/8 作为开源软件存在了很长时间,我们在选择新技术时更加保守,以便它能够长期使用。
使用的框架
- htmx 用于 UI 的动态更新 https://htmx.npmjs.net.cn/
- axum Web 框架 https://github.com/tokio-rs/axum
- minijinja 模板引擎 https://github.com/mitsuhiko/minijinja
- Bulma https://bulma.org.cn/ 用于样式
开发 annis-web
您需要安装 Rust 来编译项目。我们建议安装以下 Cargo 子命令以开发 annis-web:
- cargo-release 用于创建发布版
- cargo-about 用于重新生成第三方许可证文件
- cargo-watch 允许自动重新编译
- cargo-llvm-cov 用于确定代码覆盖率
- cargo-insta 允许审查测试快照文件
运行 Web 服务器
在开发过程中,您可以运行一个 Web 服务器,当任何源文件发生变化时,它会自动重新编译。
cargo watch -x 'run -- --session-file annis-frontend-sessions.db'
执行测试
要执行测试,您需要一个 Chromium/Chrome 浏览器以及匹配的 chromedriver
二进制文件。在运行测试之前,请在端口 4444 上启动 chromedriver
。
chromedriver --port=4444
如果 Chromium/Chrome 二进制文件安装为 snap,您可能需要通过设置 TMPDIR
环境变量来更改临时目录。
mkdir -p "${HOME}/tmp/"
TMPDIR="${HOME}/tmp/" chromedriver --port=4444
然后在另一个终端中运行测试。
cargo test
要执行测试并计算代码覆盖率,您可以使用 cargo-llvm-cov
cargo llvm-cov --open --ignore-filename-regex 'tests?\.rs'
依赖项
~79MB
~1.5M SLoC