亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Vite+Electron快速構(gòu)建VUE3桌面應(yīng)用的實(shí)現(xiàn)

 更新時(shí)間:2021年10月18日 11:06:05   作者:Kuari  
本文主要介紹了Vite+Electron快速構(gòu)建VUE3桌面應(yīng)用的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

一. 簡(jiǎn)介

首先,介紹下vite和Electron。

  • Vite是一種新型前端構(gòu)建工具,能夠顯著提升前端開發(fā)體驗(yàn)。由尤大推出,其發(fā)動(dòng)態(tài)表示“再也回不去webpack了...”
  • Electron是一個(gè)使用 JavaScript、HTML 和 CSS 構(gòu)建桌面應(yīng)用程序的框架。 嵌入Chromium和Node.js到二進(jìn)制的 Electron 允許您保持一個(gè) JavaScript 代碼代碼庫(kù)并創(chuàng)建 在Windows上運(yùn)行的跨平臺(tái)應(yīng)用 macOS和Linux——不需要本地開發(fā) 經(jīng)驗(yàn)。

當(dāng)開始想用vue去開發(fā)一個(gè)桌面應(yīng)用時(shí),首先去搜索下,了解到當(dāng)前如下兩種現(xiàn)成方案:

  • electron-vue: 該項(xiàng)目集成度較好,封裝較為完整,中文搜索下來文章較多也是該方案,可以直接上手去使用。但是,問題在于其內(nèi)置electron的版本太低,寫文章時(shí)看到的版本是2.0.4,而最新的electron版本是15.1.2。
  • Vue CLI Plugin Electron Builder: 該方案是集成到到vue-cli中使用,使用vue add electron-builder后可直接上手,免去了基礎(chǔ)配置的步驟。但是其只能在vue-cli下使用,無法配合vite來使用。

因此,若要使用vite和electron,還需要自己來配置。

二. 創(chuàng)建一個(gè)Vite項(xiàng)目

1. 安裝 vite

yarn create vite

2. 創(chuàng)建項(xiàng)目

創(chuàng)建命令如下:

yarn create vite <your-vue-app-name> --template vue

此處創(chuàng)建一個(gè)項(xiàng)目,名為kuari。

yarn create vite kuari --template vue

3. 進(jìn)入且運(yùn)行

進(jìn)入項(xiàng)目,在運(yùn)行前需要先安裝下依賴。

cd kuari
yarn install
yarn dev

在運(yùn)行命令敲下的一瞬間,幾乎是已經(jīng)在運(yùn)行了,不愧是vite。此時(shí)按照輸出,打開地址預(yù)覽,即可看到初始化頁面。

至此一個(gè)基礎(chǔ)的vite項(xiàng)目創(chuàng)建完成。

三. 配置Electron

1. 官方文檔

Electron官網(wǎng)的快速入門文檔中,有官方給出的利用html、javascript、css來創(chuàng)建一個(gè)electron應(yīng)用的案例,vite+electron的方案也借鑒其中。

2. 安裝

首先安裝electron至vite應(yīng)用。目前electron的版本為^15.1.2,。

yarn add --dev electron

3. 配置文件

1)vite.config.js

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import path from 'path'           // 新增

// https://vitejs.dev/config/
export default defineConfig({
  base: path.resolve(__dirname, './dist/'), // 新增
  plugins: [vue()]
})

2)main.js
創(chuàng)建一個(gè)新的文件main.js,需要注意的是,該內(nèi)容中index.html的加載路徑跟electron官網(wǎng)給的配置不同。

// main.js

// 控制應(yīng)用生命周期和創(chuàng)建原生瀏覽器窗口的模組
const { app, BrowserWindow } = require('electron')
const path = require('path')

function createWindow () {
  // 創(chuàng)建瀏覽器窗口
  const mainWindow = new BrowserWindow({
    width: 800,
    height: 600,
    webPreferences: {
      preload: path.join(__dirname, 'preload.js')
    }
  })

  // 加載 index.html
  mainWindow.loadFile('dist/index.html') // 此處跟electron官網(wǎng)路徑不同,需要注意

  // 打開開發(fā)工具
  // mainWindow.webContents.openDevTools()
}

// 這段程序?qū)?huì)在 Electron 結(jié)束初始化
// 和創(chuàng)建瀏覽器窗口的時(shí)候調(diào)用
// 部分 API 在 ready 事件觸發(fā)后才能使用。
app.whenReady().then(() => {
  createWindow()

  app.on('activate', function () {
    // 通常在 macOS 上,當(dāng)點(diǎn)擊 dock 中的應(yīng)用程序圖標(biāo)時(shí),如果沒有其他
    // 打開的窗口,那么程序會(huì)重新創(chuàng)建一個(gè)窗口。
    if (BrowserWindow.getAllWindows().length === 0) createWindow()
  })
})

// 除了 macOS 外,當(dāng)所有窗口都被關(guān)閉的時(shí)候退出程序。 因此,通常對(duì)程序和它們?cè)?
// 任務(wù)欄上的圖標(biāo)來說,應(yīng)當(dāng)保持活躍狀態(tài),直到用戶使用 Cmd + Q 退出。
app.on('window-all-closed', function () {
  if (process.platform !== 'darwin') app.quit()
})

// 在這個(gè)文件中,你可以包含應(yīng)用程序剩余的所有部分的代碼,
// 也可以拆分成幾個(gè)文件,然后用 require 導(dǎo)入。

3)preload.js

創(chuàng)建一個(gè)新的文件preload.js。

// preload.js

// 所有Node.js API都可以在預(yù)加載過程中使用。
// 它擁有與Chrome擴(kuò)展一樣的沙盒。
window.addEventListener('DOMContentLoaded', () => {
  const replaceText = (selector, text) => {
    const element = document.getElementById(selector)
    if (element) element.innerText = text
  }

  for (const dependency of ['chrome', 'node', 'electron']) {
    replaceText(`${dependency}-version`, process.versions[dependency])
  }
})

4)package.json

為了確保能夠運(yùn)行相關(guān)electron的命令,需要修改package.json文件。

首先需要去設(shè)置main屬性,electron默認(rèn)會(huì)去在開始時(shí)尋找項(xiàng)目根目錄下的index.js文件,此處我們使用的是main.js,所以需要去定義下。

// package.json

{
  "name": "kuari",
  "version": "0.0.0",
  "main": "main.js",    // 新增
  "scripts": {
    "dev": "vite",
    "build": "vite build",
    "serve": "vite preview"
  },
  "dependencies": {
    "vue": "^3.2.16"
  },
  "devDependencies": {
    "@vitejs/plugin-vue": "^1.9.3",
    "electron": "^15.1.2",
    "vite": "^2.6.4"
  }
}

最后我們需要新增electron的運(yùn)行命令。

// package.json

{
  "name": "kuari",
  "version": "0.0.0",
  "main": "main.js",
  "scripts": {
    "dev": "vite",
    "build": "vite build",
    "serve": "vite preview",
    "electron:serve": "electron ." // 新增
  },
  "dependencies": {
    "vue": "^3.2.16"
  },
  "devDependencies": {
    "@vitejs/plugin-vue": "^1.9.3",
    "electron": "^15.1.2",
    "vite": "^2.6.4"
  }
}

四. 運(yùn)行

直接在終端輸入如下命令:

yarn electron:serve

接著我們就可以看到我們桌面應(yīng)用就出來咯!

五. 最后

之前做項(xiàng)目一直用的Vue CLI Plugin Electron Builder,這次有個(gè)項(xiàng)目先用electron開發(fā)一下,推一波看看,后期看情況swift重新開發(fā)一個(gè)mac的桌面應(yīng)用。也剛好嘗嘗鮮,一直沒有機(jī)會(huì)試試vite。

electron這個(gè)東東確實(shí)很方便,就是打包出來的應(yīng)用體積太大,真的是硬傷啊。這次目標(biāo)人群首先是windows用戶,所以上electron吧!

到此這篇關(guān)于Vite+Electron快速構(gòu)建VUE3桌面應(yīng)用的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)Vite+Electron快速構(gòu)建VUE3內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vue多層嵌套路由實(shí)例分析

    vue多層嵌套路由實(shí)例分析

    這篇文章主要介紹了vue多層嵌套路由,結(jié)合實(shí)例形式分析了vue.js多層嵌套路由的概念、原理及相關(guān)操作技巧,需要的朋友可以參考下
    2019-03-03
  • Vuex 模塊化使用詳解

    Vuex 模塊化使用詳解

    這篇文章主要介紹了Vuex 模塊化使用詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • sublime如何配置開發(fā)VUE環(huán)境自動(dòng)格式化代碼

    sublime如何配置開發(fā)VUE環(huán)境自動(dòng)格式化代碼

    這篇文章主要介紹了sublime如何配置開發(fā)VUE環(huán)境自動(dòng)格式化代碼問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • 解決Vue前后端跨域問題的方式匯總

    解決Vue前后端跨域問題的方式匯總

    這篇文章主要介紹了解決Vue前后端跨域問題的多種方式,本文主要介紹借助解決Vue前后端跨域問題的幾種方式,將會(huì)使用axios進(jìn)行請(qǐng)求需要的朋友可以參考下
    2022-11-11
  • vue+node實(shí)現(xiàn)圖片上傳及預(yù)覽的示例方法

    vue+node實(shí)現(xiàn)圖片上傳及預(yù)覽的示例方法

    這篇文章主要介紹了vue+node實(shí)現(xiàn)圖片上傳及預(yù)覽的示例方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-11-11
  • Vue項(xiàng)目如何實(shí)現(xiàn)rsa加密

    Vue項(xiàng)目如何實(shí)現(xiàn)rsa加密

    這篇文章主要介紹了Vue項(xiàng)目如何實(shí)現(xiàn)rsa加密,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • Vue2使用cube-ui?實(shí)現(xiàn)搜索過濾、高亮功能

    Vue2使用cube-ui?實(shí)現(xiàn)搜索過濾、高亮功能

    cube-ui?是基于?Vue.js?實(shí)現(xiàn)的精致移動(dòng)端組件庫(kù),由于很長(zhǎng)一段時(shí)間沒有學(xué)習(xí)cube-ui?的功能實(shí)現(xiàn)示例代碼了,今天通過本文給大家介紹下Vue2使用cube-ui?實(shí)現(xiàn)搜索過濾、高亮功能,感興趣的朋友跟隨小編一起看看吧
    2023-01-01
  • 在vscode 中設(shè)置 vue模板內(nèi)容的方法

    在vscode 中設(shè)置 vue模板內(nèi)容的方法

    這篇文章主要介紹了在vscode 中設(shè)置 vue模板內(nèi)容的方法,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-09-09
  • springboot+vue實(shí)現(xiàn)文件上傳下載

    springboot+vue實(shí)現(xiàn)文件上傳下載

    這篇文章主要為大家詳細(xì)介紹了springboot+vue實(shí)現(xiàn)文件上傳下載,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-11-11
  • vue.js中實(shí)現(xiàn)登錄控制的方法示例

    vue.js中實(shí)現(xiàn)登錄控制的方法示例

    這篇文章主要介紹了vue.js中實(shí)現(xiàn)登錄控制的方法,結(jié)合實(shí)例形式分析 vue.js操作登陸頁面流程控制相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2018-04-04

最新評(píng)論