Maison interface Web Voir.js Comment développer la configuration client avec vue3+electron12+dll

Comment développer la configuration client avec vue3+electron12+dll

May 12, 2023 pm 10:43 PM
vue3 electron dll

Modifier la source de l'entrepôt

En raison de l'inconnu de la version électronique, il peut arriver que le serveur soit disponible et qu'un écran blanc s'ouvre après la construction, il doit donc être traité avec prudence. Il est préférable de valider une version lorsqu'elle est disponible pour faciliter la restauration du code. Si quelqu'un a de meilleures informations, il aimerait les partager.

Avant de démarrer la configuration, vous pouvez modifier légèrement les fichiers rc de Yarn et NPM. Utilisez des commandes ou des fichiers pour modifier directement .npmrc ou .yarnrc. Ces deux fichiers de configuration globaux se trouvent généralement dans le dossier C:user de votre compte actuel. , ou créez un nouveau fichier rc de commande de fichier sous le projet en cours pour modifier localement la configuration.
Étant donné que le téléchargement d'électrons échouera en raison de problèmes de réseau, il est remplacé par la source Taobao, la source Huawei peut également être utilisée.

npm set config registry http://registry.npm.taobao.org/
npm set config chromedriver_cdnurl http://registry.npm.taobao.org/chromedriver
npm set config electron_mirror http://registry.npm.taobao.org/electron/
npm set config electron_builder_binaries_mirror http://registry.npm.taobao.org/electron-builder-binaries/
Copier après la connexion

Dans le processus d'installation, utilisez vue create pour sélectionner la version vue3, entrez dans le répertoire du projet, ajoutez vue electronic-builder pour configurer electronic et sélectionnez la version actuelle 12.

Démarrage

La commande de démarrage correspondante a été assemblée dans package.json

  • Utilisez npm run electronic:serve pour démarrer le développement

  • npm run electronic:build pour compiler et empaqueter pour la production

. Remplacez vue- devtools

Le src/background.ts sous le projet est le répertoire de démarrage d'Electron. Dans l'environnement de développement, les situations suivantes se produiront où le temps d'attente de démarrage est long

Lancement d'Electron...
Échec de la récupération de l'extension, tentative 4 fois supplémentaire
Échec de la récupération de l'extension, tentative 3 fois supplémentaires
Échec de la récupération de l'extension, tentative 2 fois supplémentaires
Échec de la récupération de l'extension, tentative 1 fois supplémentaire

est dû au fait que le projet doit être connecté sur le Google Store pour télécharger et charger vue-devtools.

J'ai essayé de nombreuses façons de charger les outils, mais toutes ont échoué. La méthode temporaire est donc la suivante : supprimer les outils. Le code est trouvé, supprimez simplement installExtension

app.on('ready', async () => {
  if (isDevelopment && !process.env.IS_TEST) {
    // Install Vue Devtools
    try {
    //  await installExtension(VUEJS_DEVTOOLS)
    } catch (e) {
      console.error('Vue Devtools failed to install:', e.toString())
    }
  }
  createWindow()
})
Copier après la connexion

J'ai déjà essayé de nombreuses méthodes mais cela n'a pas fonctionné. Plus tard, j'ai soigneusement comparé ce qui suit et j'ai trouvé quelques problèmes.

La version vue3 est différente de la version vue2 de vue-devtools, donc les outils de développement de vue2 ne peuvent pas être utilisés par vue3. Par conséquent, vous devez télécharger les outils de développement correspondant à vue3. La dernière version de vue2 est la 5.x, tandis que la version de vue3 est la version bêta 6.x. Cette version du plugin peut être téléchargée via crx4chrome. Décompressez le crx téléchargé, puis copiez-le dans le répertoire racine du projet. Utilisez le chargement de session pour remplacer la partie d'origine wait installExtension (VUEJS_DEVTOOLS) par

import {session} from 'electron'

app.on('ready', async () => {
  if (isDevelopment && !process.env.IS_TEST) {
    // Install Vue Devtools
    try {
    const vue_devtools = 'ljjemllljcmogpfapbkkighbhhppjdbg-6.0.0-beta-13-Crx4Chrome.com'
    await session.defaultSession.loadExtension(path.resolve(vue_devtools))
    } catch (e) {
      console.error('Vue Devtools failed to install:', e.toString())
    }
  }
  createWindow()
})
Copier après la connexion

Après avoir démarré le projet, vous pouvez afficher l'extension vue. Pour

(nœud : 5904) ExtensionLoadWarning : avertissements lors du chargement de l'extension sur E:scanvue3_electronljjemllljcmogpfapbkkighbhhppjdbg-6.0.0-beta-13-Crx4Chrome.com :
Clé manifeste non reconnue 'browser_action'.
Clé manifeste non reconnue 'update_ url'.
Autorisation « contextMenus » est inconnu ou le modèle d'URL est mal formé.
Impossible de charger l'extension avec le nom de fichier ou de répertoire _metadata. Les noms de fichiers commençant par « _ » sont réservés à l'utilisation par le système. pour montrer où l'avertissement a été créé)

Vous pouvez l'ignorer. Si vous ne voulez pas voir d'invites ennuyeuses, vous pouvez supprimer le contenu correspondant aux invites dans le fichier manifest.json de tools

Notes


ne peut pas être utilisée

Lors de l'utilisation de la configuration du script en tant que module, l'étape de service peut être utilisée normalement, mais après la construction, le composant n'est pas chargé, la page est vide et aucune erreur n'est signalée. La raison est inconnue

Utilisation d'électron-edge-js pour le chargement. le fichier dll développé par c#, le processus de configuration est légèrement fastidieux et il a fallu 2 jours pour trouver la réponse, mais tout a échoué, voici la solution, vous devez prendre le bon médicament

Les Dll développées en c++ et c# utilisent différentes chargeurs, et c++ utilise ffi-napi.

L'utilisation de Edge nécessite l'ajout de trois configurations en même temps


Lorsque rien n'est configuré, une erreur Uncaught (in promise) : Impossible de trouver le module '...node_moduleselectrondistresourceselectron.asarrenderernativewin32x6414.16.0edge_nativeclr' se produira à ce moment-là. doit être Le fichier .config.js est ajouté. S'il n'y a pas de fichier de configuration, il doit être créé au même niveau que package.json.


module.exports = {
    pluginOptions: {
        electronBuilder: {
            externals: ['electron-edge-js']
        }
    }
}
Copier après la connexion
Lorsque la configuration n'est pas activée, vous ne pouvez pas utiliser les variables intégrées de nodejs telles que __dirname __filename

Uncaught (promis) ReferenceError : __dirname n'est pas défini Vous devez d'abord configurer une nouvelle fenêtre de navigateur

{      
    // 如果使用到nodejs的api,则打包时需要将此设置为true
    nodeIntegration: true,
    // 同时,需要设置此项为false
    // 未设置时报 Uncaught ReferenceError: require is not defined
    contextIsolation: false  
}
Copier après la connexion
Une fois la configuration ci-dessus terminée terminé, Uncaught (promis) sera signalé) TypeError : fs.existsSync n'est pas une fonction

Pour le moment, vous devez continuer à ajouter des éléments de configuration de vue.config.js

module.exports = {
    pluginOptions: {
        electronBuilder: {
            externals: ['electron-edge-js'],
            // 此处同样需要开启,将会在编译阶段将引用关系写入
            nodeIntegration: true, 
        }
    }
}
Copier après la connexion
Si vous configurez cet élément séparément, mais n'activez pas nodeIntegration : vrai pour le nouveau BrowserWindow, Uncaught ReferenceError se produira : require n'est pas défini

此外,对于dll放置的文件夹,一般在项目根目录创resources用于存放资源,并且项目打包过程中会不会直接打包资源目录,所以需要增加资源配置,以防止出错。对于文件的引用,在开发环境下,为当前所看到的结构,当编译打包后,为安装目录下resources目录,所以生产和开发的引用文件存在一定区别,可以实验后再看文件引用

 module.exports = {
     pluginOptions: {
         electronBuilder: {
             externals: ['electron-edge-js'],
             // 此处同样需要开启,将会在编译阶段将引用关系写入
             nodeIntegration: true, 
             builderOptions:{
                 extraResources: {
                     // 拷贝静态文件到指定位置,否则会提示文件找不到
                     from: 'resources/',
                     to: './'
                 },
             }
         }
     }
 }
Copier après la connexion

提供文件获取目录方法,可以直接获取不同操作系统下app的resource目录,如果是window即 process.platform==='win32'

const path = require('path')
export function getAppResourcePath (filePath:string) {
    if (process.platform === 'darwin' || process.platform === 'linux') {
        if (process.env.NODE_ENV === 'development') {
            return path.resolve('resources/' + filePath)
        } else {
            return path.join(__dirname, '..') + filePath
        }
    } else {
        return path.resolve('resources/' + filePath)
    }
}
Copier après la connexion

使用setup语法时,需使用require('electron-edge-js')引入,不可以使用import,否则会报 Syntax Error: TypeError: Cannot read property 'content' of null 而非 setup语法,则可以直接import

无边框窗口

系统本身是带有框架的,如果需要自定义框架,可以使用frameless 设置,如果需要使用自定义组件(比如 div.custom-frame-title)拖拽操作窗口时,需要给对应的元素增加样式:

 .custom-frame-title {
   -webkit-user-select: none; // 此项防止与文本选择冲突
   -webkit-app-region: drag; // 此项为系统相应状态栏
 }
Copier après la connexion

前后台通知

import {ipcMain,ipcRenderer} from 'electron'
Copier après la connexion

在electron中有很多可用api,其中最重要的是:ipcMain和ipcRenderer,用于ui进程和系统进程的通信。 在vue内使用ipcRenderer.on('eventname') 接受系统发来的消息,用ipcRenderer.send('eventname') 发送通知给系统,同样ipcMain可以在主线程使用。

ipc通常结合自定义标题栏完成以下操作,或者其他需要操作窗口本身的事件

win.minimize() //最小化窗口
win.maximize() //最大化窗口
win.close() //关闭窗口
win.hide() //隐藏窗口
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Nvgpucomp64.dll provoque le crash des jeux PC Windows ; Nvgpucomp64.dll provoque le crash des jeux PC Windows ; Mar 26, 2024 am 08:20 AM

Si Nvgpucomp64.dll provoque des plantages fréquents de votre jeu, les solutions fournies ici peuvent vous aider. Ce problème est généralement dû à des pilotes de carte graphique obsolètes ou corrompus, à des fichiers de jeu corrompus, etc. La résolution de ces problèmes peut vous aider à résoudre les plantages du jeu. Le fichier Nvgpucomp64.dll est associé aux cartes graphiques NVIDIA. Lorsque ce fichier plante, votre jeu plante également. Cela se produit généralement dans des jeux comme LordsoftheFallen, LiesofP, RocketLeague et ApexLegends. Nvgpucomp64.dll plante les jeux sur un PC Windows si N

Analyse du problème d'absence du fichier CoreMessaging.dll dans le répertoire système Windows Analyse du problème d'absence du fichier CoreMessaging.dll dans le répertoire système Windows Feb 11, 2024 pm 11:42 PM

De nombreux utilisateurs seront informés que coremessaging.dll est manquant lorsqu'ils utilisent leur ordinateur pour jouer à des jeux. Je pense que de nombreux utilisateurs penseront immédiatement qu'il y a un problème avec le logiciel ou le jeu. En fait, ce n'est pas le cas. Il manque le fichier dll sur l'ordinateur, les utilisateurs peuvent télécharger le fichier coremessaging.dll. Laissez ce site présenter soigneusement aux utilisateurs l'analyse du problème selon lequel le fichier CoreMessaging.dll dans le répertoire système Windows est manquant et introuvable. Analyse du problème selon lequel le fichier CoreMessaging.dll est manquant et introuvable dans le répertoire système Windows 1. Téléchargez le fichier CoreMessaging.dll 2.

vue3+vite : Comment résoudre l'erreur lors de l'utilisation de require pour importer dynamiquement des images dans src vue3+vite : Comment résoudre l'erreur lors de l'utilisation de require pour importer dynamiquement des images dans src May 21, 2023 pm 03:16 PM

vue3+vite:src utilise require pour importer dynamiquement des images et des rapports d'erreurs et des solutions. vue3+vite importe dynamiquement plusieurs images. Si vue3 est développé à l'aide de TypeScript, il y aura un message d'erreur indiquant que requireisnotdefined ne peut pas être utilisé comme imgUrl. :require(' .../assets/test.png') est importé car TypeScript ne prend pas en charge require, donc l'importation est utilisée. Voici comment le résoudre : utilisez waitimport.

Comment utiliser tinymce dans le projet vue3 Comment utiliser tinymce dans le projet vue3 May 19, 2023 pm 08:40 PM

tinymce est un plug-in d'éditeur de texte riche entièrement fonctionnel, mais l'introduction de tinymce dans vue n'est pas aussi fluide que les autres plug-ins de texte riche de Vue. tinymce lui-même ne convient pas à Vue, et @tinymce/tinymce-vue doit être introduit, et Il s'agit d'un plug-in de texte riche étranger et n'a pas passé la version chinoise. Vous devez télécharger le package de traduction depuis son site officiel (vous devrez peut-être contourner le pare-feu). 1. Installez les dépendances associées npminstalltinymce-Snpminstall@tinymce/tinymce-vue-S2. Téléchargez le package chinois 3. Introduisez le skin et le package chinois Créez un nouveau dossier tinymce dans le dossier public du projet et téléchargez le.

Comment actualiser le contenu partiel de la page dans Vue3 Comment actualiser le contenu partiel de la page dans Vue3 May 26, 2023 pm 05:31 PM

Pour réaliser un rafraîchissement partiel de la page, il suffit d'implémenter le re-rendu du composant local (dom). Dans Vue, le moyen le plus simple d'obtenir cet effet est d'utiliser la directive v-if. Dans Vue2, en plus d'utiliser l'instruction v-if pour restituer le dom local, nous pouvons également créer un nouveau composant vierge. Lorsque nous devons actualiser la page locale, accéder à cette page de composant vierge, puis y revenir. la garde beforeRouteEnter dans la page d’origine vierge. Comme le montre la figure ci-dessous, comment cliquer sur le bouton d'actualisation dans Vue3.X pour recharger le DOM dans la zone rouge et afficher l'état de chargement correspondant. Puisque la garde dans le composant dans la syntaxe scriptsetup dans Vue3.X n'a ​​que o

Comment Vue3 analyse le démarque et implémente la mise en évidence du code Comment Vue3 analyse le démarque et implémente la mise en évidence du code May 20, 2023 pm 04:16 PM

Pour implémenter le front-end du blog avec Vue, vous devez implémenter l'analyse markdown. S'il y a du code, vous devez implémenter la mise en évidence du code. Il existe de nombreuses bibliothèques d'analyse de démarques pour Vue, telles que markdown-it, vue-markdown-loader, Markdown, vue-markdown, etc. Ces bibliothèques sont toutes très similaires. Marked est utilisé ici et highlight.js est utilisé comme bibliothèque de mise en évidence du code. Les étapes d'implémentation spécifiques sont les suivantes : 1. Installez les bibliothèques dépendantes. Ouvrez la fenêtre de commande sous le projet vue et entrez la commande suivante npminstallmarked-save//marked pour convertir le markdown en htmlnpmins.

Comment résoudre le problème de libcurl.dll manquant dans le système win7 ? Win7 ne trouve pas la solution du fichier libcurl.dll Comment résoudre le problème de libcurl.dll manquant dans le système win7 ? Win7 ne trouve pas la solution du fichier libcurl.dll Feb 12, 2024 am 08:15 AM

Comment résoudre le problème de libcurl.dll manquant dans le système win7 ? Généralement, les fichiers dll empêcheront certains programmes d'être utilisés normalement. Face à ce problème, de nombreux utilisateurs ne savent pas comment le résoudre. En réponse à cette situation, l'éditeur partagera aujourd'hui une solution détaillée avec la majorité des utilisateurs. . J'espère que Win7 sera utilisé aujourd'hui. Les didacticiels pourront aider un grand nombre d'utilisateurs, alors jetons-y un coup d'œil. Solution au problème libcurl.dll manquant dans le système win7 1. Téléchargez le fichier libcurl.dll. 2. Après le téléchargement, placez le fichier dans le dossier correspondant. Les chemins pour les systèmes d'exploitation 32 bits et 64 bits sont les suivants : Pour le système d'exploitation Win7 32 bits, copiez le fichier directement dans C:\Windows\SYSTEM32.

Comment sélectionner un avatar et le recadrer dans Vue3 Comment sélectionner un avatar et le recadrer dans Vue3 May 29, 2023 am 10:22 AM

L'effet final est d'installer le composant VueCropper filaddvue-cropper@next. La valeur d'installation ci-dessus est pour Vue3 ou si vous souhaitez utiliser d'autres méthodes de référence, veuillez visiter son adresse officielle npm : tutoriel officiel. Il est également très simple de le référencer et de l'utiliser dans un composant. Il suffit d'introduire le composant correspondant et son fichier de style. Je ne le référence pas globalement ici, mais j'introduis uniquement import{userInfoByRequest}from'../js/api. ' dans mon fichier de composant import{VueCropper}from'vue-cropper&.

See all articles