Skip to content

nullptr-z/balabala

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

40 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Balabala

这是一个使用 Rust(编译为 WASM)和 Node.js 的网络爬爬。

主要研究 wasm for rust 在 Nodejs runtime 中使用

爬取rust create文档,通过chatgpt 来翻译文档(暂未实现)

taskController.rs

自定义 Future, 使用底层的 Poll、Ready、Waker 等接口,实现了一个简单的异步运行时。

实现了 spawn_join 方法,添加了一个异步任务(Future)到任务队列。 实现了 awaits 方法,等待任务队所有任务完成。

项目结构

my_project/
├── Cargo.toml
├── src/
│   ├── lib.rs
│   └── other_rust_files.rs
├── wasm/
│   ├── wasm_pack_script.sh
│   └── pkg/
│       ├── my_project_bg.wasm
│       ├── my_project.d.ts
│       └── my_project.js
├── parse/
│   ├── package.json
│   ├── server.js
│   └── other_js_files.js
└── README.md

src/ 目录包含了 Rust 源代码。它由 Cargo.toml 文件管理,该文件描述了 Rust 项目的配置和依赖。

wasm/ 目录是 Rust 代码被编译为 WASM 之后的输出位置。wasm_pack_script.sh 是一个脚本,用于运行 wasm-pack 命令,将 Rust 代码编译为 WASM,并输出到 pkg/ 子目录。

parse/ 目录包含 Node.js 代码和资源。它由 package.json 文件管理,该文件描述了 Node.js 项目的配置和依赖。server.js 可以是主要 Node.js 脚本,它加载和运行 WASM 模块,然后处理 HTML。

安装

Rust 和 wasm-pack

你需要先安装 Rust 和 wasm-pack。安装指南可在 Rust 官方网站wasm-pack 官方网站 找到。

> 安装 Rust:
curl https://sh.rustup.rs -sSf | sh
# or
apt install rustc

> 安装 wasm-pack:
curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh

> 安装 cargo-watch:
cargo install cargo-watch

Node.js 和 npm

你还需要安装 Node.js 和 npm。安装指南可在 Node.js 官方网站 找到。

项目依赖

你可以使用以下命令安装项目的依赖:

# 在 Rust 中安装依赖
cargo build

# 在 Node.js 中安装依赖
cd parse
npm install

自动编译

代码变更时自动编译 Rust 项目,你可以安装 cargo-watch:

# 使用 cargo-watch 运行 Rust 项目:
cargo watch -s "wasm-pack build --target nodejs --out-dir wasm/pkg"

手动编译

你需要编译 Rust 代码为 WASM:

wasm-pack build --target nodejs --out-dir wasm/pkg

About

webassembly for rust

Resources

Stars

Watchers

Forks