【BS转CS】

借助Electron 实现BS转CS 套壳

方法一(最简单的方式)

利用chrome,将网页发送到桌面快捷方式。步骤如图所示:

操作步骤,生成快捷方式
然后在快捷方式点击属性,目标设置为添加
“C:\Program Files\Google\Chrome\Application\chrome_proxy.exe” --kiosk http:192.168.1.30:9001/login,
–kiosk http:192.168.1.30:9001/login 只需要这个配置,–kiosk是chrome的演示模式,后面可以跟任何网页地址(换成自己前端部署地址即可)。

致命缺点,当有其他chrome页面打开时,其无法进入演示模式,而是普通网页模式,伪装失败。

方法二 electron套壳

1、首先安装各种依赖包
npm install --save-dev electron
npm install electron-builder --dev
注意:electron 相关的依赖包整到devDependences里面去

安装过程中中报错 host id的,解决方法如下:
1首先 npm set strict-ssl false
2其次 更改npm 配置
输入`npm config ls`,找到npm的配置文件/Users/.../.npmrc
点击进入npmrc 修改配置:
registry=http://registry.npmjs.org/
strict-ssl=false
sass_binary_site=https://npm.taobao.org/mirrors/node-sass
electron_mirror=https://npmmirror.com/mirrors/electron/
electron_builder_binaries_mirror=https://npmmirror.com/mirrors/electron-builder-binaries/

2、在项目的根部录下添加三个文件:preload.js 、 electron-builder.json \ main.js
preload.js

在这里插入代码片 啥也不用管
window.addEventListener('DOMContentLoaded', () => {
    const replaceText = (selector, text) => {
      const element = document.getElementById(selector)
      if (element) element.innerText = text
    }
   
    for (const dependency of ['chrome', 'node', 'electron']) {
      replaceText(`${dependency}-version`, process.versions[dependency])
    }
  })

main.js

在这里插入代码片 注意两种方式:loadFile是从打包的html里入口,loadURL则是从前端部署网址的形式打包.跨域见webSecurity: false//是否禁用同源策略(上线时删除此配置)
const { app, BrowserWindow } = require("electron");
const path = require("path");

function createWindow() {
  const win = new BrowserWindow({
    width: 800,
    height: 600,
    icon: path.join(__dirname, "favicon.ico"),
    webPreferences: {
      preload: path.join(__dirname, "preload.js"),
      webSecurity: false//是否禁用同源策略(上线时删除此配置)
    },
    autoHideMenuBar:true
  });
  //win.loadFile("hbks/index.html");
  win.loadURL('http://localhost:9001/login')
}

app.whenReady().then(() => {
  createWindow();

  app.on("activate", () => {
    if (BrowserWindow.getAllWindows().length === 0) {
      createWindow();
    }
  });
});

app.on("window-all-closed", () => {
  if (process.platform !== "darwin") {
    app.quit();
  }
});

electron-builder.json

在这里插入代码片 生成exe的图标在此配置,需要准备一个256*256的icon,也放在根目录下
{
  "productName": "hbks",
  "files": [
    "./main.js",
    "./hbks"
  ],
  "extraFiles": [
    "./videos",
    "./cvideo"
  ],
  "directories": {
    "output": "./builder"
  },
  "win": {
      "icon": "./favicon.ico"
  }
}

3、修改package.json文件

在这里插入代码片 添加配置 main(对应上面写的main.js,是electron的入口)、 script里的electron:server \ selectron:build
其中selectron:build 后面的./electron-builder.json 就是前面写的那个文件的路径。
{
  "name": "xxxxx",
  "version": "0.0.0",
  "private": true,
  "author": "xxxxx",
  "description": "xxxxx",
  "main": "main.js",
  "scripts": {
    "dev": "vite",
    "build": "vite build",
    "preview": "vite preview",
    "electron:serve": "electron .",
    "electron:build": "vite build & electron-builder build --config ./electron-builder.json"
  },
  "dependencies": {
    "@turf/turf": "^7.0.0",
    "axios": "^1.7.2",
    "element-plus": "^2.7.5",
    "lodash": "^4.17.21",
    "moment": "^2.30.1",
    "nanoid": "^5.0.7",
    "pinia": "^2.1.7",
    "qs": "^6.12.1",
    "sass": "^1.77.5",
    "sass-loader": "^7.3.1",
    "turf": "^3.0.14",
    "vue": "^3.4.21",
    "vue-drag-resize": "^1.5.4",
    "vue-router": "^4.3.0"
  },
  "devDependencies": {
    "@vitejs/plugin-vue": "^5.0.4",
    "vite": "^5.2.8",
    "electron": "^31.2.1",
    "electron-builder": "^24.13.3",
    "electron-reload": "^2.0.0-alpha.1"
  }
}

20240903补充
适配现场2560*1600分辨率,且150%缩放比例,修改配置

width: 1920,
height: 1080,
webPreferences: {
      zoomFactor: 1.0,
      preload: path.join(__dirname, "preload.js"),
      webSecurity: false,
},
//分辨率锁定
win.setAspectRatio(16 / 9);
//配合F11全屏
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值