{"id":3181,"date":"2023-04-03T18:48:52","date_gmt":"2023-04-03T10:48:52","guid":{"rendered":"https:\/\/app.applebyme.cn\/cloud\/appshangjia\/3181.html"},"modified":"2023-04-03T18:48:52","modified_gmt":"2023-04-03T10:48:52","slug":"vue%e5%86%99app%e6%96%b9%e6%b3%95%e6%ad%a5%e9%aa%a4%e8%af%a6%e8%a7%a3","status":"publish","type":"post","link":"https:\/\/app.applebyme.cn\/cloud\/appshangjia\/3181.html","title":{"rendered":"vue\u5199app\u65b9\u6cd5\u6b65\u9aa4\u8be6\u89e3"},"content":{"rendered":"<p>Vue\u662f\u4e00\u4e2a\u7528\u4e8e\u6784\u5efa\u7528\u6237\u754c\u9762\u7684\u6e10\u8fdb\u5f0f\u6846\u67b6\uff0c\u5b83\u53ef\u4ee5\u8ba9\u4f60\u4f7f\u7528\u7b80\u6d01\u7684\u8bed\u6cd5\u548c\u7ec4\u4ef6\u5316\u7684\u65b9\u5f0f\u6765\u5f00\u53d1\u9ad8\u6548\u7684Web\u5e94\u7528\u3002Vue\u4e5f\u53ef\u4ee5\u4e0e\u5176\u4ed6\u5e93\u6216\u5de5\u5177\u7ed3\u5408\uff0c\u4f8b\u5982Webpack\u3001Electron\u7b49\uff0c\u6765\u521b\u5efa\u8de8\u5e73\u53f0\u7684\u684c\u9762\u5e94\u7528\u3002\u672c\u6587\u5c06\u4ecb\u7ecd\u5982\u4f55\u4f7f\u7528Vue 3\u548cElectron\u6765\u6784\u5efa\u4e00\u4e2a\u7b80\u5355\u7684\u684c\u9762\u5e94\u7528\u7a0b\u5e8f\u3002<\/p>\n<p><\/p>\n<p>\u9996\u5148\uff0c\u4f60\u9700\u8981\u5b89\u88c5Node.js\u548cnpm\uff0c\u7136\u540e\u4f7f\u7528npm\u5b89\u88c5Vue CLI\uff0c\u8fd9\u662f\u4e00\u4e2a\u7528\u4e8e\u5feb\u901f\u521b\u5efa\u548c\u7ba1\u7406Vue\u9879\u76ee\u7684\u547d\u4ee4\u884c\u5de5\u5177\u3002\u5728\u7ec8\u7aef\u4e2d\u8fd0\u884c\u4ee5\u4e0b\u547d\u4ee4\uff1a<\/p>\n<p><\/p>\n<p>npm install -g @vue\/cli<\/p>\n<p><\/p>\n<p>\u7136\u540e\uff0c\u4f60\u53ef\u4ee5\u4f7f\u7528Vue CLI\u521b\u5efa\u4e00\u4e2a\u65b0\u7684Vue\u9879\u76ee\uff0c\u9009\u62e9Vue 3\u4f5c\u4e3a\u9884\u8bbe\uff0c\u5e76\u542f\u7528TypeScript\u652f\u6301\uff08\u53ef\u9009\uff09\u3002\u5728\u7ec8\u7aef\u4e2d\u8fd0\u884c\u4ee5\u4e0b\u547d\u4ee4\uff1a<\/p>\n<p><\/p>\n<p>vue create vue-desktop-app<\/p>\n<p><\/p>\n<p>\u63a5\u4e0b\u6765\uff0c\u4f60\u9700\u8981\u5b89\u88c5Electron\u548cElectron Builder\uff0c\u8fd9\u662f\u4e00\u4e2a\u7528\u4e8e\u6253\u5305\u548c\u5206\u53d1Electron\u5e94\u7528\u7684\u5de5\u5177\u3002\u5728\u7ec8\u7aef\u4e2d\u8fd0\u884c\u4ee5\u4e0b\u547d\u4ee4\uff1a<\/p>\n<p><\/p>\n<p>cd vue-desktop-app<\/p>\n<p>npm install electron electron-builder<\/p>\n<p><\/p>\n<p>\u7136\u540e\uff0c\u4f60\u9700\u8981\u4fee\u6539package.json\u6587\u4ef6\uff0c\u6dfb\u52a0\u4e00\u4e9b\u914d\u7f6e\u9879\u548c\u811a\u672c\u3002\u5728package.json\u6587\u4ef6\u4e2d\u6dfb\u52a0\u4ee5\u4e0b\u5185\u5bb9\uff1a<\/p>\n<p><\/p>\n<p>{<\/p>\n<p>\/\/ &#8230;<\/p>\n<p>&quot;main&quot;: &quot;background.js&quot;,<\/p>\n<p>&quot;build&quot;: {<\/p>\n<p>&quot;appId&quot;: &quot;com.example.vue-desktop-app&quot;,<\/p>\n<p>&quot;productName&quot;: &quot;Vue Desktop App&quot;,<\/p>\n<p>&quot;directories&quot;: {<\/p>\n<p>&quot;output&quot;: &quot;build&quot;<\/p>\n<p>}<\/p>\n<p>},<\/p>\n<p>&quot;scripts&quot;: {<\/p>\n<p>\/\/ &#8230;<\/p>\n<p>&quot;electron:serve&quot;: &quot;vue-cli-service serve &amp;&amp; electron .&quot;,<\/p>\n<p>&quot;electron:build&quot;: &quot;vue-cli-service build &amp;&amp; electron-builder&quot;<\/p>\n<p>}<\/p>\n<p>}<\/p>\n<p><\/p>\n<p>\u5176\u4e2d\uff0cmain\u6307\u5b9a\u4e86Electron\u7684\u5165\u53e3\u6587\u4ef6\uff0cbuild\u6307\u5b9a\u4e86\u6253\u5305\u548c\u5206\u53d1\u7684\u76f8\u5173\u914d\u7f6e\uff0cscripts\u6307\u5b9a\u4e86\u542f\u52a8\u548c\u6784\u5efa\u7684\u547d\u4ee4\u3002<\/p>\n<p><\/p>\n<p>\u63a5\u4e0b\u6765\uff0c\u4f60\u9700\u8981\u521b\u5efabackground.js\u6587\u4ef6\uff0c\u8fd9\u662fElectron\u7684\u4e3b\u8fdb\u7a0b\u6587\u4ef6\uff0c\u8d1f\u8d23\u521b\u5efa\u548c\u7ba1\u7406\u7a97\u53e3\u3001\u83dc\u5355\u3001\u6258\u76d8\u7b49\u3002\u5728\u9879\u76ee\u6839\u76ee\u5f55\u4e0b\u521b\u5efabackground.js\u6587\u4ef6\uff0c\u5e76\u6dfb\u52a0\u4ee5\u4e0b\u5185\u5bb9\uff1a<\/p>\n<p><\/p>\n<p>const { app, BrowserWindow } = require(&#039;electron&#039;)<\/p>\n<p>const path = require(&#039;path&#039;)<\/p>\n<p>const url = require(&#039;url&#039;)<\/p>\n<p><\/p>\n<p>let mainWindow<\/p>\n<p><\/p>\n<p>function createWindow () {<\/p>\n<p>mainWindow = new BrowserWindow({<\/p>\n<p>width: 800,<\/p>\n<p>height: 600,<\/p>\n<p>webPreferences: {<\/p>\n<p>nodeIntegration: true<\/p>\n<p>}<\/p>\n<p>})<\/p>\n<p><\/p>\n<p>if (process.env.NODE_ENV === &#039;development&#039;) {<\/p>\n<p>mainWindow.loadURL(&#039;http:\/\/localhost:8080\/&#039;)<\/p>\n<p>} else {<\/p>\n<p>mainWindow.loadURL(url.format({<\/p>\n<p>pathname: path.join(__dirname, &#039;dist&#039;, &#039;index.html&#039;),<\/p>\n<p>protocol: &#039;file:&#039;,<\/p>\n<p>slashes: true<\/p>\n<p>}))<\/p>\n<p>}<\/p>\n<p><\/p>\n<p>mainWindow.on(&#039;closed&#039;, function () {<\/p>\n<p>mainWindow = null<\/p>\n<p>})<\/p>\n<p>}<\/p>\n<p><\/p>\n<p>app.on(&#039;ready&#039;, createWindow)<\/p>\n<p><\/p>\n<p>app.on(&#039;window-all-closed&#039;, function () {<\/p>\n<p>if (process.platform !== &#039;darwin&#039;) {<\/p>\n<p>app.quit()<\/p>\n<p>}<\/p>\n<p>})<\/p>\n<p><\/p>\n<p>app.on(&#039;activate&#039;, function () {<\/p>\n<p>if (mainWindow === null) {<\/p>\n<p>createWindow()<\/p>\n<p>}<\/p>\n<p>})<\/p>\n<p><\/p>\n<p>\u5176\u4e2d\uff0ccreateWindow\u51fd\u6570\u7528\u4e8e\u521b\u5efa\u4e00\u4e2a\u6d4f\u89c8\u5668\u7a97\u53e3\uff0c\u5e76\u6839\u636e\u5f00\u53d1\u73af\u5883\u6216\u751f\u4ea7\u73af\u5883\u52a0\u8f7d\u4e0d\u540c\u7684URL\u3002app\u4e8b\u4ef6\u7528\u4e8e\u76d1\u542c\u5e94\u7528\u7684\u751f\u547d\u5468\u671f\u3002<\/p>\n<p><\/p>\n<p>\u6700\u540e\uff0c\u4f60\u53ef\u4ee5\u5f00\u59cb\u7f16\u5199\u4f60\u7684Vue\u7ec4\u4ef6\uff0c\u5e76\u5728src\/App.vue\u6587\u4ef6\u4e2d\u5f15\u5165\u3002\u4f8b\u5982\uff0c\u4f60\u53ef\u4ee5\u521b\u5efa\u4e00\u4e2asrc\/components\/HelloWorld.vue\u6587\u4ef6\uff0c\u5e76\u6dfb\u52a0\u4ee5\u4e0b\u5185\u5bb9\uff1a<\/p>\n<p><\/p>\n<p>&lt;template&gt;<\/p>\n<p>&lt;div class=&quot;hello&quot;&gt;<\/p>\n<p>&lt;h1&gt;{{ msg }}&lt;\/h1&gt;<\/p>\n<p>&lt;p&gt;This is a Vue desktop app powered by Electron.&lt;\/p&gt;<\/p>\n<p>&lt;\/div&gt;<\/p>\n<p>&lt;\/template&gt;<\/p>\n<p><\/p>\n<p>&lt;script lang=&quot;ts&quot;&gt;<\/p>\n<p>import { defineComponent } from &#039;vue&#039;<\/p>\n<p><\/p>\n<p>export default defineComponent({<\/p>\n<p>name: &#039;HelloWorld&#039;,<\/p>\n<p>props: {<\/p>\n<p>msg: String<\/p>\n<p>}<\/p>\n<p>})<\/p>\n<p>&lt;\/script&gt;<\/p>\n<p><\/p>\n<p>&lt;style scoped&gt;<\/p>\n<p>h1 {<\/p>\n<p>color: #42b983;<\/p>\n<p>}<\/p>\n<p>&lt;\/style&gt;<\/p>\n<p><\/p>\n<p>\u7136\u540e\uff0c\u5728src\/App<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Vue\u662f\u4e00\u4e2a\u7528\u4e8e\u6784\u5efa\u7528\u6237\u754c\u9762\u7684\u6e10\u8fdb\u5f0f\u6846\u67b6\uff0c\u5b83\u53ef\u4ee5\u8ba9\u4f60\u4f7f\u7528\u7b80\u6d01\u7684\u8bed\u6cd5\u548c\u7ec4\u4ef6\u5316\u7684\u65b9\u5f0f\u6765\u5f00\u53d1\u9ad8\u6548\u7684Web\u5e94\u7528\u3002Vue\u4e5f\u53ef\u4ee5\u4e0e\u5176\u4ed6\u5e93\u6216\u5de5\u5177\u7ed3\u5408\uff0c\u4f8b\u5982Webpack\u3001Electron\u7b49\uff0c\u6765\u521b\u5efa\u8de8\u5e73\u53f0\u7684\u684c\u9762\u5e94\u7528<\/p>\n","protected":false},"author":9,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[14],"tags":[2183,802,1293],"class_list":["post-3181","post","type-post","status-publish","format-standard","hentry","category-appshangjia","tag-2183","tag-802","tag-1293"],"_links":{"self":[{"href":"https:\/\/app.applebyme.cn\/cloud\/wp-json\/wp\/v2\/posts\/3181","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/app.applebyme.cn\/cloud\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/app.applebyme.cn\/cloud\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/app.applebyme.cn\/cloud\/wp-json\/wp\/v2\/users\/9"}],"replies":[{"embeddable":true,"href":"https:\/\/app.applebyme.cn\/cloud\/wp-json\/wp\/v2\/comments?post=3181"}],"version-history":[{"count":0,"href":"https:\/\/app.applebyme.cn\/cloud\/wp-json\/wp\/v2\/posts\/3181\/revisions"}],"wp:attachment":[{"href":"https:\/\/app.applebyme.cn\/cloud\/wp-json\/wp\/v2\/media?parent=3181"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/app.applebyme.cn\/cloud\/wp-json\/wp\/v2\/categories?post=3181"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/app.applebyme.cn\/cloud\/wp-json\/wp\/v2\/tags?post=3181"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}