wasm-game-of-life
About
a project to learn Rust
Usage
Clone this Template
git clone
Build with wasm-pack build
wasm-pack build
收获
- 自定义macro
- 步骤
- 在一个模块中定义并导出自定义宏
// utils.rs #[macro_export] macro_rules! log { ( $( $t:tt )* ) => { web_sys::console::log_1(&format!( $( $t )* ).into()); } }
- 在其他模块中使用
// lib.rs #[macro_use] mod utils; mod universe; // universe.rs use crate::utils; // 直接使用 log!("This is a log message: {}", some_variable);
- 在一个模块中定义并导出自定义宏
- 步骤
- Always let profiling guide your focus
- 一些检测性能工具
- edge开发者工具 -> 性能
cargo benchcmp
perf
- Time Profiling - Rust and WebAssembly这章值得再读几次
- 一些检测性能工具
踩坑
- npm install 失败
- 解决:在Ubuntu中安装npm
- 参考:WSL无法使用npm
- wasm-build 失败
- 解决
[package.metadata.wasm-pack.profile.release] wasm-opt = false
- 参考:failed to download binaryen-version_90-x86-windows.tar.gz
- wasm-pack test --chrome --headless 失败
- 解决: 改用
wasm-pack test --chrome
- 参考: Headless Chrome test fails
待办
- [ ] 修复bug: 暂停后的第一次修改cell状态,会进行下一次tick
- [ ] Replace the 2D canvas renderer with a WebGL renderer to get a better performance.
- [ ] 美化界面
- [ ] 参考shalzz/wasm-game-of-life: Game of Life implementation using Rust, Javascript and WebAssembly!进行部署