Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 21 additions & 22 deletions wasm-demo/README.md
Original file line number Diff line number Diff line change
@@ -1,30 +1,29 @@
# wasm-demo:OpenCC WASM 用法简介
# wasm-demo:OpenCC WASM 示範站

本目录提供一个基于发布包 `opencc-wasm` 的浏览器演示:加载配置与词典、执行转换、运行测试用例
本目錄提供一個基於發佈套件 `opencc-wasm` 的瀏覽器示範:載入設定與字典、執行轉換、跑測試

## 准备
- 先在仓库根执行 `npm install ./wasm-lib`(或从 npm 安装正式包),确保本目录下的 `node_modules/opencc-wasm` 可用。
## 準備
- 先在 `wasm-demo` 根目錄執行 `npm install`,確認本目錄的 `node_modules/opencc-wasm` 可用。

## 文件概览
- `index.html`:演示页面,引用 `./vendor/opencc-wasm/opencc-wasm.js` 初始化 WASM(需先运行 `npm run prepare:assets` 复制产物):
- 配置按钮:从 `./vendor/opencc-wasm/data/config/*.json` 解析并加载所需 `.ocd2` 到虚拟 FS(配置写 `/data/config/`、词典写 `/data/dict/`),自动填充配置名、焦点跳转。
- 文本转换:选择配置后调用句柄式 `opencc_convert`,支持一键复制输出。
- 测试用例:读取本目录的 `testcases.json`,批量加载配置/词典并校验输出,结果汇总在日志框。
- 统一日志/结果输出区。
- `testcases.json`:从 `../test/testcases` 生成的用例(如需重新生成,可使用 `wasm-lib/scripts/gen_testcases_json.py`,输出到本目录)。
- `vendor/opencc-wasm/`:通过 `npm run prepare:assets` 从已安装的 `opencc-wasm` 包复制的构建产物。
- `benchmark.html`:简单性能对比页(WASM 与 opencc-js,本地有 opencc-js 时可用于对比,但性能不是 WASM 目标;WASM 侧优势在于完整 OpenCC 行为与官方 config/ocd2 一致性)。
## 檔案概覽
- `index.html`:新版經典介面(類似 byvoid.opencc.com),按鈕式選原文/目標/異體字/地域用詞,動態載入設定與 `.ocd2`(寫入 `/data/config`、`/data/dict`),內建測試入口、複製、快捷鍵等。
- `wasm.html`:早期的 WASM API 示範頁,直接呼叫 `opencc_create/opencc_convert`,可手動載入設定並跑測試。
- `public-api.html`:使用 `opencc-wasm` 提供的 opencc-js 相容 API 的示範頁,方便對照官方 JS API。
- `benchmark.html`:效能對比頁(WASM vs opencc-js,需本機有 opencc-js 才會載入;WASM 重點在行為一致性而非效能)。
- `testcases.json`:自 `../test/testcases` 產出的用例(如需重生,可用 `wasm-lib/scripts/gen_testcases_json.py` 輸出到本目錄)。
- `vendor/opencc-wasm/`:透過 `npm run prepare:assets` 從已安裝的 `opencc-wasm` 套件複製的構建產物。

## 运行
## 執行
```bash
cd wasm-demo
npm install # 安装依赖(包含 opencc-wasm 本地包)
npm run prepare:assets # 复制 dist 到 vendor,便于静态访问
python3 -m http.server 8000
# 浏览器访问 http://localhost:8000/wasm-demo/
npm install # 安裝相依(包含 opencc-wasm 本地套件)
npm run build # 複製 dist 到 vendor,方便靜態存取
python3 -m http.server 8000 # 瀏覽器開 http://localhost:8000/wasm-demo/
```
点击配置按钮加载词典,然后执行转换或运行测试用例
點擊設定按鈕載入字典,再執行轉換或測試

## 配置与词典路径
- 配置 JSON 与字典 `.ocd2` 直接使用包内的 `node_modules/opencc-wasm/dist/data/config/` 与 `node_modules/opencc-wasm/dist/data/dict/`。
- 页面加载时把配置写入 `/data/config/`,词典写入 `/data/dict/`,并在配置中重写引用路径指向 `/data/dict/...`。
輸出的 `dist/` 內容可直接用於靜態部署。

## 設定與字典路徑
- 設定 JSON 與字典 `.ocd2` 直接使用套件內的 `node_modules/opencc-wasm/dist/data/config/` 與 `node_modules/opencc-wasm/dist/data/dict/`。
- 頁面載入時把設定寫入 `/data/config/`,字典寫入 `/data/dict/`,並在設定中改寫引用路徑指向 `/data/dict/...`。
2 changes: 1 addition & 1 deletion wasm-demo/build.js
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ if (fs.existsSync(ocjsSrc)) {
}

// copy demo assets
const filesToCopy = ["index.html", "public-api.html", "benchmark.html", "testcases.json"];
const filesToCopy = ["index.html", "public-api.html", "classic.html", "benchmark.html", "testcases.json"];
for (const file of filesToCopy) {
const src = path.join(demoRoot, file);
if (fs.existsSync(src)) {
Expand Down
Loading
Loading