【问题标题】:How to create BrowserWindow with data, and get that data in vue app?如何使用数据创建 BrowserWindow,并在 vue 应用程序中获取该数据?
【发布时间】:2021-07-17 14:08:41
【问题描述】:

我有一个Electron-Vue 项目,在这个项目中,当我想显示或创建它时,我想将数据传递给窗口,然后获取该数据并传递给VUE 应用程序,以指定应用程序的状态。

我要传递的数据是一个字符串,用于指定应用程序状态,例如:

downloadmainetc

然后使用上面的字符串,我将在我的应用程序中设置状态,以在创建窗口时根据特定状态呈现布局。基本上我想通过main for windownload for downloadWin

这是background.js,我想在new BrowserWindow() 中传递我的数据,我不想使用ipcRendeder or ipcMain

let win
let downloadWin
function createDownloadWindow() {
  // Create the browser window.
  downloadWin = new BrowserWindow({ // if it's win i wanna pass main if it's downloadWin i wanna pass download
    title: 'Manage Downloads',
    width: 1200,
    height: 700,
    minWidth: 1200,
    minHeight: 700,
    frame: false,
    titleBarStyle: 'hiddenInset',
    webPreferences: {
      webSecurity: false,
      devTools: true,
      nodeIntegration: false,
      nodeIntegrationInWorker: false,
      contextIsolation: true, // protect against prototype pollution
      enableRemoteModule: false, // turn off remote
      preload: path.join(__dirname, "preload.js"), /* eng-disable PRELOAD_JS_CHECK */
    }
  })
}

现在我想通过在main.js 中创建窗口来获取上面的字符串,以将接收到的数据从mainProcess 传递到vue 应用程序。

new Vue({
  router,
  store,
  vuetify,    
  mounted() {
    this.$store.dispatch('window/setWindowStat', '//SET STRING HERE')
  },
  render: h => h(App)
}).$mount('#app')

【问题讨论】:

    标签: vue.js electron


    【解决方案1】:

    您可以通过 IPC 传递您想要的任何数据:

    这是一个例子:

    // In main process.
    const { ipcMain } = require('electron')
    
    ipcMain.on('hey', (event, arg) => {
      console.log('hey from win', arg) // prints "{a: 2}" in main process console
    })
    
    // send message to your window when it ready (win is your window)
    win.webContents.send('hi', {data: 'is here'})
    
    import { ipcRenderer } from 'electron'
    
    ipcRenderer.on('hi', (e, payload) => {
      console.log('hi from main', payload) // prints: {data: 'is here'} in dev tools
    })
        
    ipcRenderer.send('hey', 'ping', {a: 2})
    

    【讨论】:

    • 您好,感谢您的回答,我已经知道ipcMain and ipcRenderer,正如我在问题细节中所说的,我不想使用它们。我正在使用 Vue,当我打开具有相同结构的新浏览器时,当我尝试使用事件发射器时会发生冲突。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-02-24
    • 1970-01-01
    • 2021-05-10
    • 1970-01-01
    • 2011-06-02
    • 2017-11-30
    • 2021-10-30
    相关资源
    最近更新 更多