我无法使用npm start(用于启动电子应用)访问index.html中index.js中的变量'dps'声明 我能够访问我的sql并获取index.js中的数据,我想在index.html上显示(使用nodeJs和Electron) 'dps'指的是具有mysql数据的js对象
//我的index.js文件有
var app = require('app');
var dps = [{x:1,y:2}];
// Module to create native browser window.
var BrowserWindow = require('browser-window');
var mainWindow = null;
var dps = [{x:1,y:2}];
var mysql = require('mysql');
// Quit when all windows are closed.
app.on('window-all-closed', function () {
if (process.platform != 'darwin') {
app.quit();
}
});
app.on('ready', function () {
// Create the browser window.
mainWindow = new BrowserWindow({ width: 800, height: 600 });
mainWindow.loadUrl('file://' + __dirname + '/index.html');
// Open the devtools.
// mainWindow.openDevTools();
// Emitted when the window is closed.
mainWindow.on('closed', function () {
// Dereference the window object, usually you would store windows
// in an array if your app supports multi windows, this is the time
// when you should delete the corresponding element.
mainWindow = null;
});
});
//My html file
<html>
<head>
<!--<script type="text/javascript" src = "index.js"/>-->
<script type="text/javascript" src="index.js"></script>
<script type="text/javascript">
alert(dps); --- not getting dps value here(/anywhere in html)
</head>
</html>
答案 0 :(得分:0)
index.html中的代码运行在与index.js(在Main进程中运行)不同的进程(通常称为Renderer进程)中。此外,您的index.js文件是一个模块,因此,即使这两个文件由同一个进程运行,您也必须导出dps
变量或使其成为全局变量,如global.dps
(然而,这是一种不好的做法!)。
有许多方法可以在Main和Renderer进程之间共享日期; Electron为此目的提供ipcMain
,ipcRenderer
和remote
模块;您还可以使用URL编码参数将数据从Main传递到Renderer(但如果数据发生更改,这对您没有帮助);最后,您可以使用任何其他形式的IPC(例如,通过套接字发送消息,使用共享内存或共享文件等) - 但最好从Electron的ipc
或{{1}开始} modules。
话虽如此,在您的情况下,consensus似乎不是仅使用Main进程进行数据库访问,然后将信息传递给Renderer,而是直接从Renderer访问DB;这样你根本不必担心IPC(至少在这种情况下)。