Vue3集成RDKit.js:从项目搭建到分子查看器开发全攻略
原文地址: https://88box.top 生成时间: 2026-05-20 09:38:15
RDKit.js + Vue3快速上手 - hey99 知识搜索引擎
精选文章
RDKit.js + Vue3快速上手
本文介绍了在Vue3项目中集成RDKit.js化学工具库的完整流程。主要内容包括:1) 通过Vite创建项目并配置WASM加载;2) 封装RDKit工具类实现全局复用;3) 开发分子查看器组件,支持SMILES输入、分子结构渲染、理化性质计算和子结构匹配功能;4) 强调RDKit的内存管理要点,包括分子对象的创建销毁机制。该方案为化学信息学Web应用开发提供了可复用的技术框架,特别适合药物发现和化学教育领域的可视化需求。
更新于 2026-05-20 01:17
前端
javascript
开发语言
ecmascript
一、环境准备
- 创建 / 进入 Vue3 项目
npm create vite@latest my-vue-rdkit -- --template vue
cd my-vue-rdkit
npm install
- 安装 RDKit.js
npm install @rdkit/rdkit
- 关键配置(Vite 必须)
修改
vite.config.js
,优化 WASM 加载:
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
export default defineConfig({
plugins: [vue()],
optimizeDeps: {
exclude: ['@rdkit/rdkit'] // 跳过预构建,避免 WASM 报错
},
server: {
headers: {
'Cross-Origin-Opener-Policy': 'same-origin',
'Cross-Origin-Embedder-Policy': 'require-corp'
}
}
})
二、封装 RDKit 工具类(推荐)
新建
src/utils/rdkit.js
,全局复用,避免重复初始化:
import initRDKit from '@rdkit/rdkit';
let RDKit = null;
// 初始化 RDKit(全局只执行一次)
export async function initRDKitKit() {
if (RDKit) return RDKit;
RDKit = await initRDKit();
console.log('RDKit 加载成功:', RDKit.version());
return RDKit;
}
// 获取 RDKit 实例
export function getRDKit() {
if (!RDKit) throw new Error('请先调用 initRDKitKit()');
return RDKit;
}
三、Vue 组件完整示例(直接用)
创建
src/components/MoleculeViewer.vue
:
RDKit.js + Vue 3 分子工具
理化性质
分子量:{{ descs.MolWt.toFixed(2) }}
脂水分配系数(LogP):{{ descs.LogP.toFixed(2) }}
极性表面积(TPSA):{{ descs.TPSA.toFixed(2) }}
四、在 App.vue 中使用
五、运行项目
npm run dev
打开浏览器即可看到:
SMILES 输入与分子实时渲染
分子量、LogP、TPSA 自动计算
子结构搜索 + 高亮匹配
六、RDKit.js + Vue 核心知识点
- 生命周期注意事项
onMounted
:初始化 RDKit(WASM 异步加载)
onUnmounted
:必须销毁分子对象
mol.delete()
避免在
setup
顶层直接调用 RDKit
- 常用 API 速查
javascript
运行
// 创建分子
const mol = RDKit.get_mol('SMILES');
// SVG 渲染
mol.get_svg(宽度, 高度);
mol.get_svg_with_highlights(高亮配置);
// 理化性质
mol.get_descriptors();
// 子结构
const qmol = RDKit.get_qmol('SMARTS');
mol.get_substruct_match(qmol);
// 格式转换
mol.get_molblock();
mol.get_inchikey();
- 内存管理(非常重要)
每次创建
get_mol()
/
get_qmol()
必须调用
.delete()
切换分子前先销毁旧分子
组件销毁时清理所有分子对象
查看原文
🏷 标签: RDKit.js, Vue3, WebAssembly, 化学信息学, 前端可视化