electron使用数据库

作者: fengbj | 来源:发表于2017-04-23 21:09 被阅读662次

    最近使用electron开发个桌面程,需要使用到数据库。

    一般说起数据库,联想到的就mysqlMongoDB,但在electron都无法直接使用。

    所以有了这篇文章。

    介绍3个electron能使用的数据库,当然肯定不只这三个。

    其中前两个需要编译才能使用,而且需要在electron上面使用node原生模块,和在node上使用的原生模块,不是一样的。

    就是说,有node编译好的包,在electron没法使用,详情看这里

    Electron 同样也支持原生模块,但由于和官方的 Node 相比使用了不同的 V8 引擎,如果你想编译原生模块,则需要手动设置 Electron 的 headers 的位置。

    下面提到的淘宝镜像,,均是这个地址。

    编译环境

    • npm需要全局安装,node-gyp,
    • 安装python2.7
    • 如果没有安装Visual Studio 2015,那就需要安装Visual C++ Build Tools下载地址,详情查看这里。在win7上面成功了,在win10却失败了。这个需要安装很久,网络不好,建议挂代理。出了默认的,还需要win8 sdk,大概需要下载2g的样子。

    LevelDB

    npm 需要安装leveldownlevelup,具体使用查看项目地址。

    其中leveldown需要编译

    其实leveldown,已经编译好了electron,可供下载。下载地址,并且淘宝有分流。这个版本,是1.70-0,但实际,你需要安装1.6.0,不然会提示版本依赖错误

    注意,这里下载需要更具v8的版本,最新electron@1.6.5,对应使用的node@7.4,v8@5.4。

    console.log(process.versions)
    

    但编译好的,最高v8@51的,所以要用编译好的,就要降版本。

    使用electron@1.4.16,node@6.3,对应v8@5.0,

    解压到leveldown/build/Release下面。

    如果要自己编译,在package.json添加下面的,但没有测试过,参考这里

    "scripts": {
        "postinstall": "cd node_modules/leveldown &&node-gyp rebuild --target=1.6.5 --arch=x64 --dist-url=https://npm.taobao.org/mirrors/atom-shell"
      },
    

    记得安装编译环境。

    node-sqlite3

    其实最开始想使用的是他,结果编译太麻烦了,哈哈。

    他没有提供任何编译后的模块,可能是我没有找到,在淘宝镜像里面有,但只有node的,却没有electron的,所以需要自己编译。

    在package.json添加下面的,

    "scripts": {
        "postinstall": "cd node_modules/sqlite3 && npm install nan && npm run prepublish && node-gyp configure --module_name=node_sqlite3 --module_path=../lib/binding/electron-v1.6-win32-x64 && node-gyp rebuild --target=1.6.2 --arch=x64 --target_platform=win32 --dist-url=https://npm.taobao.org/mirrors/atom-shell"
      },
    

    然后安装sqlite3,我是直接写到package.josn里面,npm i 安装的。

    这里我编译的 v8@54,node@7.4,分享一下,就不需要上面那样编译了,

    正常安装 sqlite3,下载后,解压到sqlite3/lib/binding/electron-v1.6-win32-x64/node_sqlite3.node

    nedb

    最后选择nedb,最主要原因,不需要编译,就是这么任性。

    相关文章

      网友评论

      • 王大白_:想问下,你最终nedb是存在哪里呢 什么路径,自动更新不会把数据都冲掉吗
        fengbj:是保持在项目更目录的 /db 这里面,自动更新是指?

      本文标题:electron使用数据库

      本文链接:https://www.haomeiwen.com/subject/awnyzttx.html