(win环境)使用Electron打造一个桌面应用翻译小工具
发布日期:2021-07-01 02:19:00 浏览次数:2 分类:技术文章

本文共 5498 字,大约阅读时间需要 18 分钟。

在这里插入图片描述

初始化项目

npm init

修改package.json

{
"name": "trans", "version": "1.0.0", "main": "main.js", "license": "MIT", "scripts": {
"start": "electron .", "build":"electron-packager . --overwrite --icon=./favicon.ico" }, "devDependencies": {
"electron": "^9.0.5" }}

安装electron依赖

因为之前我们在package.json已经编辑过了devDependencies,所以我们直接。

npm install

创建编辑文件

分别创建两个文件index.htmlmain.js

appidkey 需要自己去申请。这是网址:

index.html

  
翻译小工具

main.js

// main.jsconst {
app, BrowserWindow,Menu } = require('electron')function createWindow () {
// 创建浏览器窗口 Menu.setApplicationMenu(null) const win = new BrowserWindow({
width: 800, height: 700, webPreferences: {
nodeIntegration: true } }) // 并且为你的应用加载index.html win.loadFile('index.html') // 打开开发者工具 // win.webContents.openDevTools()}// Electron会在初始化完成并且准备好创建浏览器窗口时调用这个方法// 部分 API 在 ready 事件触发后才能使用。app.whenReady().then(createWindow)//当所有窗口都被关闭后退出app.on('window-all-closed', () => {
// 在 macOS 上,除非用户用 Cmd + Q 确定地退出, // 否则绝大部分应用及其菜单栏会保持激活。 if (process.platform !== 'darwin') {
app.quit() }})app.on('activate', () => {
// 在macOS上,当单击dock图标并且没有其他窗口打开时, // 通常在应用程序中重新创建一个窗口。 if (BrowserWindow.getAllWindows().length === 0) {
createWindow() }})// 您可以把应用程序其他的流程写在在此文件中// 代码 也可以拆分成几个文件,然后用 require 导入。

引入md5.js

var MD5 = function (string) {
function RotateLeft(lValue, iShiftBits) {
return (lValue<
>>(32-iShiftBits)); } function AddUnsigned(lX,lY) {
var lX4,lY4,lX8,lY8,lResult; lX8 = (lX & 0x80000000); lY8 = (lY & 0x80000000); lX4 = (lX & 0x40000000); lY4 = (lY & 0x40000000); lResult = (lX & 0x3FFFFFFF)+(lY & 0x3FFFFFFF); if (lX4 & lY4) {
return (lResult ^ 0x80000000 ^ lX8 ^ lY8); } if (lX4 | lY4) {
if (lResult & 0x40000000) {
return (lResult ^ 0xC0000000 ^ lX8 ^ lY8); } else {
return (lResult ^ 0x40000000 ^ lX8 ^ lY8); } } else {
return (lResult ^ lX8 ^ lY8); } } function F(x,y,z) {
return (x & y) | ((~x) & z); } function G(x,y,z) {
return (x & z) | (y & (~z)); } function H(x,y,z) {
return (x ^ y ^ z); } function I(x,y,z) {
return (y ^ (x | (~z))); } function FF(a,b,c,d,x,s,ac) {
a = AddUnsigned(a, AddUnsigned(AddUnsigned(F(b, c, d), x), ac)); return AddUnsigned(RotateLeft(a, s), b); }; function GG(a,b,c,d,x,s,ac) {
a = AddUnsigned(a, AddUnsigned(AddUnsigned(G(b, c, d), x), ac)); return AddUnsigned(RotateLeft(a, s), b); }; function HH(a,b,c,d,x,s,ac) {
a = AddUnsigned(a, AddUnsigned(AddUnsigned(H(b, c, d), x), ac)); return AddUnsigned(RotateLeft(a, s), b); }; function II(a,b,c,d,x,s,ac) {
a = AddUnsigned(a, AddUnsigned(AddUnsigned(I(b, c, d), x), ac)); return AddUnsigned(RotateLeft(a, s), b); }; function ConvertToWordArray(string) {
var lWordCount; var lMessageLength = string.length; var lNumberOfWords_temp1=lMessageLength + 8; var lNumberOfWords_temp2=(lNumberOfWords_temp1-(lNumberOfWords_temp1 % 64))/64; var lNumberOfWords = (lNumberOfWords_temp2+1)*16; var lWordArray=Array(lNumberOfWords-1); var lBytePosition = 0; var lByteCount = 0; while ( lByteCount < lMessageLength ) {
lWordCount = (lByteCount-(lByteCount % 4))/4; lBytePosition = (lByteCount % 4)*8; lWordArray[lWordCount] = (lWordArray[lWordCount] | (string.charCodeAt(lByteCount)<
>>29; return lWordArray; }; function WordToHex(lValue) {
var WordToHexValue="",WordToHexValue_temp="",lByte,lCount; for (lCount = 0;lCount<=3;lCount++) {
lByte = (lValue>>>(lCount*8)) & 255; WordToHexValue_temp = "0" + lByte.toString(16); WordToHexValue = WordToHexValue + WordToHexValue_temp.substr(WordToHexValue_temp.length-2,2); } return WordToHexValue; }; function Utf8Encode(string) {
string = string.replace(/\r\n/g,"\n"); var utftext = ""; for (var n = 0; n < string.length; n++) {
var c = string.charCodeAt(n); if (c < 128) {
utftext += String.fromCharCode(c); } else if((c > 127) && (c < 2048)) {
utftext += String.fromCharCode((c >> 6) | 192); utftext += String.fromCharCode((c & 63) | 128); } else {
utftext += String.fromCharCode((c >> 12) | 224); utftext += String.fromCharCode(((c >> 6) & 63) | 128); utftext += String.fromCharCode((c & 63) | 128); } } return utftext; }; var x=Array(); var k,AA,BB,CC,DD,a,b,c,d; var S11=7, S12=12, S13=17, S14=22; var S21=5, S22=9 , S23=14, S24=20; var S31=4, S32=11, S33=16, S34=23; var S41=6, S42=10, S43=15, S44=21; string = Utf8Encode(string); x = ConvertToWordArray(string); a = 0x67452301; b = 0xEFCDAB89; c = 0x98BADCFE; d = 0x10325476; for (k=0;k

引入图标文件

在项目文件夹引入一个ico文件,取名favicon.ico ,这样是为了与之前编辑的package.json编辑的内容匹配。你也可以改成其他的名字。

在这里插入图片描述

启动或者打包项目

  • 启动项目
npm start
  • 打包项目
npm build

作者:Vam的金豆之路

主要领域:前端开发

我的微信:maomin9761

微信公众号:前端历劫之路


转载地址:https://maomin.blog.csdn.net/article/details/107020158 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:使用node.js如何简单快速的搭建一个websocket聊天应用
下一篇:React项目中 使用 CSS Module

发表评论

最新留言

网站不错 人气很旺了 加油
[***.192.178.218]2024年04月26日 03时52分54秒