ElectronJS 是一个开源框架,用于使用 HTML、CSS 和 JavaScript 等 Web 技术构建跨平台本机桌面应用程序。它将 Chromium 引擎和 NodeJS 组合到一个运行时中。
在传统的Web应用程序中,我们有切换视图功能,我们可以选择是查看桌面版还是移动版网站。这取决于我们当前查看网站的设备。这也是Emulation的一部分。仿真是指软件模仿(或模仿)另一个程序或采用与原始/预期程序不同的特征的能力。这样做是为了增强用户体验或为开发人员提供在不同平台/功能上测试应用程序的能力。 Electron 为我们提供了一种使用内置 BrowserWindow 对象的 Instance 方法和事件以及 webContents 属性来模拟桌面或移动设备的方法。本教程演示如何在 Electron 中模拟设备。
我们假设您熟悉上述链接中介绍的先决条件。为了让Electron正常工作,需要在系统中预先安装node和npm。
示例:按照 ElectronJS 中的动态样式中给出的步骤设置基本的 Electron 应用程序。复制文章中提供的 main.js 文件和 index.html 文件的样板代码。 还执行 package.json 文件中提到的必要更改以启动电子应用程序。我们将继续使用相同的代码库来构建我们的应用程序。设置 Electron 应用程序所需的基本步骤保持不变。
package.json:
{
“name”:“电子仿真”,
“版本”:“1.0.0”,
"description": "Electron 中的设备 Emulation",
"main": "main.js",
“脚本”:{
“开始”:“电子”。
},
“关键字”:[
“电子”
],
“作者”:“拉德什·卡纳”,
“许可证”:“ISC”,
“依赖项”:{
“电子”:“^8.3.0”
}
}
输出: 此时我们的基本 Electron 应用程序已设置完毕。启动应用程序后,我们应该看到以下结果。
Electron 中的设备模拟: BrowserWindow 实例和 webContents 属性是 主进程 的一部分。 为了在渲染器进程中导入和使用BrowserWindow,我们将使用Electronremote模块。
Emulation在 ElectronJS 中
常量电子 = require("电子");
// 从 Main 导入 BrowserWindow
// 使用 Electron 远程处理
const BrowserWindow = electro.remote.BrowserWindow;
让 win = BrowserWindow.getFocusedWindow();
// 让 win = BrowserWindow.getAllWindows()[0];
var emulate = document.getElementById("emulate");
emulate.addEventListener("点击", () => {
win.webContents.enableDevice紫色({
screenPosition:“移动”,
// 定义为 Galaxy S5 的尺寸
// 铬浏览器
屏幕尺寸: {
宽度:360,
身高:640,
},
视图位置:{
x:0,
y:0,
},
// 定义为 Galaxy S5 的尺寸
// 铬浏览器
视图大小:{
宽度:360,
身高:640,
},
设备比例因子:0,
规模:1,
});
});
var 桌面 = document.getElementById("桌面");
Desktop.addEventListener("点击", () => {
win.webContents.enableDevice紫色({
screenPosition: “桌面”,
// 与 BrowserWindow 实例相同
// 在主进程中
屏幕尺寸: {
宽度:800,
高度:600,
},
视图位置:{
x:0,
y:0,
},
// 与 BrowserWindow 实例相同
// 在主进程中
视图大小:{
宽度:800,
高度:600,
},
设备比例因子:0,
规模:1,
});
});
vardisable = document.getElementById("disable");
禁用.addEventListener("点击", () => {
win.webContents.disableDevice紫色();
});
const 电子 = require("电子");
// 从 Main 导入 BrowserWindow// 使用 Electron 远程处理
const BrowserWindow = electro.remote.BrowserWindow;
让 win = BrowserWindow.getFocusedWindow();
// 让 win = BrowserWindow.getAllWindows()[0];
var emulate = document.getElementById("emulate");
emulate.addEventListener("点击", () => {
win.webContents.enableDevice紫色({
screenPosition:“移动”,
// 定义为 Galaxy S5 的尺寸
// 铬浏览器
屏幕尺寸: {
宽度:360,
身高:640,
},
视图位置:{
x:0,
y:0,
},
// 定义为 Galaxy S5 的尺寸
// 铬浏览器
视图大小:{
宽度:360,
身高:640,
},
设备比例因子:0,
规模:1,
});
});
var 桌面 = document.getElementById("桌面");
Desktop.addEventListener("点击", () => {
win.webContents.enableDevice紫色({
screenPosition: “桌面”,
//与BrowserWindow实例相同
// 在主进程中
屏幕尺寸: {
宽度:800,
高度:600,
},
视图位置:{
x:0,
y:0,
},
//与BrowserWindow实例相同
// 在主进程中
视图大小:{
宽度:800,
高度:600,
},
设备比例因子:0,
规模:1,
});
});
vardisable = document.getElementById("disable");
禁用.addEventListener("点击", () => {
Win.webContents.disableDeviceEmulation();
});
代码中所有Instance方法的详细解释如下。
要获取Renderer Process 中当前的BrowserWindow实例,我们可以使用BrowserWindow提供的对象。 一些静态方法。
输出: