मैं छोटे पैराग्राफ में एक छोटे से प्रश्न का वर्णन करने की कोशिश करूँगा।

संक्षेप में, मैं अपने इलेक्ट्रॉन ऐप में कुछ तर्क का उपयोग करना चाहता हूं या वेबपेज से कुछ फ़ंक्शन कॉल करना चाहता हूं जो मेरे इलेक्ट्रॉन ऐप में है (मैं वास्तव में अपने वेबपेज के लिए एक इलेक्ट्रॉन ऐप 'शेल' लपेट रहा हूं)।

मान लीजिए कि मैं अपने इलेक्ट्रॉन ऐप में एक फ़ंक्शन का पर्दाफाश करना चाहता हूं। कहो,

function printNumbers () {
  console.log(1)
}

ध्यान दें कि यह मेरे इलेक्ट्रॉन कोड में स्थित होना चाहिए।

फिर अपना ऐप चलाने के बाद, मैं अपने वेबपेज से इस फ़ंक्शन को कॉल करना चाहता हूं (मेरे वेबपेज में एक बटन पर क्लिक करना जो एक वेबसाइट से लोड होता है, फिर मेरे इलेक्ट्रॉन ऐप में एक नई विंडो खोलें)। अभी के लिए, मुझे लगता है कि मैं जांच सकता हूं कि प्रिंटनंबर डेवलपर कंसोल का उपयोग करके काम करता है या नहीं।

मैंने जाँच की है कि इलेक्ट्रॉन के अंदर फ़ंक्शन/मॉड्यूल को कॉल करने के लिए remote मॉड्यूल का उपयोग कैसे करें। लेकिन मुझे अपने इलेक्ट्रॉन कोड बेस में लिखे गए फ़ंक्शन को कॉल करने का कोई तरीका नहीं मिला।

बीटीडब्ल्यू: मैं nodeIntegration विकल्प को सक्षम कर सकता हूं।

12
Kulbear 24 जिंदा 2017, 06:41
1
अस्पष्ट विवरण को इंगित करने के लिए धन्यवाद। यह दूसरा मामला है जिसका आपने उल्लेख किया है।
 – 
Kulbear
24 जिंदा 2017, 07:02

1 उत्तर

सबसे बढ़िया उत्तर

रेंडरर प्रक्रिया और मुख्य प्रक्रिया के बीच संवाद करने के दो मुख्य तरीके हैं।

1. एक तरीका यह होगा कि रिमोट मॉड्यूल को उस कोड की आवश्यकता होगी जिसे आप मुख्य प्रक्रिया से लेना चाहते हैं। इस ऑब्जेक्ट में वह सब कुछ होगा जो आप अपने मुख्य प्रक्रिया कोड से निर्यात करते हैं।

// main process, for example app/main.js
exports.test = () => console.log('Yay');

// renderer process, for example app/renderer.js
const { remote } = require('electron');
const mainProcess = remote.require('./main.js');

mainProcess.test(); // 'Yay'

2. दूसरा तरीका यह होगा कि इंटर प्रोसेस कम्युनिकेशन मुख्य प्रक्रिया और रेंडरर प्रक्रिया के बीच ईवेंट भेजने/प्राप्त करने के लिए:

// main process, for example app/main.js
myWindow.webContents.send('my-cool-log-event', 'Yay');

// renderer process, for example app/renderer.js
const { ipcRenderer } = require('electron');
ipcRenderer.on('my-cool-log-event', (evt, msg) => console.log(msg)); // 'Yay'

यदि आप किसी रेंडरर प्रक्रिया में क्लिक ईवेंट के सक्रिय होने पर मुख्य प्रक्रिया से किसी फ़ंक्शन को कॉल करना चाहते हैं, तो आप किसी भी दृष्टिकोण का उपयोग कर सकते हैं।

1.

// main process, for example app/main.js
exports.onClick = () => console.log('Yay');

// renderer process, for example app/renderer.js
const { remote } = require('electron');
const mainProcess = remote.require('./main.js');

document
  .querySelector('#elem')
  .addEventListener('click', () => {
    mainProcess.onClick();
  });

2.

// main process, for example app/main.js
const { ipcMain } = require('electron')
ipcMain.on('click', () => console.log('do something'));

// renderer process, for example app/renderer.js
const { ipcRenderer } = require('electron');

document
  .querySelector('#elem')
  .addEventListener('click', () => {
    ipcRenderer.send('click');
  });
25
nem035 24 जिंदा 2017, 07:10
1
2021 में विकल्प 2 के साथ अभी भी मान्य उत्तर :)
 – 
Raymond
1 फरवरी 2021, 16:35
नमस्ते, क्या इलेक्ट्रॉन में चल रहे किसी भी कार्य को मारना संभव है?
 – 
Seng Foong
25 जुलाई 2021, 18:08