js_name = Blah
js_name
属性可用于在 JS 中导出与 Rust 中不同的名称。它可以应用于导出的 Rust 函数和类型。
例如,这通常用于将 Rust 的蛇形命名标识符转换为 JavaScript 的驼峰命名标识符
# #![allow(unused_variables)] #fn main() { #[wasm_bindgen(js_name = doTheThing)] pub fn do_the_thing() -> u32 { 42 } #}
这可以在 JavaScript 中使用,如下所示
import { doTheThing } from './my_module';
const x = doTheThing();
console.log(x);
与导入类似,js_name
也可以用于重命名导出到 JS 的类型
# #![allow(unused_variables)] #fn main() { #[wasm_bindgen(js_name = Foo)] pub struct JsFoo { // .. } #}
以像下面这样访问
import { Foo } from './my_module';
// ...
请注意,将方法附加到 JS 类 Foo
应该通过 js_class
属性完成
# #![allow(unused_variables)] #fn main() { #[wasm_bindgen(js_name = Foo)] pub struct JsFoo { /* ... */ } #[wasm_bindgen(js_class = Foo)] impl JsFoo { // ... } #}
它还可以用于重命名导出的函数和方法的参数
# #![allow(unused_variables)] #fn main() { #[wasm_bindgen] pub fn foo( #[wasm_bindgen(js_name = "firstArg")] arg1: String, ) { // function body } #[wasm_bindgen] pub struct Foo { // properties } #[wasm_bindgen] impl Foo { pub fn foo( &self, #[wasm_bindgen(js_name = "firstArg")] arg1: u32, ) { // function body } } #}
这将生成以下 JS 绑定
/**
* @param {string} firstArg
*/
export function foo(firstArg) {
// ...
}
export class Foo {
/**
* @param {number} firstArg
*/
foo(firstArg) {
// ...
}
}