Vite+ElectronでVUE3デスクトップアプリケーションを素早く構築

Vite+ElectronでVUE3デスクトップアプリケーションを素早く構築

1. はじめに

まず、ViteとElectronを紹介します。

  • Vite は、フロントエンド開発エクスペリエンスを大幅に向上できる新しいフロントエンド構築ツールです。 「もう webpack には戻れない...」というメッセージを投稿した Youda によって開始されました。
  • Electron は、JavaScript、HTML、CSS を使用してデスクトップ アプリケーションを構築するためのフレームワークです。 Electron は Chromium と Node.js をバイナリに埋め込むため、単一の JavaScript コードベースを維持し、Windows、macOS、Linux で実行されるクロスプラットフォーム アプリを作成できます。ネイティブ開発の経験は必要ありません。

Vue を使用してデスクトップ アプリケーションを開発することを考え始めたとき、最初に検索して、現在 2 つの既成のソリューションがあることを知りました。

  • electron-vue: このプロジェクトは統合性が高く、カプセル化も完全です。このソリューションに関する中国語の記事が多数あるため、すぐに使い始めることができます。しかし、問題は組み込みのelectronのバージョンが低すぎることです。記事を書いているときに見たバージョンは2.0.4でしたが、最新のelectronバージョンは15.1.2です。
  • Vue CLI プラグイン Electron Builder: このソリューションは vue-cli に統合されています。vue add electron-builder を使用した後、基本的な構成手順を省略して、すぐに開始できます。ただし、vue-cli でのみ使用でき、vite では使用できません。

したがって、vite と electron を使用する場合は、自分で設定する必要があります。

2. Viteプロジェクトを作成する

1. Viteをインストールする

糸作成バイト

2. プロジェクトを作成する

作成コマンドは次のとおりです。

yarn create vite <vue アプリ名> --template vue

ここでkuariという名前のプロジェクトを作成します。

yarn create vite kuari --template vue

3. 入力して実行する

実行する前にプロジェクトに入り、依存関係をインストールします。

cd クアリ
糸のインストール
糸開発

実行コマンドを入力した瞬間、ほぼ実行状態となり、まさに vite と呼ぶにふさわしい状態です。このとき、出力に従ってアドレスプレビューを開くと、初期化ページが表示されます。

この時点で、基本的な vite プロジェクトが作成されました。

3. Electronを設定する

1. 公式ドキュメント

Electron 公式サイトのクイック スタート ドキュメントには、HTML、JavaScript、CSS を使用して Electron アプリケーションを作成する方法に関する公式のケース スタディがあり、vite+electron ソリューションもこれを参考にしています。

2. インストール

まず、electron to vite アプリケーションをインストールします。電子の現在のバージョンは ^15.1.2 です。

糸を追加 --dev 電子

3. 設定ファイル

1) vite.config.js

'vite' から {defineConfig} をインポートします
'@vitejs/plugin-vue' から vue をインポートします
'path' からパスをインポート // 新規 // https://vitejs.dev/config/
デフォルトのdefineConfigをエクスポートする({
  base: path.resolve(__dirname, './dist/'), // プラグインを追加: [vue()]
})

2) メイン.js
新しいファイル main.js を作成します。コンテンツ内の index.html の読み込みパスは、electron の公式サイトに記載されている構成とは異なることに注意してください。

// メイン.js

// アプリケーションのライフサイクルを制御し、ネイティブブラウザウィンドウを作成するモジュール const { app, BrowserWindow } = require('electron')
定数パス = require('path')

関数createWindow(){
  // ブラウザウィンドウを作成する const mainWindow = new BrowserWindow({
    幅: 800,
    高さ: 600,
    ウェブ設定: {
      プリロード: path.join(__dirname, 'preload.js')
    }
  })

  // index.html をロードする
  mainWindow.loadFile('dist/index.html') // これはelectron公式サイトのパスと異なりますので、ご注意ください // 開発ツールを開きます // mainWindow.webContents.openDevTools()
}

// このプログラムは、Electron が初期化を完了し、ブラウザ ウィンドウを作成するときに呼び出されます。 // 一部の API は、ready イベントがトリガーされた後にのみ使用できます。
app.whenReady().then(() => {
  ウィンドウの作成()

  app.on('activate', 関数() {
    // 通常、macOS では、ドック内のアプリケーション アイコンをクリックすると、他のウィンドウが開いていない場合は、プログラムによって新しいウィンドウが作成されます。
    (BrowserWindow.getAllWindows().length === 0) の場合、createWindow()
  })
})

// macOS を除き、すべてのウィンドウが閉じられたらプログラムを終了します。 したがって、通常、ユーザーが Cmd + Q を使用して終了するまで、プログラムとタスクバー上のそのアイコンはアクティブなままである必要があります。
app.on('ウィンドウがすべて閉じました', 関数() {
  (process.platform !== 'darwin') の場合、app.quit()
})

// このファイルには、アプリケーションの残りのコードをすべて含めることができます。
// 複数のファイルに分割し、require を使用してインポートすることもできます。

3) プリロード

新しいファイル preload.js を作成します。

// プリロード.js

// プリロード プロセス中はすべての Node.js API が利用可能です。
// Chrome 拡張機能と同じサンドボックスを備えています。
window.addEventListener('DOMContentLoaded', () => {
  const replaceText = (セレクター、テキスト) => {
    const 要素 = document.getElementById(セレクタ)
    if (要素) element.innerText = テキスト
  }

  for (['chrome', 'node', 'electron'] の定数依存関係) {
    replaceText(`${dependency}-version`, process.versions[dependency])
  }
})

4) パッケージ.json

関連する electron コマンドを実行できるようにするには、package.json ファイルを変更する必要があります。

まず、main プロパティを設定する必要があります。Electron は、最初にデフォルトでプロジェクトのルート ディレクトリにある index.js ファイルを探します。ここでは main.js を使用するので、これを定義する必要があります。

// パッケージ.json

{
  "名前": "クアリ",
  "バージョン": "0.0.0",
  "main": "main.js", // "scripts": { を追加
    "dev": "vite",
    "ビルド": "vite ビルド",
    "serve": "vite プレビュー"
  },
  「依存関係」: {
    "vue": "^3.2.16"
  },
  「devDependencies」: {
    "@vitejs/プラグイン-vue": "^1.9.3",
    "電子": "^15.1.2",
    "vite": "^2.6.4"
  }
}

最後に、electron の実行コマンドを追加する必要があります。

// パッケージ.json

{
  "名前": "クアリ",
  "バージョン": "0.0.0",
  "メイン": "main.js",
  「スクリプト」: {
    "dev": "vite",
    "ビルド": "vite ビルド",
    "serve": "vite プレビュー",
    "electron:serve": "electron ." // 新規},
  「依存関係」: {
    "vue": "^3.2.16"
  },
  「devDependencies」: {
    "@vitejs/プラグイン-vue": "^1.9.3",
    "電子": "^15.1.2",
    "vite": "^2.6.4"
  }
}

4. 走る

ターミナルに次のコマンドを直接入力します。

糸電子:サーブ

すると、デスクトップ アプリケーションが表示されます。

5. 最後に

これまでのプロジェクトでは、常に Vue CLI プラグイン Electron Builder を使用してきました。今回は、まず Electron で開発し、それをプッシュして、どのように進むかを確認するプロジェクトがあります。その後、状況に応じて Swift を使用して Mac デスクトップ アプリケーションを再開発します。何か新しいものを試してみたかったのですが、Viteを試す機会がありませんでした。

Electron は本当に便利ですが、パッケージ化されたアプリケーションが大きすぎるため、これは本当に欠点です。今回はまずWindowsユーザーをターゲットにしているので、electronを使ってみましょう!

Vite+Electron で VUE3 デスクトップ アプリケーションをすばやく構築する方法についての記事はこれで終わりです。Vite+Electron で VUE3 をすばやく構築する方法の詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Electron-viteは、新世代の電子開発および構築ツールです。

<<:  Zabbix を使用して ogg プロセスを監視する (Windows プラットフォーム)

>>:  HTML テーブル タグ チュートリアル (34): 行スパン属性 ROWSPAN

推薦する

Windows システムに mysql5.7.21 をインストールするための詳細なチュートリアル

MySQL インストーラーは、MySQL ソフトウェアのあらゆるニーズに対応する、使いやすいウィザー...

WeChatミニプログラムビデオ集中砲火位置ランダム

この記事では、WeChatミニプログラムのビデオ弾幕の位置をランダム化するための具体的なコードを紹介...

Windows オペレーティング システムでポートの使用状況を照会およびクリアするプログラム

Windowsオペレーティングシステムでは、ポートの占有状況を照会し、ポートの占有状況をクリアするプ...

Vue ショッピングカートのケーススタディ

目次1. ショッピングカートの例2. コードの実装3. まとめ1. ショッピングカートの例一連の学習...

CSS のフローティング サンプル コードをクリアする方法

概要この記事のフレームワーク図は次のとおりです。 1. フローティングとは一体何でしょうか? W3s...

2019 年に最も役立ち重要なオープンソース ツール トップ 10

Black Duck の 2017 年のオープンソース調査では、回答者の 77% がオープンソース...

このリファレンスとJavaScriptのカスタムプロパティの詳細な説明

目次1. このキーワード2. カスタム属性3. 包括的なケース1:タブの実装付録要約する1. このキ...

MYSQL インストールの解凍バージョンと発生したエラーと解決策

1 インストールMYSQL 公式サイトから対応する解凍バージョンをダウンロードし、必要なディレクトリ...

Docker 経由で Redis 6.x クラスターをデプロイする方法

システム環境: Redis バージョン: 6.0.8 Docker バージョン: 19.03.12シ...

JavaScript ループトラバーサルの 24 種類のメソッドをすべてご存知ですか?

目次序文1. 配列走査法1. 各() 2. マップ() 3. 〜のために4. フィルター() 5. ...

Nginx 転送ソケットポート設定の詳細な説明

Nginx によるソケット ポート転送の一般的なシナリオ: オンライン学習アプリケーションでは、通常...

Vue の状態管理: Vuex の代わりに Pinia を使用する

目次1. ピニアとは何ですか? 2. Piniaは使いやすい3. ユーザーエクスペリエンス1. ピニ...

JS関数のカリー化の詳細な説明

目次1. 補足知識ポイント: 関数の暗黙的な変換2. 補足知識: call/apply を使って配列...

見落とされがちなMETAタグの特殊効果(ページ遷移効果)

Web デザインで js を使用すると、多くのページ効果を実現できますが、HTML タグの META...

Docker で MySQL クラスターを構築する方法の例

Docker の基本的な手順:アップデートパッケージ yum -y アップデートDocker仮想マシ...