墨香阁
| 分享生活的点滴

@napi-rs/cli的使用方式

2024年12月23日 02:26:09
10 views
1 min read
前端
@napi-rs/cli的使用方式

安装 @napi-rs/cli

bash
npm install -g @napi-rs/cli

创建项目

bash
napi new my-project

写入以下内容到 my-project/src/lib.rs 文件:

rust
#![deny(clippy::all)] use image::codecs::png::{CompressionType, FilterType, PngEncoder}; use image::Luma; use qrcode::{EcLevel, QrCode}; #[macro_use] extern crate napi_derive; #[napi] pub fn sum(a: i32, b: i32) -> i32 { a + b } #[napi] pub fn generate_qr_code(text: String) -> Result<Vec<u8>, napi::Error> { let qr = QrCode::with_error_correction_level(&text, EcLevel::L) .map_err(|e| napi::Error::new(napi::Status::Unknown, e.to_string()))?; let img_buf = qr.render::<Luma<u8>>().min_dimensions(200, 200).build(); let mut encoded_buf = Vec::with_capacity(512); let encoder = PngEncoder::new_with_quality( &mut encoded_buf, CompressionType::Default, FilterType::NoFilter, ); img_buf .write_with_encoder(encoder) .map_err(|e| napi::Error::new(napi::Status::Unknown, e.to_string()))?; Ok(encoded_buf) }

编译项目

bash
cd my-project npm run build

使用项目

创建文件test.js

javascript
const express = require('express'); const utils = require('./index.js'); // 确保 index.js 中有 sum 和 generateQrCode 方法 const app = express(); const PORT = 3000; // 设置一个 API 接口生成 QR 码 app.get('/qrcode', (req, res) => { try { const data = utils.generateQrCode('https://www.google.com'); const buffer = Buffer.from(data); const base64Image = buffer.toString('base64'); const dataUrl = `data:image/png;base64,${base64Image}`; res.json({ qrcode: dataUrl }); } catch (error) { console.error(error); res.status(500).json({ error: '生成 QR 码时出错' }); } }); // 启动服务器 app.listen(PORT, () => { console.log(`服务正在运行,监听端口 ${PORT}`); });

运行项目

bash
node test.js

© 2025 . 保留所有权利.

原始文章发表于 2024年12月23日 02:26:09

发表留言

全部留言 (0)

暂无留言,成为第一个留言的人吧!