So entwickeln Sie eine Client-Konfiguration mit vue3+electron12+dll
Ändern Sie die Warehouse-Quelle
Aufgrund der Unbekanntheit der Elektronenversion kann es vorkommen, dass der Server verfügbar ist und nach dem Erstellen ein weißer Bildschirm geöffnet wird. Daher ist Vorsicht geboten. Es ist am besten, eine Version festzuschreiben, wenn sie verfügbar ist, um das Rollback des Codes zu erleichtern. Wenn jemand bessere Informationen hat, würde er diese gerne weitergeben.
Bevor Sie mit der Konfiguration beginnen, können Sie die RC-Dateien von Yarn und NPM leicht ändern. Verwenden Sie Befehle oder Dateien, um .npmrc oder .yarnrc direkt zu ändern. Diese beiden globalen Konfigurationsdateien befinden sich im Allgemeinen im Ordner C:user Ihres aktuellen Kontos. , oder erstellen Sie eine neue Dateibefehls-RC-Datei unter dem aktuellen Projekt, um die Konfiguration lokal zu ändern.
Da der Elektronen-Download aufgrund von Netzwerkproblemen fehlschlägt, wird er auf die Taobao-Quelle geändert, die Huawei-Quelle kann ebenfalls verwendet werden.
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/
Verwenden Sie im Installationsprozess vue create
Startup
Der entsprechende Startbefehl wurde in package.json zusammengestellt.
Verwenden Sie npm run Electron:Serve, um die Entwicklung zu starten Ersetzen Sie vue-devtools
- Src/background.ts unter dem Projekt project ist das Startverzeichnis von Electron. In der Entwicklungsumgebung treten die folgenden Situationen auf, in denen die Startwartezeit lang ist: Electron wird gestartet ...
Die Erweiterung konnte nicht abgerufen werden, es wurde noch 4 Mal versucht
Die Erweiterung konnte nicht abgerufen werden, es wurde noch 3 Mal versucht. Die Erweiterung konnte nicht abgerufen werden, es wurde noch 2 Mal versucht.
Ich habe viele Möglichkeiten zum Laden von Werkzeugen ausprobiert, aber alle sind fehlgeschlagen. Daher besteht die vorübergehende Lösung darin, Werkzeuge zu entfernen. Der Code wurde gefunden, entfernen Sie einfach 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() })
Ich habe schon viele Methoden ausprobiert, aber es hat nicht funktioniert. Später habe ich das Folgende sorgfältig verglichen und einige Probleme festgestellt.
Die vue3-Version unterscheidet sich von der vue2-Version von vue-devtools, daher können die Entwicklungstools von vue2 nicht von vue3 verwendet werden. Daher müssen Sie die Entwicklungstools herunterladen, die vue3 entsprechen. Die neueste Version von vue2 ist 5.x, während die Version von vue3 die Betaversion 6.x ist. Diese Version des Plugins kann über crx4chrome heruntergeladen werden. Entpacken Sie den heruntergeladenen crx und kopieren Sie ihn dann in das Stammverzeichnis des Projekts. Ersetzen Sie den ursprünglichen Teil „await installExtension(VUEJS_DEVTOOLS)“ durchUnbekannter Manifestschlüssel „update_url“.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() })Nach dem Login kopieren
Nach dem Starten des Projekts können Sie die Vue-Erweiterung anzeigen. Für
(node:5904) ExtensionLoadWarning: Warnungen beim Laden der Erweiterung unter E:scanvue3_electronljjemllljcmogpfapbkkighbhhppjdbg-6.0.0-beta-13-Crx4Chrome.com: Unbekannter Manifestschlüssel „browser_action“.
Erlaubnis „ contextMenus“ ist unbekannt oder das URL-Muster ist fehlerhaft.
Erweiterung mit Datei- oder Verzeichnisnamen _metadata kann nicht geladen werden. Dateinamen, die mit „_“ beginnen, sind für die Verwendung durch das System reserviert.(Verwenden Sie „electron --trace-warnings ...“) um anzuzeigen, wo die Warnung erstellt wurde)
Sie können sie ignorieren. Wenn Sie keine störenden Eingabeaufforderungen sehen möchten, können Sie den den Eingabeaufforderungen entsprechenden Inhalt in der Datei manifest.json der Tools löschen. Hinweise: Die Syntax des Skript-Setups kann nicht verwendet werden Als Modul kann es in der Serve-Phase normal verwendet werden, aber nach dem Build wird die Komponente nicht geladen, die Seite ist leer und es wird kein Fehler gemeldet. Der Grund ist unbekanntVerwenden von Electron-Edge-Js zum Laden Bei der von C# entwickelten DLL-Datei ist der Konfigurationsprozess etwas umständlich und es hat 2 Tage gedauert, die Antwort zu finden, aber alles ist fehlgeschlagen. Das Folgende ist die Lösung, Sie müssen die richtige Medizin einnehmen
Dlls, die in C++ und C# entwickelt wurden, verwenden unterschiedliche Loader und C++ verwendet ffi-napi.
Für die Verwendung von Edge ist das gleichzeitige Hinzufügen von drei Konfigurationen erforderlich.
Wenn nichts konfiguriert ist, wird der Fehler „Uncaught (in versprochen)“ angezeigt: Modul „...node_moduleselectrondistresourceselectron.asarrenderernativewin32x6414.16.0edge_nativeclr“ kann nicht gefunden werden muss sein Die Datei .config.js wird hinzugefügt. Wenn keine Konfigurationsdatei vorhanden ist, muss sie auf derselben Ebene wie package.json erstellt werden.
module.exports = {
pluginOptions: {
electronBuilder: {
externals: ['electron-edge-js']
}
}
}
Nach dem Login kopieren
Wenn die Konfiguration nicht aktiviert ist, können Sie keine integrierten Nodejs-Variablen wie __dirname __filename verwenden.
Uncaught (im Versprechen) ReferenceError: __dirname ist nicht definiert. Zuerst müssen Sie ein neues BrowserWindow konfigurieren
module.exports = { pluginOptions: { electronBuilder: { externals: ['electron-edge-js'] } } }
{ // 如果使用到nodejs的api,则打包时需要将此设置为true nodeIntegration: true, // 同时,需要设置此项为false // 未设置时报 Uncaught ReferenceError: require is not defined contextIsolation: false }
Zu diesem Zeitpunkt müssen Sie weiterhin Konfigurationselemente von vue.config.js hinzufügenWenn Sie dieses Element separat konfigurieren, aber NodeIntegration nicht aktivieren: wahr für neues BrowserWindow, nicht erfasster Referenzfehler wird auftreten: Anforderung ist nicht definiertmodule.exports = { pluginOptions: { electronBuilder: { externals: ['electron-edge-js'], // 此处同样需要开启,将会在编译阶段将引用关系写入 nodeIntegration: true, } } }Nach dem Login kopieren
此外,对于dll放置的文件夹,一般在项目根目录创resources用于存放资源,并且项目打包过程中会不会直接打包资源目录,所以需要增加资源配置,以防止出错。对于文件的引用,在开发环境下,为当前所看到的结构,当编译打包后,为安装目录下resources目录,所以生产和开发的引用文件存在一定区别,可以实验后再看文件引用
module.exports = { pluginOptions: { electronBuilder: { externals: ['electron-edge-js'], // 此处同样需要开启,将会在编译阶段将引用关系写入 nodeIntegration: true, builderOptions:{ extraResources: { // 拷贝静态文件到指定位置,否则会提示文件找不到 from: 'resources/', to: './' }, } } } }
提供文件获取目录方法,可以直接获取不同操作系统下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) } }
使用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; // 此项为系统相应状态栏 }
前后台通知
import {ipcMain,ipcRenderer} from 'electron'
在electron中有很多可用api,其中最重要的是:ipcMain和ipcRenderer,用于ui进程和系统进程的通信。 在vue内使用ipcRenderer.on('eventname') 接受系统发来的消息,用ipcRenderer.send('eventname') 发送通知给系统,同样ipcMain可以在主线程使用。
ipc通常结合自定义标题栏完成以下操作,或者其他需要操作窗口本身的事件
win.minimize() //最小化窗口 win.maximize() //最大化窗口 win.close() //关闭窗口 win.hide() //隐藏窗口
Das obige ist der detaillierte Inhalt vonSo entwickeln Sie eine Client-Konfiguration mit vue3+electron12+dll. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Wenn Nvgpucomp64.dll dazu führt, dass Ihr Spiel häufig abstürzt, können Ihnen die hier bereitgestellten Lösungen helfen. Dieses Problem wird normalerweise durch veraltete oder beschädigte Grafikkartentreiber, beschädigte Spieledateien usw. verursacht. Das Beheben dieser Probleme kann Ihnen dabei helfen, Spielabstürze zu beheben. Die Datei Nvgpucomp64.dll ist mit NVIDIA-Grafikkarten verknüpft. Wenn diese Datei abstürzt, stürzt auch Ihr Spiel ab. Dies geschieht normalerweise in Spielen wie LordsoftheFallen, LiesofP, RocketLeague und ApexLegends. Nvgpucomp64.dll stürzt Spiele auf Windows-PCs ab, wenn N

Viele Benutzer werden darauf hingewiesen, dass coremessaging.dll fehlt, wenn sie ihre Computer zum Spielen verwenden. Ich glaube, dass viele Benutzer sofort denken, dass ein Problem mit der Software oder dem Spiel vorliegt Wenn auf dem Computer die DLL-Datei fehlt, können Benutzer die Datei coremessaging.dll herunterladen. Lassen Sie diese Site den Benutzern die Analyse des Problems, dass die Datei CoreMessaging.dll im Windows-Systemverzeichnis fehlt und nicht gefunden werden kann, sorgfältig vorstellen. Analyse des Problems, dass die Datei CoreMessaging.dll im Windows-Systemverzeichnis fehlt und nicht gefunden werden kann 1. Laden Sie die Datei CoreMessaging.dll herunter 2.

vue3+vite:src verwendet „require“, um Bilder dynamisch zu importieren, und vue3+vite importiert dynamisch mehrere Bilder. Wenn Sie „requireisnotdefined“ verwenden, wird eine Fehlermeldung angezeigt like vue2 like imgUrl:require(' .../assets/test.png') wird importiert, da Typescript Require nicht unterstützt, daher wird Import verwendet. So lösen Sie das Problem: Verwenden Sieawaitimport

tinymce ist ein voll funktionsfähiges Rich-Text-Editor-Plug-in, aber die Einführung von tinymce in Vue ist nicht so reibungslos wie bei anderen Vue-Rich-Text-Plug-ins. Tinymce selbst ist nicht für Vue geeignet, und @tinymce/tinymce-vue muss eingeführt werden. und Es handelt sich um ein ausländisches Rich-Text-Plug-in, das die chinesische Version nicht bestanden hat. Sie müssen das Übersetzungspaket von der offiziellen Website herunterladen (möglicherweise müssen Sie die Firewall umgehen). 1. Installieren Sie die zugehörigen Abhängigkeiten npminstalltinymce-Snpminstall@tinymce/tinymce-vue-S2. 3. Führen Sie den Skin und das chinesische Paket ein. Erstellen Sie einen neuen Tinymce-Ordner im öffentlichen Ordner des Projekts und laden Sie ihn herunter

Um eine teilweise Aktualisierung der Seite zu erreichen, müssen wir nur das erneute Rendern der lokalen Komponente (dom) implementieren. In Vue lässt sich dieser Effekt am einfachsten mit der v-if-Direktive erzielen. In Vue2 können wir zusätzlich zur Verwendung der v-if-Anweisung zum erneuten Rendern des lokalen Doms auch eine neue leere Komponente erstellen. Wenn wir die lokale Seite aktualisieren müssen, springen wir zu dieser leeren Komponentenseite und springen dann wieder hinein der beforeRouteEnter-Schutz in der leeren Komponente. Wie in der Abbildung unten gezeigt, wie man in Vue3.X auf die Schaltfläche „Aktualisieren“ klickt, um das DOM im roten Feld neu zu laden und den entsprechenden Ladestatus anzuzeigen. Da der Guard in der Komponente in der scriptsetup-Syntax in Vue3.X nur o hat

Um das Blog-Frontend mit Vue zu implementieren, müssen Sie die Markdown-Analyse implementieren. Wenn Code vorhanden ist, müssen Sie die Code-Hervorhebung implementieren. Es gibt viele Markdown-Parsing-Bibliotheken für Vue, wie z. B. markdown-it, vue-markdown-loader, markiert, vue-markdown usw. Diese Bibliotheken sind alle sehr ähnlich. Hier wird Markiert verwendet, und highlights.js wird als Code-Hervorhebungsbibliothek verwendet. Die spezifischen Implementierungsschritte lauten wie folgt: 1. Installieren Sie abhängige Bibliotheken. Öffnen Sie das Befehlsfenster unter dem Vue-Projekt und geben Sie den folgenden Befehl ein: npminstallmarked-save//marked, um Markdown in htmlnpmins zu konvertieren

Wie kann das Problem der fehlenden libcurl.dll im Win7-System gelöst werden? Im Allgemeinen führen DLL-Dateien dazu, dass einige Programme nicht normal verwendet werden können. Viele Benutzer wissen nicht, wie sie es lösen können. Als Reaktion auf diese Situation wird der Editor heute eine detaillierte Lösung mit den meisten Benutzern teilen Ich hoffe, dass Win7 heute einer großen Anzahl von Benutzern helfen kann. Lösung für fehlende libcurl.dll im Win7-System 1. Laden Sie die Datei libcurl.dll herunter. 2. Legen Sie die Datei nach dem Herunterladen in den entsprechenden Ordner. Die Pfade für 32-Bit- und 64-Bit-Betriebssysteme lauten wie folgt: Für 32-Bit-Win7-Betriebssysteme kopieren Sie die Datei direkt nach C:\Windows\SYSTEM32

Der letzte Effekt besteht darin, die VueCropper-Komponente „garnaddvue-cropper@next“ zu installieren. Wenn es sich um Vue3 handelt oder Sie andere Methoden als Referenz verwenden möchten, besuchen Sie bitte die offizielle npm-Adresse. Es ist auch sehr einfach, es in einer Komponente zu referenzieren und zu verwenden. Sie müssen nur die entsprechende Komponente und ihre Stildatei einführen. Ich verweise hier nicht global, sondern nur auf import{userInfoByRequest}from'../js/api ' in meiner Komponentendatei. import{VueCropper}from'vue-cropper&
