2024最新版本 electron + vite + sqlite 开发收藏夹程序(1)

2023闲来无事,想模仿某播做一个windows下的桌面直播工具,下图为雏形

image

因为作者年纪比较大,又不是专业程序员,全是自学,现学现用,在编写的过程中需要查阅大量资料,时间一久查阅过的网页还想再看看,没整理又忘记在哪了,思考了下索性自己先写一个收藏功能权当练练手,虽然在技术大佬面前可能是微不足道,不过觉得有可能帮助到纯小白,所以还是决定把编写过程分享给需要的朋友,下图为初步成型的收藏应用截图

image
image
image

难点:

1、国内开发环境很差,npm包,github连接不稳定等;

2、网络上查阅的大部分资料已经过时;

开发环境 :

平台:windows 10 版本2202H,家里和办公室对比了下,这个版本比较稳定,对nodejs支持较好

编辑器:Visual Studio Code, 这里下载的是最新的1.85版本,开发前安装好备用

语言:nodejs 20.10.0,javascript,似乎现在很火的是typescript,作者尝试过,很难,放弃了,有大佬免费教的吗?

框架:vue 3.3.11electron 28.1.1

UI框架:TDesign ,腾讯出品,因为框架为vue3,所以选择了 vue next

构建工具:vite 5.0.10 也有说是打包工具的?

本地数据库:SQLite 3

包管理器:npm各种问题,选择了yarn,目前基本上稳定

  • 第一步:搭建VITE项目

1、进入任意空文件夹,地址栏输入cmd回车,命令符下输入code回车,即可直接用vscode打开该文件,也可以直接运行vscode打开此文件夹

2、vscode打开后,按快捷键 ctrl+shift+` 打开一个终端,输入

yarn create vite

回车,

  • 提示:project name即文件夹名称,可缺省或自定义输入;
  • 提示:Select a framework,选择 vue;
  • 提示:Select a variant,选择 javascript

3、cd your-project,执行 yarn 安装依赖,依赖安装完毕后执行 yarn dev,浏览器打开http://localhost:5173/ 出现如下界面表示VITE项目搭建成功

image
  • 第二步:添加 electron & electron-builder

vscode 终端输入

yarn add --dev electron electron-builder

此命令将添加 electron & electron-builder (electron-builder为electron打包工具)

第三步:添加生产依赖,链接尽可能是中文版文档

vscode 终端输入

yarn add axios cheerio fs-extra less tdesign-vue-next 

此命令将在项目中添加以下依赖
axios Axios 是一个基于 promise 的 HTTP 库,可以用在浏览器和 node.js 中
cheerio cheerio基于 @FB55's forgiving htmlparser2。cheerio可以解析几乎任何HTML或XML文档。
fs-extra fs-extra是fs模块的替代品
less Less 是一门CSS预处理语言,它扩充了CSS语言,增加了诸如变量、混合(mixin)、函数等功能,让CSS更易维护、方便制作主题、扩充。Less可以运行在Node.js或浏览器端
tdesign-vue-next 企业级设计体系,腾讯出品

  • 第四步:添加开发依赖,链接尽可能是中文版文档

vscode 终端输入

yarn add concurrently unplugin-auto-import unplugin-vue-components -d

此命令将在项目中添加以下依赖
concurrently 前后端连载
unplugin-auto-import
unplugin-vue-components 自动导入常用的使用的第三方库的 API

  • 第五步:添加SQLite3

vscode 终端输入

yarn add sqlite3

SQLite3添加时会有各种各样的状况,可以自行百度或私信我

至此,我们已经完成了此次开发所需要的准备工作,目录结构应该长这样

image

为了正常开发,需要对package.json文件做出以下修改

1、删除 "type": "module", 包括逗号,以支持CommonJs,否则electron无法运行
3、根节点添加 "main": "electron/main.js"
2、"scripts": {} 中添加两行

"electron:dev": "concurrently -k \"vite\" \"electron .\"",
"electron:build": "vite build && electron-builder",

完整package.json

{
  "name": "vite-project",
  "private": true,
  "version": "0.0.0",
  "main": "electron/main.js",
  "scripts": {
    "dev": "vite",
    "build": "vite build",
    "preview": "vite preview",
    "electron:dev": "concurrently -k \"vite\" \"electron .\"",
    "electron:build": "vite build && electron-builder"
  },
  "dependencies": {
    "axios": "^1.6.4",
    "cheerio": "^1.0.0-rc.12",
    "concurrently": "^8.2.2",
    "fs-extra": "^11.2.0",
    "less": "^4.2.0",
    "sqlite3": "^5.1.6",
    "tdesign-vue-next": "^1.7.2",
    "unplugin-auto-import": "^0.17.3",
    "unplugin-vue-components": "^0.26.0",
    "vue": "^3.3.11"
  },
  "devDependencies": {
    "@vitejs/plugin-vue": "^4.5.2",
    "electron": "^28.1.1",
    "electron-builder": "^24.9.1",
    "vite": "^5.0.8"
  }
}

最后在项目根目前新建文件夹名为:electron,在新建的目录下新建 main.js,输入以下内容并保存

const { app, BrowserWindow} = require('electron')
const path = require('node:path')
const isPackaged = app.isPackaged

process.env['ELECTRON_DISABLE_SECURITY_WARNINGS'] = 'true'

var mainWindow 

app.whenReady().then(() => {
    createMainWindow()  
    app.on("activate", () => {
      if (BrowserWindow.getAllWindows().length === 0) createMainWindow()
    })
  })

app.on('window-all-closed', () => {
  if (process.platform !== 'darwin') {
    app.quit()
  }
})

const createMainWindow = () => {
  mainWindow = new BrowserWindow({
    frame:false,    
    fullscreenable:false,
    fullscreen: false,
    maximizable: false,
    shadow: true,
    hasShadow: true,
    resizable: false,
    width: 880,
    height: 500,
    webPreferences:{
      nodeIntegration:true,
      contextIsolation: true
    }    
  })
  mainWindow.on('ready-to-show', () => {
    mainWindow.show()
  })

  if (!isPackaged){
    mainWindow.loadURL("http://localhost:5173/");
  }else{
    mainWindow.loadFile(path.resolve(__dirname, '../build/index.html'))
  }
}

**vscode 终端输入

yarn run electron:dev

出现以下界面代表基础环境搭建成功**

image

未完待续

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,607评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,047评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,496评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,405评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,400评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,479评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,883评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,535评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,743评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,544评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,612评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,309评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,881评论 3 306
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,891评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,136评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,783评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,316评论 2 342

推荐阅读更多精彩内容