一、rust+neon开发node原生模块
1.安装并配置好rust开发环境;
2.安装neon-cli,安装命令:npm install neon-cli -g;
3.使用neon new [模块名称],生成rust+neon开发环境,生成的项目中已定义一个hello,node模块函数,可以使用neon build生成index.node文件,使用node lib/index.js即可完成初步测试;
4.neon开发文档示例和API见官网https://neon-bindings.com/;
5.使用neon开发node模块遇到的问题:
数据类型转换:
法一:使用neon_serde库可以将rust任意类型的数据转换成neon js value类型数据,这个库不匹配neon0.5以上的版本,只支持neon0.5以下的版本。
法二:使用serde_json库可以将rust任意类型的数据转换成neon js string类型数据,这个库没有使用限制,但是返回的结果值是一个Json字符串,需要在nodejs中转换一下才能使用。
下面是法二的转换代码:
let response = json!({
"list":result,
"total":total
});
Ok(cx.string(response.to_string()))
二、在electron 中使用rust+neon开发的node原生模块
搭建electron原生模块运行环境:
1)安装vue-cli,安装命令:npm install @vue/cli -g,将安装最新的vue-cli脚手架;
2)使用vue create [项目名称] 创建基于vue-cli脚手架最新的项目,可自定义使用vue-router vuex 等模块;
3)进入项目根路径中,使用vue add electron-builder选择安装electron版本集成到vue-cli项目中,若想切换electron版本,执行命令npm uninstall electron&&npm install electron@x.x.x -d即可;
4)可以查看package.json,有六种命令脚本定义,使用npm run electron:serve可以启动electon桌面程序,可以使用npm run electron:build编译electron桌面程序发行版
5)将第一步的项目打包至根目录下的node_modules下,并在package.json中添加一行新的脚本命令:“neon:build”:“electron-builder-env neon build [模块名称] --release”,在第一步的项目路径中执行npm install 安装好相应的node依赖,在本部项目的根目录中安装electron-builder-env node依赖,然后执行npm run neon:build 即可编译成electron中使用的原生模块,如果命令中出现编译错误,可以尝试安装最新node windows-build-tools,命令行如下:npm install --global --production windows-build-tools,此命令在power shell中执行。
6)在项目根路径中添加vue.config.js,内容如下
module.exports = {
pluginOptions: {
electronBuilder: {
nodeIntegration: true,
externals: ['模块名称'],
builderOptions: {
asar:false
}
}
}
}
开启nodeIntegration,即可在electron中使用原生模块的功能。