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

推薦する

アプレットにおけるwx.getUserProfileインターフェースの具体的な使用

最近、WeChatミニプログラムは、監査ミニプログラムのwx.loginおよびwx.getUserI...

JavaScriptはイベントリスナーをイベント委任にバッチで追加します。詳細なプロセス

1. イベント委任とは何ですか?イベント委譲: イベントバブリングの特性を利用して、子要素に登録すべ...

MySQL テーブルパーティションの使用法と基本原理の詳細な説明

目次パーティションテーブルとはパーティションテーブルの適用シナリオパーティションテーブルの制限パーテ...

Linux でテキストから改行文字を削除する方法

復帰文字 ( Ctrl+M ) に不安を感じても心配しないでください。それらを排除する簡単な方法がい...

Linux で Ceph 分散ソフトウェアをインストールして使用する方法に関するチュートリアル

目次序文1. 基本環境1. サービス配信2. ネットワーク構成(全ノード) 3. SSHパスワードフ...

Vue3.0 エラーの解決策: モジュール 'worker_threads' が見つかりません

vue3.0 への最初の試みを記録します。プロジェクトを開始したときに、「モジュール 'wo...

MySQL 5.7 のパフォーマンスと sys スキーマの監視パラメータの説明 (推奨)

1. パフォーマンス スキーマ: はじめにMySQL 5.7 では、多数の新しい監視項目の導入、ス...

シンプルな画像切り替えを実現するJavaScript

この記事では、JavaScriptで簡単な画像切り替えを実現するための具体的なコードを参考までに紹介...

SVNサービスバックアップ操作手順の共有

SVN サービスのバックアップ手順1. ソースサーバーとターゲットサーバーを準備するソースサーバー:...

MySQLの権限とインデックスの詳細な説明

mysql の権限とインデックスmysql の最高権限ユーザーは root です。 CREATE U...

Linux の chown コマンドと chmod コマンドの違いの詳細な説明

Linux システムでは、chmod コマンドと chown コマンドの両方を使用して権限を設定でき...

MySQL のジオメトリ型を使用して経度と緯度の距離の問題を処理する方法

テーブルを作成する テーブル `map` を作成します ( `id` int(11) NULLではな...

Dockerにlogstashをインストールする詳細な手順

docker-compose.yml を編集し、次のコンテンツを追加します。 バージョン: '...

SQL ファジー クエリ レポート: ORA-00909: パラメータの数が無効です。解決策

あいまいクエリにOracleデータベースを使用する場合、コンソール エラーは次の図に表示されます。理...

シンプルなHTMLとCSSの使い方の詳細な説明

HTML と CSS を含む JD.com のホームページの静的ページ効果を 3 日間で完成させます...