Skip to content
Pure-Peace edited this page Mar 16, 2020 · 1 revision

Welcome to the vue-cli-electron-template wiki!

🚀详细讲解

1、在vue页面中可以随意使用svg图标

  • 只需要将svg图片放入src/assets/svg目录中,接着在vue页面使用svg-icon标签即可:
<template>
  <div>
    <svg-icon icon-class="svg图片名称(不含后缀)" />
  </div>
</template>

2、接口使用及管理:

  • src/backend.js 添加你的接口
// 添加你的接口
export default {
  demoGet () {
    return $axios.get('http://example.com/')
      .then(response => response.data)
  },
  demoPost () {
    return $axios.post('http://example.com/')
      .then(response => response.data)
  }
}
  • 在任意页面通过调用全局函数 $backend 来使用你的接口:
<template>
 <div>
   <div
     class="home-button app-action-button"
     style="margin: 0 auto;"
     @click="sendRequest"
   >
     {{ buttonText }}
   </div>
 </div>
</template>

<script>

export default {
 data () {
   return {
     buttonText: '发送请求'
   }
 },
 methods: {
   sendRequest () {
     this.buttonText = '正在请求'
     this.$backend.demoGet(
       // 参数 / parameter
     ).then(res => {
       console.log(res)
       this.buttonText = '请求成功'
     }).catch(error => {
       console.log(error)
       this.buttonText = '请求失败'
     })
   }
 }
}
</script>

3、使你的应用国际化

对于浏览器页面(渲染进程):

  • 已集成vue-i18n插件,只需在src/locales中添加语言翻译文件,如zh.json
{
  "welcome": "欢迎!",
  "demo": {
    "hello": "打招呼",
    "sing": "唱歌",
    "more": {
      "message": "你看到我了!",
      "laugh": "死亡如风,常伴吾身",
    }
  }
}
  • 接着在任意vue页面中调用全局函数$t对需要国际化的文字进行处理即可:
<template>
  <div>
    <h1>当前语言:{{ $i18n.locale }}</h1>
    <h1>可用语言: {{ $i18n.availableLocales }}</h1>
    <div 
      class="home-button app-action-button"
      @click="()=>{ $i18n.locale='语言翻译文件名称(不含后缀)' }">
      切换语言
    </div>
	<h2>{{ $t("welcome") }}</h2>
	<h2>{{ $t("demo.hello") }}</h2>
	<h2>{{ $t("demo.more.message") }}</h2>
  </div>
</template>

<script>

export default {
  data () {
    return {
      hi: this.$t('demo.sing')
    }
  }
}
</script>

组件:

  • 我封装了一个localeChanger组件,通过它可以直接切换整个应用的语言,包含electron原生组件(主进程语言)
  • 在vue页面中像这样调用:
<template>
  <div>
    <h1>当前语言:{{ $i18n.locale }}</h1>
    <h2>{{ $t('welcome') }}</h2>
    <locale-changer/>
  </div>
</template>

<script>
import localeChanger from 'components/localeChanger'

export default {
  components: {
    localeChanger
  }
}
</script>

来看看我们是怎样通过它切换主进程语言的

  • 打开src/components/localeChanger/index.vue,找到函数changeLang
changeLang (lang) {
  this.$i18n.locale = lang
  ipc.send('appLanguageChange', lang) // 通过ipc发送事件消息给主进程
  this.showOptions = false 

发现使用了ipc通信,在主进程对应的地方找到该事件:

  • 打开主进程ipc事件管理器:src/mainProcess/events/ipc/index.js
// 语言变更事件 / language change event
ipcMain.on('appLanguageChange', (sys, lang) => {
 this.appManager.languageChange(lang)
})

可以看到,主进程在收到该事件消息后直接调用appManager对应的函数进行语言变更

  • appManager主要负责管理整个主进程,我们打开src/mainProcess/appManager.js
import Translator from './plugins/translator'

class AppManager {
  constructor () {
    // 翻译器
    this.translator = new Translator()
  }
  languageChange (lang) {
    this.translator.changeLang(lang)
    // 重新设置托盘菜单(为了变更语言)
    // Reset the language of the tray menu
    this.setAppTrayMenu()
  }
}

appManager中的languageChange函数最后切换了translator对象的语言,并重设了electron原生托盘菜单

  • 所以实际上主进程中的语言完全由translator对象控制,我们只需要改变它就能轻松的切换整个应用的语言了!

在主进程中使用翻译器的例子可以在src/mainProcess/menus/index.js中找到,大体上就是:

  • 先通过translator对象的get函数获得翻译函数$t,接下来的用法与vue中一样,调用$t就可以了。
const $t = this.translator.get()
const 要翻译的内容 = $t('要翻译的内容')
Clone this wiki locally
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy