{ "version": "https://jsonfeed.org/version/1", "title": "Electron", "description": "Build cross platform desktop apps with Javascript, HTML, and CSS.", "home_page_url": "go/electron", "feed_url": "feed/electron.json", "icon": "https://cdn.v2ex.com/navatar/ef4e/3b77/955_large.png?m=1636006038", "favicon": "https://cdn.v2ex.com/navatar/ef4e/3b77/955_normal.png?m=1636006038", "items": [ { "author": { "url": "member/albatron", "name": "albatron", "avatar": "https://cdn.v2ex.com/avatar/06f1/138f/759731_large.png?m=1753768822" }, "url": "t/1192247", "title": "electron-vite \u521b\u5efa\u7684\u9879\u76ee\uff0c\u7ecf preload \u6302\u8f7d\u7684 api \u5728\u6d4f\u89c8\u5668\u4e2d\u6253\u5370\u51fa\u6765\u662f undefined\uff0c\u6709\u4eba\u9047\u5230\u8fc7\u5417\uff1f", "id": "t/1192247", "date_published": "2026-02-11T07:19:51+00:00", "content_html": "

\u7c7b\u4f3c\u4e8e\u8fd9\u4e2a issue\uff1a https://github.com/alex8088/electron-vite/issues/111

\n

\u4e0d\u8fc7\u6211\u770b\u539f\u5e16\u6700\u540e\u4e5f\u6ca1\u7ed9\u51fa\u95ee\u9898\u7684\u539f\u56e0\uff0c\u672c\u60f3\u501f\u4f4f ai \u628a\u7ad9\u957f\u7684 planet \u5de5\u5177\u8fc1\u79fb\u5230 windows \u4e0a\uff0c\u7ed3\u679c\u521a\u5efa\u9879\u76ee\u5c31\u5361\u4f4f\u4e86\uff0cai \u4e5f\u89e3\u51b3\u4e0d\u4e86\uff0c\u96be\u7ef7...

\n" }, { "author": { "url": "member/bingoso", "name": "bingoso", "avatar": "https://cdn.v2ex.com/avatar/ad6f/6f62/718049_large.png?m=1774501686" }, "url": "t/1186366", "title": "\u5341\u5e74\u524d\u5f00\u53d1\u7684 elctron \u5e94\u7528\u81f3\u4eca\u5b8c\u7f8e\u8fd0\u884c\uff0c\u5341\u5e74\u540e\u7684 tauri \u5e94\u7528\u53ef\u4ee5\u5417\uff1f", "id": "t/1186366", "date_published": "2026-01-16T19:41:07+00:00", "content_html": "

\u5927\u6982\u662f2016 \u5e74\u5427\uff0c

\n

\u5f53\u65f6\u7528\u7684\u662f ele 1.7x \uff0c\u7ed9\u516c\u53f8\u5f00\u53d1\u4e86\u4e00\u4e2a\u7b80\u6613\u7684 erp \u67e5\u8be2\u7cfb\u7edf\u3002\u4eca\u5929\u65e0\u610f\u4e2d\u5728\u7f51\u76d8\u4e2d\u627e\u5230\u4e86\u5f53\u5e74\u7684 release \u538b\u7f29\u5305\uff0cwin11 \u4e0b\u89e3\u538b\u8fd0\u884c\uff0c\u4ecd\u65e7\u548c win7 \u65f6\u4ee3\u7684\u663e\u793a\u6548\u679c\u4e00\u6a21\u4e00\u6837\u3002

\n

\u5927\u6982\u662f2006 \u5e74\u5427\uff0c

\n

\u5f53\u5e74\u7528flash\u5f00\u53d1\u7684\u540c\u5b66\u76f8\u518c\uff0c\u73b0\u5728\u5728windows11\u4e0b\u5df2\u7ecf\u6253\u4e0d\u5f00\u4e86\u3002

\n

electron\u81ea\u5e26\u6d4f\u89c8\u5668\u7684\u7279\u6027\uff0c\u8ba9\u8001\u65e7\u9879\u76ee\u57fa\u672c\u65e0\u89c6\u65b0\u7cfb\u7edf\u7684\u66f4\u8fed\u3002tauri\u7528\u7684\u662f\u7cfb\u7edf\u5185\u7f6ewebview\uff0c\u5341\u5e74\u540e\u6253\u5f00\u8fd8\u80fd\u6253\u5f00\u5417\uff1f

\n" }, { "author": { "url": "member/huangyezhufeng", "name": "huangyezhufeng", "avatar": "https://cdn.v2ex.com/avatar/c6bf/ce8d/174807_large.png?m=1732972431" }, "url": "t/1184456", "date_modified": "2026-01-10T10:49:28+00:00", "content_html": "\u8bf7\u6559\u4e2a Electron App \u5305\u7ba1\u7406\u5de5\u5177\u7684\u95ee\u9898\u3002\u76ee\u524d\u662f\u7528 Bun \u7ba1\u7406\uff0c\u4e5f\u4f9d\u8d56\u4e86 better-sqlite3, \u7136\u540e\u53d1\u73b0\u9891\u7e41\u9047\u5230 better-sqlite3 \u7f16\u8bd1\u7684\u7248\u672c\u4e0d\u4e00\u81f4\u7684\u95ee\u9898...\u6240\u4ee5\u95ee\u4e0b\u5927\u5bb6\u6709\u6ca1\u6709\u9047\u5230\u8fc7\u8fd9\u79cd\u95ee\u9898\uff0c\u7136\u540e", "date_published": "2026-01-10T09:00:43+00:00", "title": "\u7528\u4ec0\u4e48\u6765\u7ba1\u7406 Electron App + better-sqlite3 \u7684\uff1f", "id": "t/1184456" }, { "author": { "url": "member/muunala10221", "name": "muunala10221", "avatar": "https://cdn.v2ex.com/avatar/00fd/17cf/499312_large.png?m=1722593567" }, "url": "t/1141262", "title": "\u8bf7\u6559\u95ee\u9898\uff0c\u63a5\u89e6 Electron \u5f00\u53d1\u4e0d\u4e45\uff0c\u5982\u4f55\u4fbf\u6377\u7684\u5728\u4e0d\u540c\u7248\u672c\u7cfb\u7edf\\\u786c\u4ef6\u8bbe\u5907\u4e0a\u65b9\u4fbf\u6d4b\u8bd5\u7a0b\u5e8f", "id": "t/1141262", "date_published": "2025-06-26T09:05:38+00:00", "content_html": "\u8bf7\u6559" }, { "author": { "url": "member/Atma", "name": "Atma", "avatar": "https://cdn.v2ex.com/gravatar/b1c15e72c553eb28c13984ff07fdfa27?s=73&d=retro" }, "url": "t/1139757", "title": "mac \u7a0b\u5e8f\u7b7e\u540d\u516c\u8bc1\u95ee\u9898", "id": "t/1139757", "date_published": "2025-06-19T13:23:00+00:00", "content_html": "

\u4eca\u5929\u5728\u4e00\u4e2a\u7528\u6237\u7535\u8111\u4e0a\u9047\u5230\u4e00\u4e2a\u548c\u8fd9\u4e2a issue \u4e00\u6837\u7684\u95ee\u9898:\nhttps://github.com/electron/electron/issues/46520

\n

\u7a0b\u5e8f\u521a\u521a\u542f\u52a8 gpu \u548c network \u8fdb\u7a0b\u5c31\u5d29\u6e83\uff0c\u4e00\u5f00\u59cb\u6000\u7591\u7cfb\u7edf\u95ee\u9898\uff0c\u6240\u4ee5

\n

\u4ece 13 \u5347\u7ea7\u5230 15 \uff0c\u4f46\u662f\u95ee\u9898\u4f9d\u65e7\uff0c\u6240\u4ee5\u91cd\u65b0\u56de\u5230 issue \uff0c\u6211\u91cd\u65b0\u6253\u5305\u53bb\u9664\u4e86\u7b7e\u540d\u548c\u516c\u8bc1

\n

\u542f\u52a8\u6b63\u5e38\u4e86\u3002\u8fd9\u91cc\u6709\u4e2a\u7591\u95ee\u5c31\u662f\u76f8\u540c\u7684\u7ebf\u4e0a\u5305\u5176\u4ed6\u7528\u6237\u90fd\u6ca1\u95ee\u9898\uff0c\u5386\u53f2\u7684\u5305\u4e5f\u5b89\u88c5\u8bd5\u8fc7\u4e86\uff0c

\n

\u76ee\u524d\u5148\u63d0\u4f9b\u4e86\u672a\u7b7e\u540d\u5305\u7ed9\u7528\u6237\u4f7f\u7528\u3002

\n

\u60f3\u95ee\u4e0b\u5bf9\u82f9\u679c\u5f00\u53d1\u6bd4\u8f83\u719f\u6089\u7684\u4f19\u4f34\uff0c\u5173\u4e8e Mac \u4e0a\u8f6f\u4ef6\u542f\u52a8\u7b7e\u540d\u6821\u9a8c\u8fd9\u4e2a\u73af\u8282\uff0c\u60f3\u4ece\u7cfb\u7edf\u4e0a\u627e\u4e00\u4e0b\u76f8\u5173\u7684\u65e5\u5fd7\u786e\u8ba4\u4e0b\u539f\u56e0

\n" }, { "author": { "url": "member/guobaiyi", "name": "guobaiyi", "avatar": "https://cdn.v2ex.com/gravatar/931ff920c784750adcdb75efd1a551fe?s=73&d=retro" }, "url": "t/1127801", "title": "elctron \u5f00\u53d1\u6559\u7a0b\u6848\u4f8b\u89e3\u6790\uff1a\u6a21\u62df\u771f\u4eba\u4f7f\u7528\u201c\u9ad8\u5fb7\u5730\u56fe\u201d\uff0c\u8282\u7701\u6570\u636e API \u91c7\u8d2d\u8d39\u7528", "id": "t/1127801", "date_published": "2025-04-24T07:39:56+00:00", "content_html": "

\u6458\u8981\uff1a\n\u672c\u9879\u76ee\u6d89\u53ca\u5230\u7684 electron \u5f00\u53d1\u539f\u7406\uff1a\n1 \u7a97\u53e3\u7ba1\u7406\n2 \u811a\u672c\u6ce8\u5165\n3 \u8fdb\u7a0b\u95f4\u901a\u4fe1\n4 webcontents \u7684\u4f7f\u7528\n5 sqlite \u5b58\u50a8\n6 \u591a\u5e73\u53f0\u6253\u5305

\n

\u5185\u5bb9

\n

\uff08\u4e00\uff09\u80cc\u666f

\n

\u8fd9\u7bc7\u6587\u7ae0\u8bb2\u89e3\u5982\u4f55\u5229\u7528 electron \u6280\u672f\uff0c\u6a21\u62df\u771f\u4eba\u64cd\u4f5c\uff0c\u6765\u6293\u53d6\u9ad8\u5fb7\u5730\u56fe Api \u6570\u636e\u7684\u3002\u5229\u7528 electron \u5f3a\u5927\u7684\u7f51\u9875\u63a7\u5236\u6280\u672f\uff0c\u901a\u8fc7\u7ed1\u5b9a\u7f51\u9875\u8c03\u8bd5\u63a7\u5236\u53f0\uff0c\u6765\u89e3\u6790\u5728\u63a7\u5236\u53f0\u51fa\u73b0\u7684 http \u8bf7\u6c42\u548c\u83b7\u53d6 http \u54cd\u5e94\u3002

\n

\u5229\u7528 electron \u6280\u672f\u89e3\u6790\u63a7\u5236\u53f0\u7684 http \u8bf7\u6c42\uff0c\u8fd9\u6837\u505a\u7684\u597d\u5904\u662f\uff0c

\n\n

\u6b22\u8fce\u8bbf\u95ee\u6211\u7684electron \u8bfe\u7a0b\u7f51\u8fdb\u4e00\u6b65\u6c9f\u901a\u4ea4\u6d41\uff01

\n

\uff08\u4e8c\uff09 electron \u722c\u866b\u795e\u5668\u64cd\u4f5c\u6f14\u793a

\n

\u5f85\u4e0a\u4f20

\n

\uff08\u4e09\uff09 electron \u80fd\u6293\u53d6\u54ea\u4e9b\u9ad8\u5fb7\u5730\u56fe\u6570\u636e\uff1f

\n

\u5982\u4e0b 5 \u4e2a\u516c\u5f00\u63a5\u53e3\u6570\u636e\uff1a

\n\n

\uff08\u56db\uff09\u6d89\u53ca\u7684 electron \u5f00\u53d1\u6280\u672f

\n

1 \u7a97\u53e3\u7ba1\u7406\n\u65b0\u5f00\u7a97\u53e3\uff1a\u64cd\u4f5c\u9875\u9762\u53d1\u6d88\u606f\u7ed9\u540e\u53f0\uff0c\u8981\u6c42\u65b0\u5f00\u7a97\u53e3\u3002\u53ef\u4ee5\u901a\u8fc7\u64cd\u4f5c\u9875\u9762\u8bbe\u7f6e URL \u5730\u5740\u540e\uff0c\u6765\u63a7\u5236\u65b0\u7a97\u53e3\u7684 URL \u3002

\n

2 \u811a\u672c\u6ce8\u5165\nelectron \u4e3a\u4fdd\u969c\u7cfb\u7edf\u6309\u94ae\uff0c\u8ba9\u63a7\u5236\u9875\u9762\u548c\u540e\u53f0\u65e0\u6cd5\u76f4\u63a5\u8c03\u7528\u65b9\u6cd5\uff0c\u4f46\u662f\u53ef\u4ee5\u901a\u8fc7\u811a\u672c\u6ce8\u5165\u7684\u65b9\u6cd5\u5efa\u7acb\u901a\u4fe1\u7684\u6865\u6881\uff0c\u8fd9\u6837\u63a7\u5236\u9875\u9762\u901a\u8fc7\u6865\u6881\u53ef\u4ee5\u547d\u4ee4\u540e\u53f0\u505a\u4e00\u4e9b\u4e8b\u60c5\u3002

\n

3 \u8fdb\u7a0b\u95f4\u901a\u4fe1\n\u63a7\u5236\u9875\u9762\u548c\u540e\u53f0\u4e4b\u95f4\u7684\u901a\u4fe1\uff0c\u6709 4 \u79cd\u901a\u4fe1\u65b9\u5f0f\uff1a\u63a7\u5236\u9875\u9762->\u540e\u53f0\u3001\u540e\u53f0->\u63a7\u5236\u9875\u9762\u3001\u540e\u53f0<->\u63a7\u5236\u9875\u9762\u3001\u63a7\u5236\u9875\u9762 A->\u63a7\u5236\u9875\u9762 B

\n

4 \u7f51\u9875\u5185\u5bb9\u63a7\u5236\n\u63a7\u5236\u7f51\u9875\u7684\u5143\u7d20\uff0c\u4ece\u800c\u66ff\u4ee3\u4eba\u5de5\u64cd\u4f5c\u5b9e\u884c\u64cd\u4f5c\u81ea\u52a8\u5316\u3002\u6bd4\u5982\u6a21\u62df\u4eba\u6765\u8f93\u5165\u3001\u6a21\u62df\u4eba\u6765\u70b9\u51fb\u6309\u94ae\u3001\u6a21\u62df\u4eba\u6765\u6ed1\u52a8\u9875\u9762\u7b49\u3002

\n

5 \u6570\u636e\u5b58\u50a8 sqlite\n\u9047\u5230\u5927\u6570\u636e\u672c\u5730\u5b58\u50a8\uff0csqlite+prisma \u662f\u4e00\u79cd\u5f88\u597d\u7684\u65b9\u6848\uff0c\u5f62\u540c\u4e8e mysql+orm \u7684\u5f62\u5f0f\u5b58\u50a8\u6570\u636e\u5728\u7528\u6237\u672c\u5730\u7535\u8111\u3002

\n

6 \u6253\u5305\u53d1\u5e03\nelectronbuilding + githubaction \u7684\u7ec4\u5408\uff0c\u8f7b\u677e\u5b9e\u73b0\u6253\u5305\u81ea\u7531\u3002

\n
\n" }, { "author": { "url": "member/jakcy26", "name": "jakcy26", "avatar": "https://cdn.v2ex.com/avatar/2ae4/36e0/303263_large.png?m=1743513931" }, "url": "t/1123771", "title": "electron \u600e\u4e48\u5f00\u542f\u72ec\u7acb\u7a97\u53e3\u800c\u4e0d\u589e\u52a0\u6e32\u67d3\u8fdb\u7a0b\uff1f", "id": "t/1123771", "date_published": "2025-04-07T08:32:53+00:00", "content_html": "

\u5982\u9898\uff0c\u5728 electron \u5f00\u53d1\u4e2d\uff0c\u5982\u4f55\u65b0\u5f00\u4e00\u4e2a\u72ec\u7acb\u7a97\u53e3\uff0c\u8ba9\u6e32\u67d3\u8fdb\u7a0b\u8ddf\u7740\u5bf9\u5e94\u589e\u52a0\u3002\u600e\u4e48\u5b9e\u73b0\u5462?

\n" }, { "author": { "url": "member/johnlin", "name": "johnlin", "avatar": "https://cdn.v2ex.com/gravatar/797de564ba63fdaff23bb4f6427bc809?s=73&d=retro" }, "url": "t/1123170", "date_modified": "2025-04-04T02:56:34+00:00", "content_html": "\u9879\u76ee\u6253\u5305\u6210 dmg \u53ef\u4ee5\u6b63\u5e38\u4f7f\u7528\uff0c\u4f46\u662f\u6253\u5305\u6210 exe \u5c31\u4e0d\u884c
{
\"name\": \"electron-app\",
\"version\": \"1.0.0\",
\"description\": \"An Electron application with Vue and TypeScript\",
\"main\": \"./out/main/index.js\",
\"author\": \"example.com\",
\"homepage\": \"https://www.electronjs.org\",
\"scripts\": {
\"format\": \"prettier --write .\",
\"lint\": \"eslint . --ext .js,.jsx,.cjs,.mjs,.ts,.tsx,.cts,.mts,.vue --fix\",
\"typecheck:node\": \"tsc --noEmit -p tsconfig.node.json --composite false\",
\"typecheck:web\": \"vue-tsc --noEmit -p tsconfig.web.json --composite false\",
\"typecheck\": \"npm run typecheck:node && npm run typecheck:web\",
\"start\": \"electron-vite preview\",
\"dev\": \"electron-vite dev\",
\"build\": \"electron-vite build\",
\"postinstall\": \"electron-builder install-app-deps\",
\"build:win\": \"npm run build && electron-builder --win --config --dir\",
\"build:mac\": \"npm run build && electron-builder --mac --config\",
\"build:linux\": \"npm run build && electron-builder --linux --config\"
},
\"dependencies\": {
\"@electron-toolkit/preload\": \"^2.0.0\",
\"@electron-toolkit/utils\": \"^2.0.0\",
\"@element-plus/icons-vue\": \"^2.3.1\",
\"axios\": \"^1.6.2\",
\"crypto-js\": \"^4.2.0\",
\"element-plus\": \"^2.4.3\",
\"pinia\": \"^2.1.7\",
\"pinia-plugin-persist\": \"^1.0.0\",
\"rfdc\": \"^1.3.0\",
\"vue-i18n\": \"^9.8.0\",
\"vue-router\": \"^4.2.5\"
},
\"devDependencies\": {
\"@electron-toolkit/eslint-config\": \"^1.0.1\",
\"@electron-toolkit/eslint-config-ts\": \"^1.0.0\",
\"@electron-toolkit/tsconfig\": \"^1.0.1\",
\"@rushstack/eslint-patch\": \"^1.3.3\",
\"@types/node\": \"^18.17.5\",
\"@vitejs/plugin-vue\": \"^4.3.1\",
\"@vue/eslint-config-prettier\": \"^8.0.0\",
\"@vue/eslint-config-typescript\": \"^11.0.3\",
\"electron\": \"^25.6.0\",
\"electron-builder\": \"^24.6.3\",
\"electron-vite\": \"^1.0.27\",
\"eslint\": \"^8.47.0\",
\"eslint-plugin-vue\": \"^9.17.0\",
\"less\": \"^4.2.0\",
\"prettier\": \"^3.0.2\",
\"sass\": \"^1.69.5\",
\"typescript\": \"^5.1.6\",
\"unplugin-auto-import\": \"^0.17.2\",
\"unplugin-vue-components\": \"^0.26.0\",
\"vite\": \"^4.4.9\",
\"vue\": \"^3.3.4\",
\"vue-tsc\": \"^1.8.8\"
},
\"build\": {
\"win\": {
\"target\": [
{
\"target\": \"nsis\",
\"arch\": [\"x64\"]
}
],
\"icon\": \"build/icon.ico\"
},
\"nsis\": {
\"oneClick\": false,
\"allowToChangeInstallationDirectory\": true,
\"createDesktopShortcut\": true,
\"createStartMenuShortcut\": true,
\"shortcutName\": \"\u68c0\u6d4b\u7cfb\u7edf\"
}
}
}", "date_published": "2025-04-03T09:05:44+00:00", "title": "electron \u9879\u76ee\u6253\u5305\u6210 exe\uff0c windows10 \u5b89\u88c5\u540e\u6253\u5f00\u4e0d\u4e86\u3002\u4e00\u76f4\u63d0\u793a\u7f3a\u5c11\u5feb\u6377\u65b9\u5f0f\u3002\u6709\u6ca1\u6709\u5927\u4f6c\u9047\u5230\u8fc7\u7c7b\u4f3c\u7684\u95ee\u9898", "id": "t/1123170" }, { "author": { "url": "member/jakcy26", "name": "jakcy26", "avatar": "https://cdn.v2ex.com/avatar/2ae4/36e0/303263_large.png?m=1743513931" }, "url": "t/1122681", "title": "electron \u65b0\u5f00\u72ec\u7acb\u7a97\u53e3\u5185\u5b58\u95ee\u9898", "id": "t/1122681", "date_published": "2025-04-01T13:28:05+00:00", "content_html": "

\u90fd\u8bf4 electron \u65b0\u5f00\u4e00\u4e2a\u72ec\u7acb\u7a97\u53e3\uff0c\u6e32\u67d3\u8fdb\u7a0b\u5c31\u4f1a\u65b0\u589e\u4e00\u4e2a\uff0c\u5bfc\u81f4\u5185\u5b58\u98d9\u5347\uff0c\u4f46\u6211\u770b vscode \u65b0\u5f00\u4e00\u4e2a\u72ec\u7acb\u7a97\u53e3\uff0c\u6e32\u67d3\u8fdb\u7a0b\u5e76\u4e0d\u4f1a\u65b0\u589e\u4e00\u4e2a\u3002\n\u6709\u5927\u795e\u7814\u7a76\u8fc7\u5417\uff1f \u600e\u4e48\u8ba9\u6253\u5f00\u72ec\u7acb\u7a97\u53e3\u5185\u5b58\u4e0d\u589e\u52a0\u90a3\u4e48\u591a

\n" }, { "author": { "url": "member/lpe234", "name": "lpe234", "avatar": "https://cdn.v2ex.com/avatar/e21b/feea/133262_large.png?m=1760937293" }, "url": "t/1120098", "date_modified": "2025-03-22T00:49:13+00:00", "content_html": "

\u7c7b\u4f3c\u8fdc\u7a0b\u9a7e\u9a76\u8231\u573a\u666f\u3002\u524d\u540e\u76f8\u540c\u5927\u5e26\u9c7c\u5c4f\uff0c\u5de6\u53f3\u76f8\u540c\u5c0f\u5e26\u9c7c\u5c4f\uff0c\u8fd8\u6709 2 \u4e2a\u5c0f\u5c4f\u3002

\n

\u4e4b\u524d\u672c\u5730\u7b14\u8bb0\u672c\u8fde\u63a5\u663e\u793a\u5668\u6d4b\u8bd5\uff0c\u53ea\u6709\u6362\u663e\u793a\u5668\u7684\u573a\u666f\u4e0b displayId(Electron \u83b7\u53d6\u7684\u5c4f\u5e55 ID)\u624d\u4f1a\u53d8\u3002

\n

\u73b0\u5728\u6362\u53f0\u5f0f\u673a\u4e4b\u540e\u3002\u6bcf\u6b21\u91cd\u542f \u6216\u8005 \u5207\u6362\u673a\u7bb1\u663e\u793a\u5668\u8fde\u63a5\u53e3\u540e\uff0cdisplayId \u90fd\u4f1a\u53d8\u3002\u5bfc\u81f4\u6bcf\u6b21\u90fd\u8981\u91cd\u65b0\u914d\u7f6e\u6620\u5c04\uff0c\u624d\u80fd\u6b63\u5e38\u663e\u793a\u3002

\n

\u6709\u6ca1\u6709\u54ea\u4f4d\u8001\u54e5\u9047\u5230\u8fd9\u79cd\u95ee\u9898

\n
\n

electron \u4e2d\u5199\u4e86\u7c7b\u4f3c\u4e0b\u9762\u7684\u6620\u5c04\u5173\u7cfb\u3002

\n

const dispalyMaps = {\n\"id-xxxx01\": \"http://xxxx.xx/front\",\n\"id-xxxx02\": \"http://xxxx.xx/back\",\n}

\n", "date_published": "2025-03-21T04:40:34+00:00", "title": "\u6c42\u52a9\uff01\u53cc\u663e\u5361\u8fde\u63a5 6 \u4e2a\u5c4f\u5e55\uff0c\u5c55\u793a\u4e0d\u540c\u7684 URL \u9875\u9762\u3002Electron \u7684 displayId \u6bcf\u6b21\u91cd\u542f\u90fd\u4f1a\u53d8", "id": "t/1120098" }, { "author": { "url": "member/Aruis", "name": "Aruis", "avatar": "https://cdn.v2ex.com/gravatar/a23bfcd815b30b4e933dbec53cd22966?s=73&d=retro" }, "url": "t/1113884", "title": "Electron \u70ed\u66f4\u65b0\u6280\u672f", "id": "t/1113884", "date_published": "2025-02-24T09:06:09+00:00", "content_html": "

Electron \u70ed\u66f4\u65b0\u6709\u4ec0\u4e48\u65b9\u6848\u5417\uff1f

\n

\u73b0\u5728\u4f7f\u7528\u7684\u662f electron-builder

\n

electron-builder \u53ea\u6709\u6574\u5305\u66f4\u65b0\uff0c\u6709\u6ca1\u6709\u5176\u5b83\u70ed\u66f4\u65b0\u7684\u65b9\u6848\u63a8\u8350

\n" }, { "author": { "url": "member/178620086", "name": "178620086", "avatar": "https://cdn.v2ex.com/avatar/081d/3db7/103341_large.png?m=1500629629" }, "url": "t/1103614", "title": "\u5982\u4f55\u81ea\u5df1\u5b9e\u73b0\u7c7b\u4f3c c-Lodop \u7684\u4e0d\u4e2d\u65ad\u6253\u5370\u6548\u679c\uff1f", "id": "t/1103614", "date_published": "2025-01-08T09:27:43+00:00", "content_html": "

\u80cc\u666f\uff1a

\n

\u5728\u5f00\u53d1\u4e00\u6b3e\u53ef\u4ee5\u672c\u5730\u8fd0\u884c\u7684\u7a0b\u5e8f\uff0c\u7528\u6765\u63a5\u53d7\u7f51\u9875\u7aef\u4f20\u9012\u8fc7\u6765\u7684\u6253\u5370\u8bf7\u6c42\uff08 html \u4ee3\u7801\u6bb5\uff09\u5176\u4e2d\u5305\u542b\u6587\u672c\uff0c\u56fe\u7247\uff0c\u8868\u683c\uff0c\u5185\u5bb9\u8f83\u957f\uff0c\u4f7f\u7528\u7684\u662f\u7231\u666e\u751f\u9488\u5f0f\u6253\u5370\u673a\uff0c\u53ef\u4ee5\u8fde\u7eed\u8fdb\u7eb8\u3002

\n

\u5df2\u7ecf\u5c1d\u8bd5\u8fc7\u7684\u65b9\u6848\uff1a

\n
    \n
  1. \n

    \u4f7f\u7528 electron \u6253\u5370\u529f\u80fd\uff08 print \uff09\u8fdb\u884c\u6253\u5370\uff0c\u6307\u5b9a\u4e00\u4e2a\u81ea\u5b9a\u4e49\u7684\u9875\u9762\u5bbd\u9ad8\uff0c\u6253\u5370\u540e\u53ea\u6709\u4e00\u9875\u957f\u5ea6

    \n
  2. \n
  3. \n

    \u4f7f\u7528 electron \u7684\u5bfc\u51fa PDF \u5c06 html \u5bfc\u51fa\u4e3a\u4e00\u4e2a\u5355\u9875\u957f pdf \u540e\u4f7f\u7528 pdftoprinter \u6216 SumatraPDF \u6216 GhostScript \u8fdb\u884c\u6253\u5370\u5747\u65e0\u6cd5\u5b9e\u73b0\u6253\u5370\u51fa\u5b8c\u6574\u7684\u9875\u9762\u9ad8\u5ea6\u3002

    \n
  4. \n
\n

\u95ee\u9898\uff1a \u8bf7\u95ee\u5982\u4f55\u5b9e\u73b0\u51fa C-Lodop \u7684\u65e0\u7f1d\u957f\u9875\u9762\u6253\u5370\u6548\u679c\u3002

\n

\u671f\u671b\u4f7f\u7528\uff1aelectron \u5b9e\u73b0

\n

\u76f8\u5173\u63d0\u95ee\u5730\u5740\uff1a

\n

https://github.com/sumatrapdfreader/sumatrapdf/issues/4736

\n

https://stackoverflow.com/questions/79319196/how-to-achieve-continuous-printing-of-long-receipts-on-dot-matrix-printer

\n" }, { "author": { "url": "member/inSpring", "name": "inSpring", "avatar": "https://cdn.v2ex.com/avatar/efed/9651/218790_large.png?m=1758511207" }, "url": "t/1100065", "title": "\u670b\u53cb\u4eec\uff0c\u4f60\u4eec\u516c\u53f8\u7684 Electron \u9879\u76ee\u7528\u4ec0\u4e48\u505a\u6570\u636e\u7edf\u8ba1\uff1f Google Analytics \u53ef\u4ee5\u7528\u5417\uff1f", "id": "t/1100065", "date_published": "2024-12-25T01:13:07+00:00", "content_html": "

\u7c7b\u4f3c Web \u3001App \u7edf\u8ba1\u3002\u6bd4\u5982\u7edf\u8ba1\u5b89\u88c5\u6570\u3001\u6d3b\u8dc3\u7528\u6237\u6570\u3001\u7528\u6237\u4f7f\u7528\u65f6\u957f\u7b49

\n" }, { "author": { "url": "member/ob", "name": "ob", "avatar": "https://cdn.v2ex.com/avatar/a5a4/fd63/76873_large.png?m=1769241292" }, "url": "t/1093288", "title": "\u5173\u4e8e electron\uff0c\u95ee\u4e00\u4e2a\u5173\u4e8e\u67e5\u627e\u7684\u95ee\u9898", "id": "t/1093288", "date_published": "2024-11-28T01:56:38+00:00", "content_html": "\u73b0\u5728\u5f88\u591a\u5e94\u7528\u90fd\u5f00\u59cb\u7528 electron \u5b9e\u73b0\uff0c\u4f46\u662f\u5f88\u591a\u5185\u5d4c\u7684\u7f51\u9875\u5185\u5bb9\u597d\u50cf\u90fd\u4e0d\u63d0\u4f9b\u67e5\u627e\u9875\u9762\u6587\u5b57\u7684\u529f\u80fd\uff0c\u8fd9\u4e2a\u95ee\u9898\u5927\u5bb6\u90fd\u662f\u600e\u4e48\u89e3\u51b3\u7684\uff1f
\u6bd4\u5982 chatgpt, poe \uff0c\u7b49\u7b49\u5f88\u591a\u5e94\u7528\u3002
\u6709\u65f6\u5019\u5185\u5bb9\u95ee\u591a\u4e86\uff0c\u60f3\u627e\u4e2a\u5173\u952e\u5b57\uff0c\u8981\u6eda\u534a\u5929\u3002\u3002" }, { "author": { "url": "member/liuchengfeng1", "name": "liuchengfeng1", "avatar": "https://cdn.v2ex.com/avatar/445e/d34f/441709_large.png?m=1732634973" }, "url": "t/1092916", "date_modified": "2024-11-26T15:32:32+00:00", "content_html": "
function createWindow() {\n // Create the browser window.\n const mainWindow = new BrowserWindow({\n width: 1024,\n height: 768,\n minWidth: 1024,\n minHeight: 768,\n show: false,\n title: '\u622a\u56fe\u5c0f\u5de5\u5177',\n autoHideMenuBar: true,\n webPreferences: {\n preload,\n sandbox: false,\n contextIsolation: false,\n nodeIntegration: true\n }\n })\n\n mainWindow.on('ready-to-show', () => {\n mainWindow.show()\n })\n\n mainWindow.webContents.setWindowOpenHandler((details) => {\n shell.openExternal(details.url)\n return { action: 'deny' }\n })\n // \u5185\u5d4c\u4e00\u4e2a web \u7f51\u9875\n mainWindow.loadURL('http://192.168.1.3:8848/')\n mainWindow.webContents.on('click', (event, x, y) => {\n console.log('\ud83d\ude80 ~ mainWindow.webContents.on ~ x:', x, y)\n })\n}\n
\n

\u60f3\u89e6\u53d1 electron \u91cc\u9762\u7684\u7a97\u53e3\u6700\u5c0f\u5316\u4e8b\u4ef6\uff1a

\n

\"image.png\"

\n", "date_published": "2024-11-26T15:31:57+00:00", "title": "electron \u5f00\u53d1\uff1a\u5355\u72ec\u7684 VUE \u5de5\u7a0b\u548c\u5355\u72ec\u7684 electron \u5de5\u7a0b\u60f3\u901a\u4fe1\u600e\u4e48\u5904\u7406\uff1f", "id": "t/1092916" }, { "author": { "url": "member/mietl", "name": "mietl", "avatar": "https://cdn.v2ex.com/avatar/cf7d/c01c/714623_large.png?m=1729643343" }, "url": "t/1082111", "title": "\u840c\u65b0\u6c42\u6559\uff0c Electron \u5728\u8bf7\u6c42\u8de8\u57df\u7684\u63a5\u53e3\u65f6\uff0c\u600e\u4e48\u83b7\u53d6 cookie?", "id": "t/1082111", "date_published": "2024-10-21T03:07:37+00:00", "content_html": "\u63a5\u53e3\u5730\u5740 http://bgm.tv/login

\u4f7f\u7528 axios \u8bf7\u6c42 withCredentials \u6709\u8bbe\u7f6e true


1. \u5c1d\u8bd5\u5728 cookie \u4e2d\u6dfb\u52a0 Secure; SameSite=None \u4f46\u662f Secure \u53ea\u5728 https \u534f\u8bae\u4e0a\u751f\u6548


2. \u5173\u95ed webPreferences webSecurity \u5b89\u5168\u6027\u4e5f\u4e0d\u884c


\u8bf7\u95ee\u8fd8\u6709\u5176\u4ed6\u529e\u6cd5\u5417\uff1f" }, { "author": { "url": "member/lxfcode", "name": "lxfcode", "avatar": "https://cdn.v2ex.com/gravatar/67689b67221d39c3dedb870c8efbcb44?s=73&d=retro" }, "url": "t/1077069", "title": "\u6c42\u6559\uff01 electron \u5f00\u53d1\u7684\u5de5\u5177\u7c7b\u5ba2\u6237\u7aef\u5e94\u7528\u5982\u4f55\u8bbe\u8ba1\u6fc0\u6d3b\u673a\u5236\uff1f", "id": "t/1077069", "date_published": "2024-09-30T04:19:02+00:00", "content_html": "

\u6709\u4e00\u4e2a electron \u5f00\u53d1\u7684\u5de5\u5177\u7c7b\u5e94\u7528\uff0c\u6570\u636e\u548c\u8ba1\u7b97\u90fd\u5728\u672c\u5730\uff0c\u60f3\u5b9e\u73b0\u6fc0\u6d3b\u7801\u673a\u5236\uff0c\u4ed8\u8d39\u5f97\u5230\u4e00\u4e2a key \u7528\u4e8e\u6fc0\u6d3b\uff0c\u6709\u65f6\u95f4\u6bb5\u9650\u5236\u3002\n\u76ee\u524d\u53ef\u884c\u7684\u65b9\u6848\uff1a1. \u670d\u52a1\u7aef\u767b\u5f55\u6ce8\u518c\u673a\u5236\uff0c\u4f46\u6b64\u65b9\u6848\u6700\u5bb9\u6613\u88ab\u7834\u89e3\uff0c\u76f4\u63a5\u672c\u5730\u8d77\u6fc0\u6d3b\u670d\u52a1\u5c31\u884c\u3002\n2. \u672c\u5730\u6536\u96c6\u7528\u6237\u7279\u5f81\u4f7f\u7528 AES \u52a0\u5bc6\u540e\u505a\u6fc0\u6d3b\u7801\u3002\u6b64\u65b9\u6848\u5728\u4e8e\u5982\u4f55\u9690\u85cf\u52a0\u5bc6\u4e32\uff0cJS \u662f\u660e\u6587\u7684\u3002

\n

\u6211\u77e5\u9053\u65e0\u6cd5\u505a\u5230\u5b8c\u7f8e\uff0c\u6c42\u6559\u4e00\u4e2a\u76f8\u5bf9\u53ef\u884c\u7684\u65b9\u6848\u3002\u6216\u8005\u884c\u4e1a\u5185\u5728\u7528\u7684\u7ecf\u8fc7\u9a8c\u8bc1\u7684\u65b9\u6848\u3002

\n" }, { "author": { "url": "member/seanwhy", "name": "seanwhy", "avatar": "https://cdn.v2ex.com/gravatar/6588fe5d3ad9dc8e28a8b47703bf76f6?s=73&d=retro" }, "url": "t/1067773", "date_modified": "2024-08-26T11:49:24+00:00", "content_html": "\u5404\u4f4d\u5927\u4f6c\uff0c\u6211\u4e4b\u524d\u628a\u4e09\u7ef4\u56fe\u5f62\u7a0b\u5e8f\u7f16\u8bd1\u6210 wasm \uff0c\u80fd\u6b63\u5e38\u8fd0\u884c\u5728\u6d4f\u89c8\u5668\u4e0a\u3002\u4f46\u73b0\u5728\u5c06\u5b83\u653e\u5728 electron \u4e0a\u8c03\u7528\uff0c\u53d1\u73b0\u62a5\u9519\uff1aUncaught Error: The V8 platform used by this instance of Node does not support creating Workers \u3002
\u8fd9\u4e2a\u62a5\u9519\u8868\u660e node \u76ee\u524d\u73af\u5883\u4e0d\u652f\u6301 workers \u3002\u6211 C++\u5199\u7684\u7a0b\u5e8f\uff0c\u91cc\u9762\u786e\u5b9e\u7528\u5230\u4e86\u5927\u91cf\u7ebf\u7a0b\uff0c\u4e5f\u5c31\u662f\u4f7f\u7528\u4e86 pthread \uff0c\u6d4f\u89c8\u5668\u7aef\u5bf9\u5e94\u7684\u5176\u5b9e\u5c31\u662f webworkers \u3002
electron \u91cc\u9762\u7684\u914d\u7f6e\uff0c\u6bd4\u5982\uff1anodeIntegration: true,contextIsolation: false,\u4e5f\u90fd\u8bbe\u7f6e\u4e86\uff0c\u5747\u65e0\u4ec0\u4e48\u7528\u3002
\u73b0\u5728\u6bd4\u8f83\u8ff7\uff0c\u5230\u5e95\u8981\u4fee\u6539\u54ea\u90e8\u5206\u5185\u5bb9\uff0c\u662f\u6211\u7684 wasm \u7a0b\u5e8f\u7684\u7f16\u8bd1\u6307\u4ee4\uff1f\u8fd8\u662f\u6211\u7684 wasm \u5177\u4f53\u5b9e\u73b0\uff1f\u8fd8\u662f electron \u5185\u90e8\u7684\u914d\u7f6e\uff1f\u6216\u662f electron \u5185\u90e8\u7684\u8c03\u7528\u5b9e\u73b0\uff1f", "date_published": "2024-08-26T02:51:01+00:00", "title": "[\u6c42\u52a9] Electron \u4e2d\u8fd0\u884c Webassembly \u7591\u95ee", "id": "t/1067773" }, { "author": { "url": "member/join", "name": "join", "avatar": "https://cdn.v2ex.com/avatar/a372/457b/16318_large.png?m=1723696699" }, "url": "t/1066068", "date_modified": "2024-08-19T03:41:00+00:00", "content_html": "

\u524d\u6587\u63d0\u8981\uff1a\nt/1065201#reply0

\n

\u4e0a\u4e00\u4e2a\u6c42\u52a9\u8d34\u7684\u95ee\u9898\u6211\u641e\u5b9a\u4e86\uff0c\u539f\u56e0\u5c31\u662f .node \u7684 native module \u9700\u8981\u5355\u72ec\u505a\u7b7e\u540d\uff0c\u5426\u5219\u4f1a\u62a5\u9519\u3002

\n

\u73b0\u5728\u6211\u628a\u5e94\u7528\u4e0a\u67b6\u5230\u4e86 testflight \uff0c\u5e94\u7528\u4e0b\u8f7d\u5b89\u88c5\u540e\u4f1a\u767d\u5c4f\u3002\u6211\u624b\u52a8\u8c03\u8bd5\u540e\u6709\u4ee5\u4e0b\u786e\u8ba4\u4fe1\u606f\uff1a

\n
    \n
  1. \u53ef\u4ee5\u6b63\u5e38\u7684\u7528 better-sqlite3 \u8fd9\u4e2a native module \u8bfb\u53d6\u672c\u5730\u7684 sqlite \u6570\u636e\u5e93\u3002
  2. \n
  3. \u524d\u7aef\u7684 index.html \u6587\u4ef6\u8def\u5f84\u6b63\u786e\uff0c\u53ef\u4ee5\u8bfb\u53d6\u3002
  4. \n
  5. renderer \u8fdb\u7a0b\u663e\u793a crash \u4e86\uff0c\u548c\u6b63\u5e38\u542f\u52a8\u7684 electron \u7a0b\u5e8f\u53d1\u73b0 renderer \u8fdb\u7a0b\u786e\u5b9e\u6ca1\u6709\u542f\u52a8\u3002
  6. \n
  7. \u524d\u7aef\u4e5f\u6253\u4e0d\u5f00 dev tools \u3002
  8. \n
\n

\u66f4\u8be6\u7ec6\u7684\u4fe1\u606f\u53ef\u4ee5\u770b\u6211\u63d0\u4ea4\u7684 issue\uff1a\nhttps://github.com/electron/electron/issues/43349

\n", "date_published": "2024-08-19T03:40:40+00:00", "title": "\u5bfb\u6c42\u6709\u507f\u5e2e\u52a9\uff0c\u5c06 Electron \u5e94\u7528\u4e0a\u67b6\u81f3 Mac App Store\u3002", "id": "t/1066068" }, { "author": { "url": "member/huage", "name": "huage", "avatar": "https://cdn.v2ex.com/avatar/162a/2584/69678_large.png?m=1700057630" }, "url": "t/1065950", "title": "Electron \u5f00\u53d1\u7684 Windows \u684c\u9762\u5e94\u7528\u6253\u5f00\u65f6\u4e3a\u4ec0\u4e48\u6709\u4e00\u4e2a installing \u7684\u7a97\u53e3\uff1f", "id": "t/1065950", "date_published": "2024-08-18T15:26:29+00:00", "content_html": "\u6587\u4ef6\u53ea\u6709\u4e00\u4e2a\u5355\u4f53\u7684 exe \u6587\u4ef6\uff0c\u4f46\u662f\u6253\u5f00\u65f6\u540c\u65f6\u51fa\u73b0\u7a0b\u5e8f\u7684\u7a97\u53e3\u548c\u4e00\u4e2a installing \u7a97\u53e3\uff0cinstallIng \u8fd0\u884c\u4e00\u4f1a\u4f1a\u9000\u51fa\uff0c\u91cd\u65b0\u6253\u5f00\u7a0b\u5e8f\u7684\u7a97\u53e3\u3002

\u8fd9\u662f\u4e3a\u4ec0\u4e48\u5462\uff1f" }, { "author": { "url": "member/join", "name": "join", "avatar": "https://cdn.v2ex.com/avatar/a372/457b/16318_large.png?m=1723696699" }, "url": "t/1065201", "date_modified": "2024-08-15T04:49:09+00:00", "content_html": "

\u6211\u8fd9\u51e0\u5929\u4e00\u76f4\u5728\u548c\u7b7e\u540d\u76f8\u5173\u7684\u95ee\u9898\u640f\u6597\uff0c\u80fd\u505a\u7684\u4e8b\u60c5\u5df2\u7ecf\u5168\u90fd\u505a\u4e86\u3002\u73b0\u5728\u5e94\u7528\u4e00\u76f4\u5361\u5728 testflight \u5b89\u88c5\u540e\u62a5\u9519\u3002\n\u62a5\u9519\u7684\u539f\u56e0\u662f\u6211\u4eec\u7528\u4e86 better-sqlite3 \u8fd9\u4e2a\u5e93\uff0c\u4ee5\u4e0b\u662f\u62a5\u9519\u4fe1\u606f\u3002

\n
A Javascript error occurred in the main process \nUncaught Exception: \nError: dlopen(/Users/sergey/Library/Containers/com.slippod.dev1/Data/tmp/.DN5KWP78X9.com.slippod.dev1.3r1lqH, 0x0001): tried: '/Users/sergey/Library/Containers/com.slippod.dev1/Data/tmp/.DN5KWP78X9.com.slippod.dev1.3r1lqH' (code signature invalid in <B7BF9AE3-92D4-3E60-9D1F-E80E213B4689> '/Users/sergey/Library/Containers/com.slippod.dev1/Data/tmp/.DN5KWP78X9.com.slippod.dev1.3r1lqH' (errno=1) \nslice Offset=0x00204000, codeBlob Offset=0x001D3B50, codeBlobSize=0x0000AD80), \n'/System/Volumes/Preboot/Cryptexes/OS/Users/sergey/Library/Containers/com.slippod.dev1/Data/tmp/.DN5KWP78X9.com.slippod.dev1.3r1lqH' (no such file), '/Users/sergey/Library/Containers/com.slippod.dev1/Data/tmp/.DN5KWP78X9.com.slippod.dev1.3r1lqH' (code signature invalid in <B7BF9AE3-92D4-3E60-9D1F-E80E213B4689> '/Users/sergey/Library/Containers/com.slippod.dev1/Data/tmp/.DN5KWP78X9.com.slippod.dev1.3r1lqH' (errno=1) \nslice Offset=0x00204000, code Blob Offset=0x001D3B50, codeBlobSize=0x0000AD80) \nat process.func [as dlopen] (node:electron/js2c/asar_bundle:2:1869) \nat Module._extensions..node (node:internal/modules/cjs/loader: 1326:18) \nat Object.func [as .node] (node: electron/js2c/asar_bundle:2:2096) \nat Module.load (node:internal/modules/cjs/loader: 1096:32) \nat Module._load (node:internal/modules/cjs/loader: 937:12) \nat f._load (node: electron/js2c/asar_bundle:2:13377) \nat Module.require (node:internal/modules/cjs/loader: 1120:19) \nat require (node:internal/modules/cjs/helpers:103:18) \nat bindings (/Applications/slippod-1.localized/slippod.app/Contents/Resources/app.asar/node_modules/bindings/bindings.js:112:48) \nat new Database (/Applications/slippod-1.localized/slippod.app/Contents/Resources/app.asar/node_modules/better-sqlite3/lib/database.js:48:64) \n
\n

\u6211\u5728\u7f51\u4e0a\u770b\u5230\u6709\u4eba\u9047\u5230\u4e86\u7c7b\u4f3c\u7684\u95ee\u9898\uff0c\u4ed6\u8bf4\u628a native module \u7684 .node \u6587\u4ef6\u5355\u72ec\u7b7e\u540d\u5c31\u597d\u4e86\u3002

\n

https://github.com/WiseLibs/better-sqlite3/issues/1110

\n

\u6211\u81ea\u5df1\u5728\u6784\u5efa\u811a\u672c\u91cc\u9762\u751a\u81f3\u5355\u72ec\u7684\u628a asar \u89e3\u5f00\uff0c\u7136\u540e\u5355\u72ec\u7b7e\u540d\uff0c\u518d asar pack \u6253\u5305\u56de\u53bb\u90fd\u6ca1\u7528\u3002\u6211\u5728 testflight \u5e94\u7528\u7684\u5b89\u88c5\u673a\u5668\u91cc\u9762\u68c0\u67e5\u4e86\u7b7e\u540d\uff0c\u53d1\u73b0\u7b7e\u540d\u662f\u5bf9\u7684\u3002\u4ee5\u4e0b\u662f\u7b7e\u540d\u7528\u7684\u547d\u4ee4\uff1a

\n
xcrun codesign --entitlements ./build/entitlements.mas.plist --sign $identity --timestamp --options runtime --force tmp_app/node_modules/better-sqlite3/build/Release/better_sqlite3.node\n
\n

\u4ee5\u4e0b\u662f\u76ee\u6807\u5b89\u88c5\u673a\u5668\u83b7\u5f97\u7684\u7b7e\u540d\u4fe1\u606f\uff1a

\n
codesign -dv --verbose=4 /tmp/1/node_modules/better-sqlite3/build/Release/better_sqlite3.node \nExecutable=/private/tmp/1/node_modules/better-sqlite3/build/Release/better_sqlite3.node\nIdentifier=better_sqlite3\nFormat=Mach-O universal (x86_64 arm64)\nCodeDirectory v=20500 size=15258 flags=0x10000(runtime) hashes=468+5 location=embedded\nVersiOnPlatform=1\nVersiOnMin=720896\nVersiOnSDK=852224\nHash type=sha256 size=32\nCandidateCDHash sha1=3b6b239e386494b89e02e410599007bc5fadbe86\nCandidateCDHashFull sha1=3b6b239e386494b89e02e410599007bc5fadbe86\nCandidateCDHash sha256=ede31015cf4d6a33deec42f8e2f96d68ad761b80\nCandidateCDHashFull sha256=ede31015cf4d6a33deec42f8e2f96d68ad761b8096973c8dc0e7cf238ae1b542\nHash choices=sha1,sha256\nCMSDigest=cc4210ec569d3604c006be3785bf02944ba0e250ce30933be60ab71b09ed851d\nCMSDigestType=2\nExecutable Segment base=0\nExecutable Segment limit=1753088\nExecutable Segment flags=0x0\nPage size=4096\nCDHash=ede31015cf4d6a33deec42f8e2f96d68ad761b80\nSignature size=9234\nAuthority=Apple Distribution: Company TECHNOLOGY CO., LTD (*****)\nAuthority=Apple Worldwide Developer Relations Certification Authority\nAuthority=Apple Root CA\nTimestamp=Aug 15, 2024 at 11:06:17\nInfo.plist=not bound\nTeamIdentifier=DN5KWP78X9\nRuntime Version=13.1.0\nSealed Resources=none\nInternal requirements count=1 size=208\n\n
\n

\u51e0\u4e4e\u80fd\u7528\u7684\u529e\u6cd5\u90fd\u7528\u8fc7\u4e86\u3002 \u5e94\u7528\u662f\u7528\u7684 electrion-builder \u6253\u5305\u7684\uff0c\u672c\u6765\u7528\u5b83\u81ea\u5e26\u7684\u7b7e\u540d\u5de5\u5177\uff0c\u4f46\u4e00\u76f4\u6709\u95ee\u9898\u3002\u540e\u6765\u6362\u4e86 osx-sign \u4e5f\u540c\u6837\u6709\u95ee\u9898\u3002\n\u4ee5\u4e0b\u662f\u6211\u7528\u7684\u5305\u4fe1\u606f\uff1a

\n
 \"better-sqlite3\": \"^8.6.0\",\n \"@electron/osx-sign\": \"^1.3.1\",\n \"electron\": \"^24.2.0\",\n \"electron-builder\": \"25.0.3\",\n
\n

\u6211\u770b\u8fd9\u91cc\u6709 electron \u793e\u533a\u7684\u5f00\u53d1\u4eba\u5458\uff0c @BlackHole1 \u80fd\u5426\u62bd\u7a7a\u5e2e\u5fd9\u770b\u4e0b\uff1f

\n", "date_published": "2024-08-15T04:46:17+00:00", "title": "electron mac store \u5e94\u7528\u7b7e\u540d\u4e0a\u67b6\u6c42\u52a9", "id": "t/1065201" }, { "author": { "url": "member/huage", "name": "huage", "avatar": "https://cdn.v2ex.com/avatar/162a/2584/69678_large.png?m=1700057630" }, "url": "t/1065070", "title": "Win10 \u4e0b\u901a\u8fc7 npm \u5b89\u88c5 electron \u51fa\u73b0\u62a5\u9519", "id": "t/1065070", "date_published": "2024-08-14T16:45:32+00:00", "content_html": "\u62a5\u9519\u5982\u4e0b\uff1a

C:\\Users\\vmuser\\my-electron-app>npm install --save-dev electron
npm error code 1
npm error path C:\\Users\\vmuser\\my-electron-app\\node_modules\\electron
npm error command failed
npm error command C:\\Windows\\system32\\cmd.exe /d /s /c node install.js
npm error RequestError: connect ECONNREFUSED 20.205.243.166:443
npm error at ClientRequest.<anonymous> (C:\\Users\\vmuser\\my-electron-app\\node_modules\\got\\dist\\source\\core\\index.js:970:111)
npm error at Object.onceWrapper (node:events:634:26)
npm error at ClientRequest.emit (node:events:531:35)
npm error at origin.emit (C:\\Users\\vmuser\\my-electron-app\\node_modules\\@szmarczak\\http-timer\\dist\\source\\index.js:43:20)
npm error at TLSSocket.socketErrorListener (node:_http_client:500:9)
npm error at TLSSocket.emit (node:events:519:28)
npm error at emitErrorNT (node:internal/streams/destroy:169:8)
npm error at emitErrorCloseNT (node:internal/streams/destroy:128:3)
npm error at process.processTicksAndRejections (node:internal/process/task_queues:82:21)
npm error at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1607:16)

\u4e4b\u524d\u4ee5\u4e3a\u662f\u6743\u9650\u95ee\u9898\uff0c\u4f46\u662f\u7528\u4e86\u7ba1\u7406\u5458\u6267\u884c\u8fd8\u662f\u8fd9\u6837\uff0c\u8bf7\u95ee\u5982\u4f55\u89e3\u51b3\uff1f" }, { "author": { "url": "member/Atma", "name": "Atma", "avatar": "https://cdn.v2ex.com/gravatar/b1c15e72c553eb28c13984ff07fdfa27?s=73&d=retro" }, "url": "t/1064739", "title": "mac \u5982\u4f55\u76d1\u542c\u8f6f\u4ef6\u53d8\u5316", "id": "t/1064739", "date_published": "2024-08-13T14:10:50+00:00", "content_html": "

\u4e3a\u4e86\u5b9e\u65f6\u626b\u63cf\u672c\u673a\u8f6f\u4ef6\u7684\u53d8\u5316(\u5220\u9664 \u66f4\u65b0 \u5b89\u88c5)\uff0c\u4f7f\u7528\u4e86 chokidar \u53bb\u76d1\u542c application \u6587\u4ef6\u5939\u7684\u53d8\u5316\uff0c\u5bf9\u4e8e\u5df2\u7ecf\u5b89\u88c5\u7684\u53ef\u4ee5\u76f4\u63a5\u76d1\u542c plist \u5373\u53ef\uff0c\u4f46\u662f\u5bf9\u4e8e\u65b0\u589e\u6216\u8005\u66f4\u65b0 plist \u8def\u5f84\u53d8\u5316\uff0c\u5c31\u9700\u8981\u5168\u90e8\u7eb3\u5165\u76d1\u542c\uff0c\u867d\u7136\u5df2\u7ecf\u9650\u5236 depth \u4e3a 3 \uff0c\u4f46\u662f fsevents cpu \u5360\u7528\u8fd8\u662f\u6bd4\u8f83\u9ad8\uff0c\u5927\u5bb6\u8fd8\u6709\u5176\u4ed6\u4e00\u4e9b\u5efa\u8bae\u6216\u8005\u601d\u8def\u53ef\u4ee5\u53c2\u8003\u4e0b\u5417\uff1f

\n" }, { "author": { "url": "member/skape", "name": "skape", "avatar": "https://cdn.v2ex.com/gravatar/8d64980df2027110fd4c307e4da8a967?s=73&d=retro" }, "url": "t/1056754", "title": "electron \u5185\u5b58\u4f18\u5316", "id": "t/1056754", "date_published": "2024-07-12T02:09:31+00:00", "content_html": "

\u6211\u770b\u4e86\u672c\u673a\u7684 clash for windows \u4f18\u5316\u7684\u633a\u597d\u7684\uff0c\u4e0d\u77e5\u9053\u600e\u4e48\u4f18\u5316\u7684\uff0c\n\u7a33\u5b9a\u8fd0\u884c\u5185\u5b58\u5360\u7528\u4e5f\u5c31 150M \u5de6\u53f3\u3002

\n

\u56e0\u4e3a\u6700\u8fd1\u5728\u505a\u6280\u672f\u8bc4\u4f30\uff0c\u4e00\u4e2a Arm 64 \u7684\u5f00\u53d1\u677f\uff0c\u6211\u80fd\u4f7f\u7528\u7684\u5185\u5b58\u4e5f\u5c31 1.5G \uff0c\u7528 Electron \u5feb\u901f\u5f00\u53d1\n\u611f\u89c9\u6709\u70b9\u5192\u98ce\u9669\u3002\u6700\u8fd1\u5728\u770b Qt,\u5f00\u53d1\u901f\u5ea6\u592a\u6162\uff0c\u754c\u9762\u4e0d\u592a\u597d\u641e\u3002

\n

\u770b\u4e86\u5f00\u6e90\u7684 electron-egg \u4f18\u5316\u7684\u5185\u5b58\u6709\u4e09\u56db\u767e M,\u542f\u52a8\u65f6\u66f4\u591a\u3002

\n

\u6709\u6ca1\u6709\u597d\u7684\u5f00\u6e90\u7684 electron \u8c03\u4f18\u597d\u7684\u6846\u67b6\uff0c\u80fd\u9002\u914d\u4e0a\u4f4d\u673a \u5185\u5b58\u4e0d\u5927\u7684 arm \u5f00\u53d1\u677f\u4f7f\u7528\uff1f\u3002\n\u8c01\u77e5\u9053 clash \u6709\u6ca1\u6709\u5f00\u6e90\u7684\u4ee3\u7801\uff0c\u5b66\u4e60\u4e0b\u4ed6\u7684 electron \u3002

\n

\u5f00\u53d1\u8bbe\u5907\uff08 aarch64 ubuntu \u53ef\u7528 1.5G \u5185\u5b58\uff0c\u9700\u8981\u89e6\u6478\u5c4f\u5e55\u64cd\u4f5c\uff0c\u96c7\u4e3b\u5e0c\u671b\u7a33\u5b9a\uff0c\u6d41\u7545\uff0c\u754c\u9762\u7f8e\u89c2\uff09

\n" }, { "author": { "url": "member/axina", "name": "axina", "avatar": "https://cdn.v2ex.com/gravatar/8217fa1b80b056b13513ebcd60e10238?s=73&d=retro" }, "url": "t/1053772", "date_modified": "2024-07-01T03:47:59+00:00", "content_html": "

\u8bf7\u6559\u4e00\u4e0b\u5404\u4f4d\u5927\u4f6c\u4e00\u4e2a electron \u95ee\u9898\uff1a\n\u5728 mac \u4e0a\u6253\u5305 electron(\u4f7f\u7528 electron-vite + react + python)\uff0c\u5176\u4e2d\u5c06\u540e\u7aef python api \u670d\u52a1\u6253\u5305\u4e3a main.dist \u6587\u4ef6\uff08\u91cc\u9762\u5305\u542b main.bin \uff09

\n

\u5f00\u53d1\u73af\u5883\uff1a\n\u4e00\u5207\u90fd\u6b63\u5e38\uff0cmain.bin \u6587\u4ef6\u6b63\u5e38\u542f\u52a8\uff1b

\n

\u6253\u5305\u5e76\u5b89\u88c5\u5230 mac \u540e\uff1a

\n\n

\u4e0d\u77e5\u9053\u662f\u4ec0\u4e48\u95ee\u9898\uff0c\u95ee AI \u6539\u4e86\u597d\u591a\u904d\u8fd8\u662f\u8fd9\u6837\uff0c\u8bf7\u6559\u4e0b\u5927\u5bb6\u5e2e\u5fd9\u770b\u4e0b\uff0c\u8c22\u8c22\u4e86\u3002

\n

\u4e0b\u9762\u662f main \u4e0b\u7684\u8be5\u90e8\u5206\u4ee3\u7801\uff1a

\n
 let pythonBinPath: string;\n if (app.isPackaged) {\n // \u6253\u5305\u540e\u7684\u8def\u5f84\n pythOnBinPath= join(process.resourcesPath,'main.dist', 'main.bin');\n } else {\n // \u5f00\u53d1\u6a21\u5f0f\u4e0b\u7684\u8def\u5f84\n pythOnBinPath= join(app.getAppPath(), 'resources/main.dist', 'main.bin');\n }\n\n console.log('Python binary path:', pythonBinPath);\n\n // \u5c1d\u8bd5\u8bbe\u7f6e Python \u53ef\u6267\u884c\u6587\u4ef6\u7684\u6743\u9650\n try {\n chmodSync(pythonBinPath, '755');\n } catch (error) {\n console.error(`\u8bbe\u7f6e Python \u53ef\u6267\u884c\u6587\u4ef6\u6743\u9650\u5931\u8d25: ${error}`);\n dialog.showErrorBox('\u6743\u9650\u9519\u8bef', `\u8bbe\u7f6e Python \u53ef\u6267\u884c\u6587\u4ef6\u6743\u9650\u5931\u8d25: ${error}`);\n return;\n }\n\n // \u542f\u52a8 Python \u8fdb\u7a0b\n pythOnProcess= spawn(pythonBinPath);\n
\n", "date_published": "2024-06-30T14:29:29+00:00", "title": "\u8bf7\u6559\u4e00\u4e0b\uff0c electron \u6253\u5305\u7684\u5b89\u88c5\u5305\uff0c\u5305\u542b\u7684 bin \u6587\u4ef6\u65e0\u6cd5\u6267\u884c\u95ee\u9898", "id": "t/1053772" }, { "author": { "url": "member/18bili", "name": "18bili", "avatar": "https://cdn.v2ex.com/gravatar/3f0d8b15bfb0cb38e3e9dca8ddde0859?s=73&d=retro" }, "url": "t/1052317", "title": "\u6709 Flutter \u5c31\u884c\u4e86\u4e3a\u4ec0\u4e48\u8fd8\u9700\u8981 Electron\uff0c\u8c01\u6765\u7ea0\u6b63\u4e00\u4e0b\u6211\u7684\u60f3\u6cd5", "id": "t/1052317", "date_published": "2024-06-25T01:48:02+00:00", "content_html": "

\u6211\u4e2a\u4eba\u5bf9 Electron \u7684\u4e86\u89e3\u4e0d\u591a\uff0c\u5e94\u8be5\u4e3b\u8981\u5c31\u662f\u7528\u6765\u5f00\u53d1\u684c\u9762\u5e94\u7528\u7684\u3002\u4f46\u662f Flutter \u5c31\u53ef\u4ee5\u5f00\u53d1\u684c\u9762\u5e94\u7528\uff0c\u8fd8\u53ef\u4ee5\u4e00\u5957\u4ee3\u7801\u540c\u65f6\u9002\u914d\u591a\u4e2a\u5e73\u53f0\uff0c\u5305\u62ec\u79fb\u52a8\u7aef\uff0c\u4e3a\u4ec0\u4e48\u8fd8\u9700\u8981 Electron \uff0c\u8c01\u6765\u7ea0\u6b63\u4e00\u4e0b\u6211\u7684\u60f3\u6cd5\uff1f

\n" }, { "author": { "url": "member/bug51", "name": "bug51", "avatar": "https://cdn.v2ex.com/avatar/f1c3/bb38/653901_large.png?m=1715484145" }, "url": "t/1047461", "title": "\u8d81\u7740\u8fd9\u628a AI \u7092\u4f5c\uff0c Eletron \u6709\u6ca1\u6709\u66f4\u706b\u4e86\uff1f", "id": "t/1047461", "date_published": "2024-06-06T10:26:57+00:00", "content_html": "" }, { "author": { "url": "member/lingeo", "name": "lingeo", "avatar": "https://cdn.v2ex.com/avatar/8612/5629/606065_large.png?m=1680230803" }, "url": "t/1044705", "date_modified": "2024-05-28T07:11:49+00:00", "content_html": "

electron \u6253\u5305\u4e86\u4e00\u4e2a\u5e94\u7528\uff0c\u542f\u52a8\u540e\u4e3b\u7a97\u53e3\u5df2\u7ecf\u6253\u5f00\u4e86\uff0c\u4f46\u662f\u8fd8\u4f1a\u6709\u4e2a update \u7a97\u53e3\uff0c\u8fc7\u4e00\u4f1a\u53c8\u91cd\u65b0\u6253\u5f00\u4e86\u4e3b\u7a97\u53e3\u3002\n\u641c\u4e86\u4e0b\u5982\u4f55\u5173\u95ed\u81ea\u52a8\u66f4\u65b0\uff0c\u6211\u7a0b\u5e8f\u4e2d\u4e5f\u6ca1\u6709\u627e\u5230\u4efb\u4f55\u66f4\u65b0\u7684\u4ee3\u7801\uff0c\u4f7f\u7528\u7684\u662f electron-forge \u6253\u5305\u3002
\n\"\"\n\"\"

\n", "date_published": "2024-05-28T07:09:28+00:00", "title": "electron \u542f\u52a8\u65f6\u5982\u4f55\u53d6\u6d88 update \u7a97\u53e3", "id": "t/1044705" }, { "author": { "url": "member/Minimx", "name": "Minimx", "avatar": "https://cdn.v2ex.com/gravatar/d127c23071807af1588d82285be0a619?s=73&d=retro" }, "url": "t/1035535", "title": "Poros-\u57fa\u4e8e Umi \u7684 Electron React \u6846\u67b6", "id": "t/1035535", "date_published": "2024-04-25T03:14:47+00:00", "content_html": "

\u57fa\u4e8e Umi \u7684 Electron React \u6846\u67b6

\n
\n

\u60a8\u53ef\u4ee5\u5feb\u901f\u6784\u5efa\u4e00\u4e2a Electron \u9879\u76ee\uff0c\u53ef\u4ee5\u5f00\u53d1\u3001\u6253\u5305\u3001\u5347\u7ea7\u7b49\uff0c\u5b83\u5177\u5907 Umi \u7684\u6240\u6709\u529f\u80fd\u3002\u5b83\u8fd8\u96c6\u6210\u4e86\u5e38\u7528\u7684 electron \u5e93\uff0c\u6bd4\u5982\uff1aelectron-log \u3001electron-store... \u672a\u6765\u8fd8\u5c06\u96c6\u6210\u66f4\u591a\u529f\u80fd\u3002

\n
\n

\u5feb\u901f\u4e0a\u624b

\n

\u521b\u5efa\u9879\u76ee

\n

\u5148\u627e\u4e2a\u5730\u65b9\u5efa\u4e2a\u7a7a\u76ee\u5f55\u3002

\n
$ mkdir myapp && cd myapp\n
\n
# pnpm \u63a8\u8350\n$ pnpm create poros\n\n# npm\n$ npx create-poros@latest\n\n# yarn\n$ yarn create poros\n
\n

\u542f\u52a8\u9879\u76ee

\n

\u6267\u884c pnpm start \u547d\u4ee4

\n
 \u2554\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2557\nready - \u2551 Electron app launch success \u2551\n \u255a\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u255d\nevent - [Webpack] Compiled in 19830 ms (4955 modules)\ninfo - [MFSU][eager] write cache\ninfo - [MFSU] buildDepsAgain\ninfo - [MFSU] skip buildDeps\n
\n

\u76ee\u5f55\u7ed3\u6784

\n
\u251c\u2500\u2500 config\n\u2502\u00a0\u00a0 \u251c\u2500\u2500 builder.ts // electron-builder \u914d\u7f6e\n\u2502\u00a0\u00a0 \u251c\u2500\u2500 config.ts // umi \u914d\u7f6e\n\u2502\u00a0\u00a0 \u2514\u2500\u2500 routes.ts // umi routes \u914d\u7f6e\n\u251c\u2500\u2500 mock \n\u2502\u00a0\u00a0 \u2514\u2500\u2500 demo.ts\n\u251c\u2500\u2500 src\n\u2502\u00a0\u00a0 \u251c\u2500\u2500 constants\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2514\u2500\u2500 index.ts\n\u2502\u00a0\u00a0 \u251c\u2500\u2500 locales // \u56fd\u9645\u5316\u76ee\u5f55,\u5f00\u542f\u56fd\u9645\u5316\u63d2\u4ef6\u6709\u6548\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u251c\u2500\u2500 en-US.ts\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2514\u2500\u2500 zh-CN.ts\n\u2502\u00a0\u00a0 \u251c\u2500\u2500 main // \u4e3b\u8fdb\u7a0b\u76ee\u5f55\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u251c\u2500\u2500 windows // \u7a97\u53e3\u76ee\u5f55\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2514\u2500\u2500 index.ts\n\u2502\u00a0\u00a0 \u251c\u2500\u2500 preload // preload \u76ee\u5f55\n\u2502\u00a0\u00a0 \u2502\u00a0\u00a0 \u2514\u2500\u2500 index.ts\n\u2502\u00a0\u00a0 \u251c\u2500\u2500 renderer // \u6e32\u67d3\u8fdb\u7a0b\u76ee\u5f55\uff0c\u540c umi\n\u2502\u00a0\u00a0 \u2502 \u251c\u2500\u2500 assets\n\u2502\u00a0\u00a0 \u2502 \u251c\u2500\u2500 models\n\u2502\u00a0\u00a0 \u2502 \u251c\u2500\u2500 pages\n\u2502\u00a0\u00a0 \u2502 \u251c\u2500\u2500 utils \n\u2502\u00a0\u00a0 \u2502 \u251c\u2500\u2500 ipc.ts // \u6e32\u67d3\u8fdb\u7a0b\u4e0e\u4e3b\u8fdb\u7a0b ipc \u901a\u4fe1\u5b9a\u4e49\u6587\u4ef6\uff0c\u5f00\u542f ipc \u63d2\u4ef6\u6709\u6548\n\u2502\u00a0\u00a0 \u2502 \u2514\u2500\u2500 app.ts \n\u251c\u2500\u2500 package.json\n\u251c\u2500\u2500 pnpm-lock.yaml\n\u251c\u2500\u2500 tsconfig.json\n\u2514\u2500\u2500 typings.d.ts\n
\n

\u81ea\u5b9a\u4e49\u7a97\u53e3

\n

\u6846\u67b6\u7ea6\u5b9a\u4ee5 src/main/window \u76ee\u5f55\u4f5c\u4e3a\u81ea\u5b9a\u5b9a\u7a97\u53e3\u76ee\u5f55

\n
\n

\u81ea\u5b9a\u4e49\u7a97\u53e3\u9700\u8981\u7ee7\u627f PorosBrowserWindow \u7c7b, PorosBrowserWindow \u4e3a BrowserWindow \u5b50\u7c7b

\n
\n
// src/main/window/MainWindow\nimport path from 'path';\nimport { PorosBrowserWindow, PorosBrowserWindowOptions } from 'poros';\n\nclass MainWindow extends PorosBrowserWindow {\n /**\n * \u662f\u5426\u5355\u4f8b, \u9ed8\u8ba4\uff1atrue\n */\n static readonly single = true;\n\n /**\n * \u52a0\u8f7d\u9875\u9762\u5730\u5740\n */\n protected static readonly URL = '/';\n\n /**\n * \u7a97\u53e3\u5c5e\u6027\u914d\u7f6e\n */\n protected static readonly OPTIONS: PorosBrowserWindowOptiOns= {\n title: 'Poros',\n height: 628,\n width: 542,\n minHeight: 628,\n minWidth: 542,\n hideOnClose: true,\n webPreferences: {\n preload: path.join(__dirname, 'preload/index.js'),\n },\n };\n\n constructor() {\n super(MainWindow.URL, MainWindow.OPTIONS);\n }\n\n protected registerWindowEvent(): void {}\n}\n\nexport default MainWindow;\n
\n

API

\n
\n

import { something } from 'poros';

\n
\n

Main Process

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
\u53c2\u6570\u7c7b\u578b\u8bf4\u660e
initialize() => void\u521d\u59cb\u5316\u65b9\u6cd5\uff0c\u9700\u8981\u5728 app ready \u4e4b\u524d\u8c03\u7528
PorosBrowserWindowPorosBrowserWindow\u7a97\u53e3\u57fa\u7c7b
PorosWindowManagerPorosWindowManager\u7a97\u53e3\u7ba1\u7406\u7c7b
portnumberdev web \u670d\u52a1\u7aef\u53e3
loggerLogger\u65e5\u5fd7\u6a21\u5757
localStoreLocalStore\u672c\u5730\u5316\u5b58\u50a8\uff0c\u53ef\u4ee5\u672c\u5730\u6587\u4ef6\u7684\u65b9\u5f0f\u5b58\u50a8\u4e00\u4e9b\u914d\u7f6e\u4fe1\u606f
localShortcutLocalShortcut\u7a97\u53e3\u5316\u5feb\u6377\u952e
isMacOSboolean\u662f\u5426\u4e3a macOS \u7cfb\u7edf
isWindowsboolean\u662f\u5426\u4e3a Windows \u7cfb\u7edf
isLinuxboolean\u662f\u5426\u4e3a Linux \u7cfb\u7edf
isX86boolean\u662f\u5426\u4e3a x86 \u67b6\u6784
isX64boolean\u662f\u5426\u4e3a x64 \u67b6\u6784
isDevboolean\u662f\u5426\u4e3a\u5f00\u53d1\u73af\u5883
isProdboolean\u662f\u5426\u4e3a\u751f\u4ea7\u73af\u5883

Renderer Process

\n
\n

\u900f\u4f20 umi \u7684\u6240\u6709\u5c5e\u6027, \u4e5f\u52a0\u5165\u4e86\u4e00\u4e9b\u5199\u7684\u5c5e\u6027

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
\u53c2\u6570\u7c7b\u578b\u8bf4\u660e
loggerLogger\u65e5\u5fd7\u6a21\u5757
localStoreLocalStore\u672c\u5730\u5316\u5b58\u50a8\uff0c\u53ef\u4ee5\u672c\u5730\u6587\u4ef6\u7684\u65b9\u5f0f\u5b58\u50a8\u4e00\u4e9b\u914d\u7f6e\u4fe1\u606f

PorosBrowserWindow

\n

\u7ee7\u627f\u81f3 BrowserWindow

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
\u53c2\u6570\u7c7b\u578b\u8bf4\u660e
singlestatic readonly boolean\u662f\u5426\u5355\u4f8b, \u9ed8\u8ba4\uff1atrue
URLstatic readonly string\u52a0\u8f7d\u9875\u9762\u5730\u5740
OPTIONSstatic readonly PorosBrowserWindowOptions\u7a97\u53e3\u914d\u7f6e\u9879
registerWindowEvent() => void\u6ce8\u518c\u7a97\u53e3\u4e8b\u4ef6

PorosWindowManager

\n

\u7ba1\u7406 PorosBrowserWindow \u7a97\u53e3

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
\u53c2\u6570\u7c7b\u578b\u8bf4\u660e
create(constructor: Type<PorosBrowserWindow>, ...properties: ConstructorParameters<typeof constructor>) => PorosBrowserWindow\u521b\u5efa\u7a97\u53e3\u5b9e\u4f8b
destroy(id: number) => void | (constructor: Type\\<PorosBrowserWindow\\>) => void\u9500\u6bc1\u7a97\u53e3\u5b9e\u4f8b
destroyAll(excludes: Type<PorosBrowserWindow>[] = [])\u9500\u6bc1\u6240\u6709\u7a97\u53e3\u5b9e\u4f8b\uff0cexcludes:\u6392\u9664\u9879
getAll() => PorosBrowserWindow[]\u83b7\u53d6\u6240\u6709\u7a97\u53e3
get(constructor: PorosBrowserWindow) => PorosBrowserWindow\\|Record<number, PorosBrowserWindow>\\|undefined | (id: number) => PorosBrowserWindow\\|undefined\u83b7\u53d6\u7a97\u53e3

Logger

\n

\u914d\u7f6e\u9879 config/config.ts

\n
export default defineConfig({\n logger : {\n transports: {\n file: {\n level: 'warn',\n format: '[{y}-{m}-{d} {h}:{i}:{s}.{ms}] [{level}]{scope} {text}',\n maxSize: 1048576,\n },\n console: {\n level: 'debug',\n },\n },\n }\n});\n
\n

\u5177\u4f53\u914d\u7f6e\u548c\u7528\u6cd5\u53ef\u53c2\u7167electron-log\u3002

\n
\n

\u6ce8\u610f\uff1a\u63a7\u5236\u53f0\u7684\u65e5\u5fd7\u8f93\u51fa\u4e3a\u4e86\u4f5c\u51fa\u7c7b\u578b\u533a\u5206\u52a0\u4e86\u7279\u6709\u7684\u6807\u5fd7\uff0c\u6240\u6709 transports.console.format \u7684\u8bbe\u7f6e\u4e0d\u4f1a\u751f\u6548,

\n
\n

LocalStore

\n

\u4fdd\u5b58\u7528\u6237\u8bbe\u7f6e\u3001\u5e94\u7528\u7a0b\u5e8f\u72b6\u6001\u3001\u7f13\u5b58\u7b49

\n

\u914d\u7f6e\u9879 config/config.ts

\n
export default defineConfig({\n localStore: {\n schema: {\n unicorn: {\n type: 'string',\n default: '\ud83e\udd84',\n },\n },\n },\n});\n
\n

\u5177\u4f53\u914d\u7f6e\u548c\u7528\u6cd5\u53ef\u53c2\u7167electron-store\u3002

\n

LocalShortcut

\n

\u5c06\u952e\u76d8\u5feb\u6377\u952e\u672c\u5730\u6dfb\u52a0\u5230 BrowserWindow \u5b9e\u4f8b\uff0c\u800c\u4e0d\u4f7f\u7528\u83dc\u5355

\n

PorosBrowserWindow \u4e2d\u5185\u7f6e\u4e86\u6253\u5f00 DevTools \u5feb\u6377\u952e Cmd+Option+I \u6216 F12

\n

\u5177\u4f53\u7528\u6cd5\u53ef\u53c2\u7167electron-localshortcut\u3002

\n

\u63d2\u4ef6

\n
\n

\u60a8\u4e5f\u53ef\u4ee5\u76f4\u63a5\u4f7f\u7528 Umi \u63d2\u4ef6\u3002\u5982\u679c\u60a8\u9047\u5230\u4efb\u4f55\u95ee\u9898\uff0c\u8bf7\u8054\u7cfb\u6211\u3002

\n
\n

locale

\n

\u4e0e umi locale \u63d2\u4ef6\u529f\u80fd\u57fa\u672c\u76f8\u540c\uff0c\u5f00\u542f\u65b9\u6cd5\u4e00\u81f4\uff0c\u4e3b\u8fdb\u7a0b\u4e0e\u6e32\u67d3\u8fdb\u7a0b\u4e2d\u4f7f\u7528\u65b9\u6cd5\u76f8\u540c\u3002

\n
import { localeInfo, getIntl, setIntl, getLocale, setLocale, getAllLocales, i18n } from 'poros';\n\ni18n('button.ok');\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
\u53c2\u6570\u7c7b\u578b\u8bf4\u660e
localeInfo{[key: string]: {messages:{[key: string]},locale:string}}\u8bed\u8a00\u4fe1\u606f
getIntl(lang?: string, changeIntl?: boolean) => IntlShape\u65e5\u83b7\u53d6\u5f53\u524d\u7684 intl \u5bf9\u8c61\u5fd7\u6a21\u5757
setIntl(lang: string) => void\u5207\u6362\u5168\u5c40\u7684 intl \u7684\u8bbe\u7f6e
getLocale() => string\u83b7\u53d6\u5f53\u524d\u9009\u62e9\u7684\u8bed\u8a00
setLocale(lang: string) => void\u8bbe\u7f6e\u8bed\u8a00
getAllLocalesstring[]\u83b7\u53d6\u591a\u8bed\u8a00\u5217\u8868
i18n(id:string, values?: Record<string, any>) => stringformatMessage \u8bed\u6cd5\u7cd6

ipc

\n

\u7b80\u5316\u4e3b\u8fdb\u7a0b\u4e0e\u6e32\u67d3\u8fdb\u7a0b\u4e4b\u95f4\u7684\u901a\u4fe1

\n

\u4e3b\u8fdb\u7a0b API

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
\u53c2\u6570\u7c7b\u578b\u8bf4\u660e
IpcHandle-ipc \u65b9\u6cd5\u6ce8\u89e3\uff0cPorosBrowserWindow\u5185\u4f7f\u7528
rendererInvoker{[method: string]: (...args:any[], opts?: { broadcast?: boolean, window?: PorosBrowserWindow})}\u6e32\u67d3\u8fdb\u7a0b\u65b9\u6cd5\u8c03\u7528\u5668

rendererInvoker \u4e2d broadcast \u4e3a true \u65f6\uff0c\u4f1a\u7ed9\u6240\u6709\u7a97\u53e3\u5e7f\u64ad\u4e8b\u4ef6(\u5e7f\u64ad\u4e8b\u4ef6\u65e0\u8fd4\u56de\u503c)\uff0c\u6240\u6709\u76d1\u542c\u4e86\u4e8b\u4ef6\u7684\u7a97\u53e3\u90fd\u4f1a\u6536\u5230\u6d88\u606f\uff0c\u53cd\u4e4b\u53ea\u6709\u76f8\u5e94\u7684\u7a97\u53e3\u4e0b\u9875\u9762\u4f1a\u6536\u5230\u6d88\u606f\u3002PorosBrowserWindow \u7c7b\u4e2d\u8c03\u7528\uff0cwindow \u9ed8\u8ba4\u503c\u4e3a\u5f53\u524d\u7a97\u53e3\uff0c\u975ePorosBrowserWindow \u7c7b\u4e2d\u5fc5\u9700\u6307\u5b9a window \u503c\u3002

\n

\u6e32\u67d3\u8fdb\u7a0b API

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
\u53c2\u6570\u7c7b\u578b\u8bf4\u660e
useIpc(channel: string ,callback?:(...args:any[])=>any)=>any[]ipc \u65b9\u6cd5\u6ce8\u89e3\uff0cPorosBrowserWindow\u5185\u4f7f\u7528
mainInvoker{[windowName: string]: {[method: string]: (...args:any)=>any}, open: ()=>void}\u4e3b\u8fdb\u7a0b\u65b9\u6cd5\u8c03\u7528\u5668

\u6e32\u67d3\u8fdb\u7a0b\u8c03\u7528\u4e3b\u8fdb\u7a0b

\n
// 1 \u3001\u4f7f\u7528 IpcHandle \u6ce8\u89e3\u8981\u8c03\u7528\u7684\u65b9\u6cd5\nimport { IpcHandle } from 'poros';\nclass MainWindow extends PorosBrowserWindow {\n // ... \u7701\u7565\u57fa\u672c\u5c5e\u6027\n\n @IpcHandle\n foo(name: string) {\n return 'Hello renderer'; // \u8fd4\u56de\u7ed9\u6e32\u67d3\u8fdb\u7a0b\n }\n}\n\nexport default MainWindow;\n\n// 2 \u3001\u6e32\u67d3\u8fdb\u7a0b\u4e2d\u8c03\u7528\nimport { mainInvoker } from 'poros';\nconst ret = mainInvoker.MainWindow.foo('demo');\n
\n

\u4e3b\u8fdb\u7a0b\u8c03\u7528\u6e32\u67d3\u8fdb\u7a0b

\n

1 \u3001\u5b9a\u4e49\u4e8b\u4ef6\u7c7b\u578b(/src/renderer/ipc.ts)

\n
export default interface IpcChannelToHandlerMap {\n 'network-monitor': (received: number, transferred: number) => string;\n}\n
\n

2 \u3001react \u7ec4\u4ef6\u4e2d\u76d1\u542c

\n
import { mainInvoker } from 'poros';\n\nconst Demo = () => {\n useIpc('network-monitor', (received, transferred) => {\n return ''; // \u8fd4\u56de\u503c\u7ed9\u4e3b\u8fdb\u7a0b\n });\n // \u6216\u8005\n const [received, transferred] = useIpc('network-monitor');\n\n return (\n <div>demo</div>\n );\n};\nexport default Demo;\n
\n

3 \u3001\u4e3b\u8fdb\u7a0b\u4e2d\u8c03\u7528

\n
// PorosBrowserWindow \u7c7b\u4e2d\u8c03\u7528\nconst ret = this.rendererInvoker.networkMonitor(received: number, transferred: number, opts?: { broadcast?: boolean, window?: PorosBrowserWindow}); \n\n// \u975e PorosBrowserWindow \u7c7b\u4e2d\u8c03\u7528\nimport { rendererInvoker } from 'poros';\nrendererInvoker.networkMonitor(received: number, transferred: number, opts: { broadcast?: boolean, window: PorosBrowserWindow });\n
\n

\u9884\u8bbe\u63d2\u4ef6

\n\n

DEMO \u9884\u89c8\u56fe

\n\"demo\"\n

\u6765\u4e2a Star\ud83d\ude4f\ud83d\ude4f\ud83d\ude4f

\n

https://github.com/porosjs/poros

\n" }, { "author": { "url": "member/changdy", "name": "changdy", "avatar": "https://cdn.v2ex.com/avatar/97c2/a0ff/166121_large.png?m=1751710855" }, "url": "t/1034784", "date_modified": "2024-04-22T23:02:11+00:00", "content_html": "

\u60f3\u628a\u81ea\u5df1 5 \u5e74\u524d\u505a\u7684 electron \u5c0f\u5de5\u5177\u8fc1\u79fb\u5230 flutter \u4e0a\u9762,\n\u96f6\u96f6\u6563\u6563\u770b\u4e86\u4e00\u4e24\u5929\u7684 flutter , \u4eca\u5929\u5d29\u6e83\u4e86.\n\u6587\u6863\u4e0d\u5982 electron \u6210\u719f , \u60f3\u7528\u5feb\u6377\u952e\u5b9e\u73b0\u7a97\u53e3\u5524\u9192\u5230\u524d\u53f0.\u770b\u4e86\u4e0b chatgpt \u7684\u56de\u7b54,\u5b9e\u73b0\u8d77\u6765\u975e\u5e38\u9ebb\u70e6.\n\u4e0d\u540c\u7684\u684c\u9762\u7aef\u8981\u5199\u4e0d\u540c\u7684\u539f\u751f\u4ee3\u7801\u4ea4\u4e92 , \u8499\u5708\u4e2d.

\n

electron \u4e07\u5c81.\u8fd9\u4e1c\u897f\u771f\u7684\u8282\u7701\u4e86\u51e0\u500d\u7684\u7814\u53d1\u6210\u672c.

\n

ps flutter \u7684 codelabs \u505a\u7684\u662f\u771f\u7684\u597d..\u7a0d\u5fae\u6709\u70b9\u8ba1\u7b97\u673a\u57fa\u7840\u90fd\u80fd\u8ddf\u7740\u4e0a\u624b.;..

\n", "date_published": "2024-04-22T16:47:48+00:00", "title": "\u518d\u4e5f\u4e0d\u8bf4 electron \u662f\u4e2a\u90aa\u6076\u7684\u6280\u672f\u4e86", "id": "t/1034784" }, { "author": { "url": "member/archergu", "name": "archergu", "avatar": "https://cdn.v2ex.com/avatar/0647/4d04/673401_large.png?m=1706252221" }, "url": "t/1030624", "date_modified": "2024-04-08T07:39:36+00:00", "content_html": "

\u601d\u8def\uff0c\u5728 electron \u7684\u4e3b\u8fdb\u7a0b\u4e2d\u96c6\u6210\u4e00\u4e2a nest.js \u540e\u7aef\u6846\u67b6\uff0c\u8ba9\u4e3b\u8fdb\u7a0b\u50cf\u5199\u540e\u7aef\u90a3\u6837\uff0c\u501f\u52a9\u4e8e nest.js \u826f\u597d\u7684\u4ee3\u7801\u6a21\u5757\u89c4\u8303\u548c\u6210\u719f\u7684\u751f\u6001\uff0c\u5e2e\u52a9\u4f60\u7684 electron \u53ef\u4ee5\u96c6\u6210\u66f4\u591a\u6709\u610f\u601d\u7684\u529f\u80fd\u3002\u5728\u672a\u6765\u9700\u8981\u8fdb\u884c client \u5230 b/s \u6539\u9020\u65f6\u8fd8\u80fd\u5feb\u901f\u62bd\u79bb\u4e00\u4e2a node \u540e\u7aef\u51fa\u6765\uff0c\u5e2e\u52a9\u4f60\u8282\u7701\u66f4\u591a\u7684\u6478\u9c7c\u65f6\u95f4\u3002

\n

\u641e\u4e86\u4e00\u4e9b\u5c0f\u6a21\u677f\u4f9b\u5927\u5bb6\u501f\u9274\u53c2\u8003\uff0c\u5982\u679c\u80fd\u5e2e\u52a9\u5230\u4f60\uff0c\u53ef\u4ee5\u7ed9\u4e00\u4e2a star \u6765\u6ee1\u8db3\u4e0b\u6211\u7684\u5c0f\u5c0f\u865a\u8363\u5fc3~

\n

\u5e38\u89c4\u6a21\u677f\uff1a

\n

vue+nestjs:\u00a0https://github.com/ArcherGu/fast-vite-nestjs-electron

\n

vue+\u4e2a\u4eba\u4f9d\u8d56\u6ce8\u5165\u5c0f\u6846\u67b6\uff1a\u00a0https://github.com/ArcherGu/fast-vite-electron

\n

react+nestjs:\u00a0https://github.com/ArcherGu/vite-react-nestjs-electron

\n

\u8fd8\u6709\u4e00\u5957\u81ea\u5df1\u641e\u7684 monorepo \u6a21\u677f\uff1a

\n

https://github.com/Doubleshotjs/template-react-nest

\n

https://github.com/Doubleshotjs/template-vue-nest

\n", "date_published": "2024-04-08T07:38:53+00:00", "title": "Electron+Nest.js \u6253\u5de5\u4eba\u7684\u5077\u61d2\u67b6\u6784", "id": "t/1030624" }, { "author": { "url": "member/MuscleOf2016", "name": "MuscleOf2016", "avatar": "https://cdn.v2ex.com/avatar/b78d/58b9/182337_large.png?m=1715430621" }, "url": "t/1028001", "title": "Electron \u5982\u4f55\u5b9e\u73b0\u7c7b\u4f3c\u5fae\u4fe1\u901a\u8fc7\u53e6\u5916\u7684 exe \u5e94\u7528\u6253\u5f00\u5c0f\u7a0b\u5e8f\uff1f", "id": "t/1028001", "date_published": "2024-03-29T01:59:32+00:00", "content_html": "

\u5982\u679c Electron \u6240\u6709\u7684\u5e94\u7528\uff0c\u5185\u7f6e\u6d4f\u89c8\u5668\u90fd\u901a\u8fc7\u521b\u5efa\u65b0\u7a97\u53e3\u53bb\u5b9e\u73b0\uff0c\u86ee\u5403\u5185\u5b58\u7684\u3002\n\u5fae\u4fe1\u6253\u5f00\u5c0f\u7a0b\u5e8f/\u7f51\u9875\u94fe\u63a5\uff0c\u597d\u50cf\u662f\u901a\u8fc7\u53e6\u5916\u5355\u72ec\u7684 exe \u53bb\u542f\u52a8\u7684\uff1f\u6709\u76f8\u5173\u7684\u6587\u6863/\u5f00\u6e90\u9879\u76ee\u4e86\u89e3\u4e0b\u561b\uff1f

\n" }, { "author": { "url": "member/chaos93", "name": "chaos93", "avatar": "https://cdn.v2ex.com/avatar/c4b9/e5f6/210511_large.png?m=1597968590" }, "url": "t/1027992", "title": "\u8bf7\u95ee\u6709\u6ca1\u6709 Electron \u7684\u811a\u624b\u67b6\u5de5\u7a0b", "id": "t/1027992", "date_published": "2024-03-29T01:47:08+00:00", "content_html": "

\u6709\u6ca1\u6709\u76f8\u5173\u7c7b\u4f3c\u7684\u9879\u76ee\uff0c\u6709\u7b80\u5355\u4f8b\u5b50\u7684\uff0c\u53ef\u4ee5\u4e8c\u6b21\u5f00\u53d1\uff0c\u89c4\u8303\u4e5f\u6bd4\u8f83\u597d\u7684

\n" }, { "author": { "url": "member/ill", "name": "ill", "avatar": "https://cdn.v2ex.com/gravatar/aed559c50a11a47485226a88217cc0c7?s=73&d=retro" }, "url": "t/1027021", "date_modified": "2024-03-26T02:13:04+00:00", "content_html": "

\u4f7f\u7528\u8fc7 nextjs \u5f00\u53d1\u4e00\u4e9b\u9875\u9762\uff0c\u611f\u89c9\u4f53\u9a8c\u4e0d\u9519

\n

\u9700\u6c42\uff1a

\n
\u672c\u5730\u5e94\u7528\uff0c\u7ed9\u5c0f\u767d\u4f7f\u7528\uff0c\u6bcf\u6b21\u90fd\u9700\u8981 npm run start \u542f\u52a8\u5f88\u4e0d\u4f18\u96c5\uff0c\u60f3\u6253\u5305\u6210\u4e00\u4e2a\u53ef\u6267\u884c\u7a0b\u5e8f\n\n\u5e94\u7528\u9700\u8981\u4f7f\u7528\u4e00\u4e9b\u4e32\u53e3\u3001ws \u3001\u52a0\u5bc6\u7684 API \uff0c\u6240\u4ee5\u4e00\u4e9b\u670d\u52a1\u7eaf\u524d\u7aef\u5b9e\u73b0\u4e0d\u4e86\uff0c\u9700\u8981\u8fd0\u884c\u5728 Nodejs \u91cc\n\n\u7edf\u4e00\u524d\u7aef\u6d4f\u89c8\u5668\u5185\u6838\u7248\u672c\n\n\u4e0d\u592a\u60f3\u4f7f\u7528 Nextron \u6846\u67b6\n
\n

\u4e86\u89e3\u5230 Electron=Nodejs+Chromium \uff0c\u611f\u89c9\u5f88\u5bf9\u53e3\uff0c\u4f46\u770b Electron \u5b98\u7f51\u6559\u7a0b\uff0c\u6bcf\u4e2a\u9875\u9762\u90fd\u9700\u8981 main.js \u3001preload.js \u3001index.html \u3001renderer.js \u56db\u4e2a\u6587\u4ef6\uff0c\u903b\u8f91\u4e5f\u5199\u5728\u91cc\u9762\uff0c\u8fd9\u4e2a\u5f00\u53d1\u4f53\u9a8c\u611f\u89c9\u548c Nextjs \u4e0d\u592a\u4e00\u6837\u3002

\n

\u6211\u60f3\u7684\u662f Nextjs \u8dd1\u5728 Nodejs \u91cc\u9762\uff0cChromium \u6e32\u67d3 url \u9875\u9762\uff0c\u8fd9\u6837\u5f00\u53d1\u4f53\u9a8c\u57fa\u672c\u4fdd\u6301 Nextjs \u4e00\u6837\u3002\u6253\u5305\u540e\u7528\u6237\u80fd\u4e00\u952e\u6253\u5f00\u3002

\n

\u95ee\u9898\uff1a

\n
1 \u662f\u6211\u628a\u5f00\u53d1\u6d41\u7a0b\u60f3\u7b80\u5355\u4e86\uff1f\u6b63\u5e38\u7684\u6d41\u7a0b\u662f\u4ec0\u4e48\u6837\uff1f\n\n2 \u8c37\u6b4c\u770b\u4e24\u4e09\u7bc7\u6587\u7ae0\u597d\u50cf\u662f\u8bf4 Nextjs \u7684 App Router \u5728 Electron \u4e2d\u6ca1\u6cd5\u4f7f\u7528\uff1f\n\n3 \u6211\u770b\u5b98\u7f51\u7684\u65b9\u5f0f\uff0c\u6bcf\u6b21\u90fd\u9700\u8981\u5728 html \u8bbe\u7f6e id \uff0c\u7136\u540e getElementById \uff0c\u8bbe\u7f6e\u4e8b\u4ef6\uff0c\u597d\u9ebb\u70e6\u5440\uff1f\n
\n", "date_published": "2024-03-26T02:05:00+00:00", "title": "\u8bf7\u6559 Nextjs \u4e0e Electron \u7684\u53ef\u884c\u6027", "id": "t/1027021" }, { "author": { "url": "member/SaltedFish12138", "name": "SaltedFish12138", "avatar": "https://cdn.v2ex.com/avatar/5183/7925/102279_large.png?m=1574731643" }, "url": "t/1026000", "title": "Windows \u4e0a Electron \u7c7b app \u5361\u6b7b\u95ee\u9898\uff08\u6bd4\u5982 vscode\u3001tabby\uff09", "id": "t/1026000", "date_published": "2024-03-22T02:44:16+00:00", "content_html": "

\u73b0\u8c61

\n
    \n
  1. Windows 11 \u4e0a
  2. \n
  3. vscode \u3001tabby \u7b49\uff08\u76ee\u524d\u770b\uff0c\u5171\u540c\u70b9\u90fd\u662f\u57fa\u4e8e Electron \u7684 app \uff09\uff0c
  4. \n
  5. \u5728\u4e00\u6bb5\u65f6\u95f4\uff08\u6709\u65f6\u662f\u4e00\u591c\uff0c\u6709\u65f6\u662f\u4e24\u4e09\u4e2a\u5c0f\u65f6\uff09\u65e0\u64cd\u4f5c\u540e\uff0c
  6. \n
  7. \u51fa\u73b0\u754c\u9762\u4e0a\u6309\u94ae\u3001\u7f16\u8f91\u6846\u3001\u83dc\u5355\u65e0\u6cd5\u70b9\u51fb\u4ea4\u4e92\u7684\u95ee\u9898
  8. \n
  9. \u4e0d\u662f Windows \u7a0b\u5e8f\u65e0\u54cd\u5e94\uff0c\u7a97\u53e3\u662f\u53ef\u4ee5\u62d6\u52a8\u3001\u7f29\u653e
  10. \n
  11. \u62d6\u52a8\u548c\u7f29\u653e\u7a97\u53e3\u540e\uff0c \u6709\u4e00\u5b9a\u51e0\u7387\u4f1a\u53ef\u4ee5\u4f7f\u7528
  12. \n
\n

\u8865\u5145

\n\n

\u5e0c\u671b\u5927\u5bb6\u7ed9\u51fa\u51fa\u4e3b\u610f\uff0c \u770b\u770b\u6709\u4ec0\u4e48\u6392\u67e5\u548c\u89e3\u51b3\u601d\u8def\u3002\n\u8c22\u8c22\u3002

\n" }, { "author": { "url": "member/threeti", "name": "threeti", "avatar": "https://cdn.v2ex.com/avatar/04f8/9743/347664_large.png?m=1729845591" }, "url": "t/1014546", "title": "electron \u548c Java swing \u5f00\u53d1\u51fa\u7684\u8f6f\u4ef6 \u54ea\u4e2a\u4f53\u9a8c\u597d", "id": "t/1014546", "date_published": "2024-02-06T01:04:49+00:00", "content_html": "\u5728 win\\linux\\mac \u5e73\u65f6\u4e0a, \u5f00\u53d1\u51fa\u7684\u8f6f\u4ef6 \u54ea\u4e2a\u4f53\u9a8c\u4f1a\u597d\u4e9b" }, { "author": { "url": "member/soclearn", "name": "soclearn", "avatar": "https://cdn.v2ex.com/gravatar/e74f5c447074cfb7901e0ec35cd3c5ec?s=73&d=retro" }, "url": "t/1013547", "title": "\u54ea\u4e00\u4e2a electron \u6253\u5305\u5de5\u5177\u662f\u628a\u591a\u5e73\u53f0\u7684 native modules \u4e0e\u4e1a\u52a1\u903b\u8f91 app \u5f7b\u5e95\u9694\u5f00\u7684\uff0c\uff0c\u8fd9\u6837\u4e09\u5e73\u53f0\uff0c\u53ea\u9700\u8981\u5b89\u88c5\u8be5\u5e73\u53f0\u7684 electron\uff0c\u7136\u540e\u53d1\u5e03\u4e00\u4e2a\u7edf\u4e00\u7684 app.asar \u6216 app source \u5c31\u53ef\u4ee5", "id": "t/1013547", "date_published": "2024-02-01T17:03:17+00:00", "content_html": "

\u6211\u7684\u610f\u601d\u662f\uff1a\u7c7b\u4f3c npm start dev \u4e0d\u6253\u5305\uff0c\u6e90\u7801\u6a21\u5f0f\u8fd0\u884c app \u7684\u6548\u679c\n\u4f46\u53c8\u7ed3\u5408\u6709\u6253\u5305\u8fc7\u540e\u7684\u542f\u52a8\u901f\u5ea6

\n

\u8fd9\u6837\u7684\u4e00\u4e2a\u6253\u5305\u5de5\u5177

\n" }, { "author": { "url": "member/wxf666", "name": "wxf666", "avatar": "https://cdn.v2ex.com/gravatar/a983d2278ab678b79cd8d7f54d2e86a4?s=73&d=retro" }, "url": "t/1012408", "title": "\u5185\u5d4c\u6d4f\u89c8\u5668\uff08CEF\uff09\u6709\u65f6\u4f1a\u5d29\u6e83\u767d\u5c4f\u3002\u5982\u4f55\u5728\u5d29\u6e83\u65f6\uff0c\u4fdd\u5b58\u4e00\u4efd JS \u548c DOM \u5806\u5185\u5b58\u5feb\u7167\u5462\uff1f", "id": "t/1012408", "date_published": "2024-01-29T05:20:43+00:00", "content_html": "

\u5982\u9898\u3002\u8282\u70b9\u627e\u4e0d\u5230 CEF \uff0c\u53ea\u80fd\u627e\u4e2a\u7c7b\u4f3c\u7684 Electron \u4e86\u3002

\n

\u6073\u8bf7\u5404\u4f4d\u5927\u4f6c\u63d0\u4f9b\u4e9b\u601d\u8def\uff01

\n" }, { "author": { "url": "member/muwoo", "name": "muwoo", "avatar": "https://cdn.v2ex.com/avatar/cb2d/3bd6/528109_large.png?m=1695193370" }, "url": "t/1007724", "date_modified": "2024-01-13T11:02:33+00:00", "content_html": "

\u6216\u8bb8\u662f\u53f2\u4e0a\u6700\u5168\u7684 Electron \u5b9e\u6218\u6559\u7a0b\uff0c \u4ee5\u4ece\u96f6\u5f00\u59cb\u5f00\u53d1\u4e00\u4e2a Rubick \u6548\u7387\u5de5\u5177\u4e3a\u5b9e\u6218\u5185\u5bb9\uff0c\u4ecb\u7ecd electron \u7684\u57fa\u7840\u77e5\u8bc6\u3001\u539f\u751f\u6269\u5c55\u5f00\u53d1\u3001 \u6253\u5305\u3001 \u6027\u80fd\u4f18\u5316\u3001 \u81ea\u52a8\u5316\u5316\u6d4b\u8bd5\u3001\u5b89\u5168\u6027\u7b49\u7b49\u65b9\u9762\u3002

\n

\u300a Electron \u5e94\u7528\u5f00\u53d1\u5b9e\u8df5\u6307\u5357\u300b

\n

V2EX \u4e0a\u7684\u5c0f\u4f19\u4f34\u53e6\u5916\u53ef\u4eab 5 \u6298\u6700\u4f4e\u4f18\u60e0\uff0c\u4f18\u60e0\u7801\uff1aefJDNnAR

\n

\"image.png\"

\n

\u672c\u5c0f\u518c\u4e3b\u8981\u5206\u6210\u4e09\u5927\u6a21\u5757\u4ecb\u7ecd Electron \u5f00\u53d1\u4e2d\u9700\u8981\u5b66\u4e60\u3001\u5904\u7406\u3001\u89e3\u51b3\u7684\u95ee\u9898\u3002

\n

\u6a21\u5757\u4e00\uff1aElectron \u57fa\u7840\u7bc7\u3002\u4ee5\u6700\u901a\u4fd7\u6613\u901a\u7684\u65b9\u5f0f\u4ecb\u7ecd Electron \u7684\u4e00\u4e9b\u6838\u5fc3\u6982\u5ff5\u548c Electron \u7684\u539f\u751f\u80fd\u529b\u3002\u5e0c\u671b\u901a\u8fc7\u8be5\u6a21\u5757\u7684\u5b66\u4e60\u8ba9\u4f60\u5bf9 Electron \u7684\u6574\u4f53\u9aa8\u67b6\u6709\u4e00\u4e2a\u6e05\u6670\u7684\u8ba4\u77e5\uff0c\u53ef\u4ee5\u5f00\u59cb\u5165\u5751 Electron \u3002

\n

\u6a21\u5757\u4e8c\uff1aElectron \u5b9e\u6218\u7bc7\u3002\u901a\u8fc7\u57fa\u7840\u7bc7\u7684\u5b66\u4e60\u540e\uff0c\u76f8\u4fe1\u4f60\u4e00\u5b9a\u5e0c\u671b\u52a8\u624b\u5b9e\u64cd\uff0c\u672c\u6a21\u5757\u5c06\u4f1a\u4ece\u96f6\u5f00\u59cb\u4ee5 Rubick \u4e3a\u539f\u578b\u6765\u63ed\u79d8\u684c\u9762\u7aef\u5de5\u5177\u5f00\u53d1\u7684\u6838\u5fc3\u79d8\u5bc6\u3002\u672c\u6a21\u5757\u6240\u6709\u6e90\u7801\u90fd\u6e90\u81ea Rubick \uff0c\u4f60\u53ef\u4ee5\u8fb9\u8c03\u8bd5\u8fb9\u770b\uff0c\u8fdb\u4e00\u6b65\u52a0\u5f3a\u7406\u89e3\u3002

\n

\u6a21\u5757\u4e09\uff1aElectron \u901a\u7528\u7bc7\u3002\u672c\u6a21\u5757\u91cd\u70b9\u4ecb\u7ecd\u5f00\u53d1 Electron \u4f1a\u9047\u5230\u7684\u4e00\u4e9b\u901a\u7528\u95ee\u9898\uff0c\u5305\u62ec\uff1a\u5e94\u7528\u7684\u6253\u5305\u3001\u66f4\u65b0\u3001\u81ea\u52a8\u5316\u6d4b\u8bd5\u3001\u6027\u80fd\u4f18\u5316\u3001\u5185\u5b58\u4f18\u5316\u7b49\u7b49\uff0c\u5e76\u7ed9\u51fa\u4e00\u4e9b\u5e38\u7528\u7684\u89e3\u51b3\u65b9\u6848\u3002

\n", "date_published": "2024-01-11T02:32:09+00:00", "title": "\u4eca\u5e74\u5199\u7684\u7b2c\u4e00\u672c Electron \u8bfe\u7a0b\u4e0a\u7ebf\u5566\uff0c\u6b22\u8fce\u6765\u6367\u573a\ud83c\udf89", "id": "t/1007724" }, { "author": { "url": "member/qianzhu", "name": "qianzhu", "avatar": "https://cdn.v2ex.com/avatar/5b72/7050/544747_large.png?m=1751256009" }, "url": "t/1004392", "title": "electron svg \u4f1a\u4fdd\u7559 \u2018\u75d5\u8ff9\u2019", "id": "t/1004392", "date_published": "2023-12-29T05:18:11+00:00", "content_html": "

\u6211\u5728\u4e3b\u7a97\u53e3\u8bbe\u7f6e\u4e86 win.setVisibleOnAllWorkspaces(true, { visibleOnFullScreen: false })\uff0c\u7136\u540e\u5728\u9875\u9762\u4e2d\u4f7f\u7528 svg \u521b\u5efa\u4e86\u4e00\u4e2a\u53ef\u4ee5\u5199\u5b57\u7684\u767d\u677f\u3002

\n

\u6211\u53d1\u73b0\uff0c\u6211\u5728 A \u7a97\u53e3\u753b\u4e86\u4e00\u6761\u7ebf\uff0c\u5728 B \u7a97\u53e3\u6e05\u9664\u6389\u8fd9\u6761\u7ebf\uff0cB \u7a97\u53e3\u4f1a\u7559\u4e0b\u90a3\u6761\u7ebf\u7684\u75d5\u8ff9\u3002\u53cd\u8fc7\u6765\u5728 B \u4e2d\u753b\uff0cA \u4e2d\u6e05\u9664\u4e5f\u662f\u4e00\u6837\u4f1a\u7559\u6709\u75d5\u8ff9\u3002

\n

electron: 25.6.0\nMacOS x86 Sonoma 14.2.1

\n

\u5173\u952e\u4ee3\u7801\uff1a https://gist.github.com/syt-honey/3823d059e16dbe8dfc150b18169e822a

\n

\u75d5\u8ff9\uff1a https://user-images.githubusercontent.com/36325249/293312786-fb09afe3-0ac4-45f4-aa9e-4318251c4444.png

\n" }, { "author": { "url": "member/SnowHall", "name": "SnowHall", "avatar": "https://cdn.v2ex.com/avatar/2c6b/258e/666006_large.png?m=1739366664" }, "url": "t/998983", "title": "\u540e\u7aef\u5b66\u4e60 Electron,\u6709\u6ca1\u6709\u597d\u7684\u5f00\u6e90\u9879\u76ee\u7528\u6765\u5b66\u4e60\u4e00\u4e0b\uff1f", "id": "t/998983", "date_published": "2023-12-09T11:07:03+00:00", "content_html": "

\u80cc\u666f\uff1a\u672c\u4eba\u662f\u540e\u7aef\u5f00\u53d1\uff0c\u60f3\u5b66\u4e60\u4e00\u4e0b Electron \u5f00\u53d1\u4e00\u4e9b\u5de5\u5177\u7ed9\u81ea\u5df1\u548c\u8eab\u8fb9\u7684\u670b\u53cb\u7528\u3002\u8ddf\u7740\u5b98\u7f51\u5b66\u7684\u8bdd\u611f\u89c9\u6bd4\u8f83\u6162\uff0c\u6211\u4e60\u60ef\u5b66\u4e60\u4e00\u4e9b\u57fa\u672c\u7684\u77e5\u8bc6\u540e\u4ece\u9879\u76ee\u5165\u624b\uff0c\u8fd9\u6837\u638c\u63e1\u8d77\u6765\u6bd4\u8f83\u5feb\uff0c\u4f46\u662f\u6211\u5728 Github \u548c Gitee \u4e0a\u6ca1\u627e\u5230\u5408\u9002\u7684\u9879\u76ee\uff0c\u6240\u4ee5\u95ee\u95ee\u795e\u901a\u5e7f\u5927\u7684 V \u53cb\u6709\u6ca1\u6709\u597d\u7684\u9879\u76ee\u63a8\u8350\u3002

\n" }, { "author": { "url": "member/rekulas", "name": "rekulas", "avatar": "https://cdn.v2ex.com/avatar/ff00/e7ff/173283_large.png?m=1760022610" }, "url": "t/992263", "date_modified": "2023-11-20T00:16:21+00:00", "content_html": "

\u76f4\u5230 2023 \u7528 chrome \u5076\u5c14\u5c31\u4f1a\u9047\u5230\u952e\u9f20\u5931\u53bb\u54cd\u5e94(\u4efb\u52a1\u7ba1\u7406\u5668\u663e\u793a\u72b6\u6001\u6b63\u5e38)\u7684\u95ee\u9898,\u53ea\u6709\u91cd\u542f\u89e3\u51b3,\u4e0d\u8fc7\u51fa\u73b0\u6982\u7387\u4e0d\u662f\u5f88\u5927\u4e5f\u90fd\u4e60\u60ef\u4e86.

\n

\u800c\u57fa\u4e8e\u540c\u6b3e\u5185\u6838\u7684 electron \u7cfb\u8f6f\u4ef6\u4e5f\u4f1a\u9047\u5230\u8fd9\u79cd\u5931\u53bb\u54cd\u5e94\u7684\u95ee\u9898,\u6982\u7387\u8fdc\u9ad8\u4e8e\u6d4f\u89c8\u5668,\u751a\u81f3\u6709\u4e9b\u8f6f\u4ef6\u6bcf\u5929\u90fd\u4f1a\u51fa\u73b0,\u8ba9\u6211\u4e0d\u5f97\u4e0d\u91cd\u542f\u8f6f\u4ef6\u624d\u80fd\u6062\u590d,\u5df2\u7ecf\u5f71\u54cd\u5230\u4e86\u4e2a\u4eba\u6b63\u5e38\u529e\u516c\u4e86,\u5176\u5b9e\u6211\u5bf9 electron \u672c\u8eab\u5e76\u4e0d\u53cd\u611f,\u81ea\u5df1\u4e5f\u505a\u8fc7 electron \u8f6f\u4ef6,\u4f46\u662f\u6700\u8fd1 2 \u5e74\u603b\u611f\u89c9\u5e95\u5c42\u53cd\u800c\u6ca1\u4ee5\u524d\u7a33\u5b9a\u4e86,\u52a8\u4e0d\u52a8\u5c31\u5361\u6b7b,\u4e0d\u662f\u4e00\u4e24\u53f0\u7535\u8111,\u591a\u53f0\u4e0d\u540c\u7535\u8111\u591a\u4e2a win10 \u7248\u672c\u90fd\u51fa\u73b0\u8fc7,\u5305\u62ec\u6211\u73b0\u5728\u7684\u540c\u4e8b,\u4e5f\u9891\u7e41\u9047\u5230,\u6240\u4ee5\u4e0d\u5927\u53ef\u80fd\u662f\u4e2a\u4eba\u8fd0\u6c14\u95ee\u9898.(\u6211\u672c\u4eba\u559c\u6b22\u4f11\u7720\u7535\u8111,\u53ef\u80fd\u8ddf\u8fd9\u4e2a\u4e5f\u6709\u4e00\u5b9a\u5173\u7cfb,\u4e0d\u8fc7\u975e e \u7cfb\u5217\u7684\u8f6f\u4ef6\u4e0d\u4f1a\u6709\u8fd9\u95ee\u9898)

\n

\u786c\u4ef6\u914d\u7f6e\u5e94\u8be5\u662f\u591f\u7528\u7684 amd intel \u90fd\u51fa\u73b0\u8fc7 r5 2600x/12400f + 64g \u5185\u5b58

\n

\u76ee\u524d\u4e3a\u6b62\u9047\u5230\u8fc7\u7684\u5bb9\u6613\u5361\u6b7b\u7684 electron \u8f6f\u4ef6\u4e3b\u8981\u8fd9\u51e0\u4e2a

\n

\u53e3\u7891\u7206\u8868\u7684 vscode(\u524d\u540c\u4e8b\u5c31\u662f\u56e0\u4e3a\u5361\u6b7b\u95ee\u9898\u653e\u5f03\u4e86\u8be5 ide)\njoplin\n\u6dd8\u5b9d\u76f4\u64ad\nbitwarden\n\u9489\u9489(\u4e0d\u592a\u786e\u5b9a\u662f\u4e0d\u662f e,\u6709\u4e9b\u4eba\u8bf4\u7684 nwjs,\u4f46\u5f88\u5bb9\u6613\u5361\u6b7b)

\n

\u800c\u4e14\u76ee\u524d\u53d1\u73b0\u4e2a\u89c4\u5f8b,\u6709\u5b57\u7b26\u8f93\u5165\u754c\u9762\u7684\u8f6f\u4ef6(\u4f8b\u5982 IDE)\u7279\u522b\u5bb9\u6613\u51fa\u95ee\u9898

\n

\u73b0\u5728\u4e00\u770b\u5230 electron \u7cfb\u8f6f\u4ef6\u5c31\u5934\u75bc,\u80fd\u4e0d\u5b89\u88c5\u90fd\u5c3d\u91cf\u5c11\u5b89\u88c5,\u4f46\u662f\u6709\u4e9b\u8f6f\u4ef6\u53ea\u6709 electron \u7248\u672c\u4e0d\u5f97\u4e0d\u7528,\u53ea\u80fd\u5e0c\u671b\u4e8e\u4ee5\u540e\u80fd\u6709\u66f4\u597d\u7684\u66ff\u4ee3\u54c1

\n", "date_published": "2023-11-15T14:38:13+00:00", "title": "\u5bf9 electron \u7cfb\u8f6f\u4ef6\u7684\u65e0\u54cd\u5e94\u95ee\u9898\u5b9e\u5728\u662f\u70e6\u4e0d\u80dc\u70e6,\u4e0d\u77e5\u9053\u4f55\u65f6\u624d\u80fd\u89e3\u8131", "id": "t/992263" }, { "author": { "url": "member/qianzhu", "name": "qianzhu", "avatar": "https://cdn.v2ex.com/avatar/5b72/7050/544747_large.png?m=1751256009" }, "url": "t/989869", "title": "electron \u601d\u8def\u6c42\u52a9", "id": "t/989869", "date_published": "2023-11-08T06:35:53+00:00", "content_html": "

\u6211\u60f3\u8981\u5b9e\u73b0\u4e00\u4e2a\u684c\u9762\u7aef\u7684\u5f55\u5c4f\u5de5\u5177\u3002\u4e3b\u8981\u5b9e\u73b0\u7684\u529f\u80fd\u662f\u5c4f\u5e55\u5f55\u5236\u3001\u58f0\u97f3\u89c6\u9891\u5f55\u5236\u3002

\n

\u56e0\u4e3a\u662f\u524d\u7aef\u5f00\u53d1\uff0c\u6211\u9009\u62e9\u4e86 electron \u6765\u5f00\u53d1\u3002

\n

\u6211\u7684\u601d\u8def\u662f\u521b\u5efa\u4e24\u4e2a\u7a97\u53e3\uff0c\u4e00\u4e2a\u662f\u5de5\u5177\u680f\u7528\u6765\u64cd\u4f5c\u5f55\u5236\uff0c\u4e00\u4e2a\u662f\u89c6\u9891\u663e\u793a\u7a97\u53e3\u3002\u4f46\u662f\u73b0\u5728\u9047\u5230\u4e86\u4e00\u4e2a\u95ee\u9898\uff0c\u5de5\u5177\u680f\u7684\u7a97\u53e3\u4e00\u4e9b\u6309\u94ae\u88ab\u70b9\u51fb\u65f6\u9700\u8981\u6709\u5f39\u7a97\u63d0\u793a\u3002\u53ef\u662f\u5de5\u5177\u680f\u672c\u8eab\u7684\u5bbd\u9ad8\u5df2\u7ecf\u786e\u5b9a\u4e86\uff0c\u6211\u60f3\u7740\u518d\u521b\u5efa\u4e00\u4e2a\u7a97\u53e3\u4e13\u95e8\u7528\u6765\u663e\u793a\u5f39\u7a97\u3002\u4f46\u662f\u8fd9\u6837\u4e00\u6765\uff0c\u540e\u9762\u7684\u9875\u9762\u4ea4\u4e92\u611f\u89c9\u90fd\u9700\u8981\u901a\u8fc7\u521b\u5efa\u7a97\u53e3\u6765\u5b9e\u73b0\u3002\u611f\u89c9\u529f\u80fd\u88ab\u6211\u5199\u590d\u6742\u4e86....

\n

\u6211\u4e4b\u524d\u60f3\u7684\u662f\u53ea\u7528\u4e00\u4e2a\u4e3b\u7a97\u53e3\uff0c\u4f46\u662f\u56e0\u4e3a\u5f55\u5236\u671f\u95f4\u662f\u53ef\u4ee5\u64cd\u4f5c\u684c\u9762\u3001\u4efb\u4f55\u5730\u65b9\u7684\uff0c\u8fd9\u79cd\u65b9\u6848\u4f3c\u4e4e\u5c31\u4e0d\u53ef\u884c\u3002

\n

\u5927\u5bb6\u5e2e\u6211\u770b\u770b\u6211\u8fd9\u6837\u7684\u601d\u8def\u5bf9\u5417\uff1f\u5982\u679c\u4e0d\u5bf9\uff0c\u8fd9\u79cd\u9700\u6c42\u5e94\u8be5\u600e\u4e48\u5b9e\u73b0\u5462\uff1f

\n" }, { "author": { "url": "member/adenlin", "name": "adenlin", "avatar": "https://cdn.v2ex.com/gravatar/faff934a975368d389cd65a3c0071167?s=73&d=retro" }, "url": "t/989127", "date_modified": "2023-11-06T07:19:17+00:00", "content_html": "\u6211\u8fd9\u8fb9\u9047\u5230\u7684\u573a\u666f\u662f electron \u9700\u8981\u8c03\u7528\u4e00\u4e9b\u5df2\u6709\u7684 native \u7ec4\u4ef6\uff0c\u76ee\u524d\u60f3\u4e86\u4e24\u4e2a\u65b9\u6848\uff1a
1.\u65b0\u5f00\u4e00\u4e2a\u670d\u52a1\uff0c\u628a native \u7ec4\u4ef6\u585e\u8fdb\u53bb\uff0c\u518d\u63d0\u4f9b\u4e00\u4e2a\u672c\u5730\u7684 http server \u6765\u4f9b electron \u8c03\u7528\uff1b
2.\u628a native \u7ec4\u4ef6\u505a\u6210 electron \u7684\u63d2\u4ef6\uff0c\u7136\u540e\u4f9b electron \u8c03\u7528\u3002

\u524d\u7aef\u5927\u4f6c\u4eec\u66f4\u559c\u6b22\u54ea\u4e00\u79cd\u65b9\u5f0f\uff1f\u6211\u662f\u5199\u5ba2\u6237\u7aef\u7684\uff0c\u76ee\u524d\u6bd4\u8f83\u504f\u597d\u7b2c\u4e00\u79cd\uff0c\u56e0\u4e3a electron \u7684\u63d2\u4ef6\u6846\u67b6\u9650\u5236\u6709\u70b9\u513f\u591a\u3002\u3002\u3002", "date_published": "2023-11-06T07:17:44+00:00", "title": "\u5411\u524d\u7aef\u5927\u4f6c\u4eec\u8bf7\u6559\u4e00\u4e0b\u5173\u4e8e electron \u8c03\u7528 native \u65b9\u9762\u7684\u95ee\u9898", "id": "t/989127" }, { "author": { "url": "member/Atma", "name": "Atma", "avatar": "https://cdn.v2ex.com/gravatar/b1c15e72c553eb28c13984ff07fdfa27?s=73&d=retro" }, "url": "t/988594", "title": "electron \u5931\u7126 \u7cfb\u7edf\u4f11\u7720\u540e\u5b9a\u65f6\u5668\u505c\u6b62\u95ee\u9898", "id": "t/988594", "date_published": "2023-11-04T08:22:06+00:00", "content_html": "

https://www.electronjs.org/docs/latest/api/power-monitor\nt/951996\n\u9875\u9762\u4e0a\u6709\u4e2a\u79d2\u7ea7\u8ba1\u65f6\u5668\uff0c\u9700\u8981\u4e0d\u65ad\u5237\u65b0\uff0c\u5982\u679c\u91c7\u7528\u7b2c\u4e8c\u4e2a\u5e16\u5b50\u4e2d\u4e3b\u8fdb\u7a0b ipc \u7684\u65b9\u6cd5\uff0c\u6bcf\u79d2\u8fc7\u4e8e\u9891\u7e41\uff0c\u5927\u5bb6\u6709\u5176\u4ed6\u597d\u7684\u529e\u6cd5\u4e0d\uff1f

\n" }, { "author": { "url": "member/xanta", "name": "xanta", "avatar": "https://cdn.v2ex.com/gravatar/4aa71900c2b029f95e1e551739525209?s=73&d=retro" }, "url": "t/988418", "title": "Lossless-Cut \u8fd9\u4e2a repo \u8c01\u80fd\u5e2e\u6211\u770b\u770b", "id": "t/988418", "date_published": "2023-11-03T12:09:58+00:00", "content_html": "

https://github.com/mifi/lossless-cut/blob/master/developer-notes.md

\n

\u88ab yarn \u641e\u7cca\u6d82\u4e86\uff0c\u5b89\u88c5\u5c31\u62a5\u9519

\n
\u27a4 YN0002: \u2502 lossless-cut@workspace:. doesn't provide react-is (p8fea6), requested by evergreen-ui\n\u27a4 YN0000: \u2502 Some peer dependencies are incorrectly met; run yarn explain peer-requirements <hash> for details, where <hash> is the six-letter p-prefixed code\n
\n

\u7136\u540e

\n
\u27a4 YN0000: lossless-cut@workspace:. doesn't provide react-is, breaking the following requirements:\n\n\u27a4 YN0000: evergreen-ui@npm:6.13.1 [3c853] \u2192 ^16.8.0 || ^17.0.0 || ^18.0.0 \u2718\n
\n

yarn add \u4e5f\u4e0d\u597d\u4f7f

\n

electron \u7684 build \u4e5f\u4f1a\u62a5\u9519,build log:

\n
# This file contains the result of Yarn building a package (electron@npm:27.0.0)\n# Script name: postinstall\n\nRequestError: unable to verify the first certificate\n at ClientRequest.<anonymous> (H:\\Work\\Personal\\Electron\\lossless-cut\\node_modules\\got\\dist\\source\\core\\index.js:970:111)\n at Object.onceWrapper (node:events:629:26)\n at ClientRequest.emit (node:events:526:35)\n at origin.emit (H:\\Work\\Personal\\Electron\\lossless-cut\\node_modules\\@szmarczak\\http-timer\\dist\\source\\index.js:43:20)\n at TLSSocket.socketErrorListener (node:_http_client:501:9)\n at TLSSocket.emit (node:events:514:28)\n at emitErrorNT (node:internal/streams/destroy:151:8)\n at emitErrorCloseNT (node:internal/streams/destroy:116:3)\n at process.processTicksAndRejections (node:internal/process/task_queues:82:21)\n at TLSSocket.onConnectSecure (node:_tls_wrap:1550:34)\n at TLSSocket.emit (node:events:514:28)\n at TLSSocket._finishInit (node:_tls_wrap:967:8)\n at ssl.onhandshakedone (node:_tls_wrap:743:12)\n
\n

\u7136\u540e\u67e5\u4e86\u53ef\u80fd\u662f SSL \u95ee\u9898\u561b\uff0cyarn config set strict-ssl false \u5565\u7684

\n
Usage Error: Couldn't find a configuration settings named \"strict-ssl\"\n
\n

\u770b\u4e86\u4e0b yarn \u7248\u672c\uff0c\u9879\u76ee\u7528\u7684\u662f 3.6.4

\n

\u6211\u5df2\u7ecf\u7cca\u6d82\u4e86\n99 \u5b69\u5b50

\n" }, { "author": { "url": "member/webberQian", "name": "webberQian", "avatar": "https://cdn.v2ex.com/avatar/be74/ac21/536239_large.png?m=1718878525" }, "url": "t/986100", "date_modified": "2023-11-06T00:02:54+00:00", "content_html": "\u6bcf\u6b21\u5b66\u4e86\u65b0\u7684\u6280\u672f\u6216\u8005\u6846\u67b6 \u4e0d\u7528 \u8fc7\u4e0d\u4e86\u591a\u4e45\u5c31\u4f1a\u5fd8\u8bb0 \u518d\u52a0\u4e0a\u5b66\u8d77\u6765\u67af\u71e5

\u6240\u6709\u60f3 \u8fb9\u7ec3\u624b\u8fb9\u5b66\u4e60 \u4f46\u662f\u627e\u4e0d\u5230\u597d\u7684\u7ec3\u624b\u9879\u76ee

\u4e0d\u77e5\u9053\u5927\u4f6c\u4eec\u6709\u6ca1\u6709\u63a8\u8350", "date_published": "2023-10-27T10:01:14+00:00", "title": "\u5927\u4f6c\u4eec \u6700\u8fd1\u5728\u5b66 electron \u6709\u6ca1\u6709\u63a8\u8350\u7684\u7ec3\u624b\u9879\u76ee", "id": "t/986100" }, { "author": { "url": "member/Angela2022", "name": "Angela2022", "avatar": "https://cdn.v2ex.com/avatar/c97e/b02e/595802_large.png?m=1668824323" }, "url": "t/983330", "date_modified": "2023-10-19T00:03:23+00:00", "content_html": "1. chatGPt api \u4f7f\u7528\u6709\u5565\u95e8\u69db\u5417

2. \u76f4\u63a5\u7528 chatGPT api, \u6574\u5408\u5230 electron \u9879\u76ee\u6709\u5565\u5f00\u6e90\u9879\u76ee\u5417

\u8c22\u8c22", "date_published": "2023-10-19T00:02:34+00:00", "title": "\u8bf7\u95ee\uff1a \u5982\u4f55\u628a chatGpt \u6574\u5408\u5230 electron \u9879\u76ee\u4e2d\uff1f", "id": "t/983330" }, { "author": { "url": "member/NobodyVe2x", "name": "NobodyVe2x", "avatar": "https://cdn.v2ex.com/avatar/523d/2a03/232700_large.png?m=1729694002" }, "url": "t/978712", "title": "Electron \u96c6\u6210 firebase", "id": "t/978712", "date_published": "2023-10-03T06:02:19+00:00", "content_html": "\u8c8c\u4f3c firebase \u5b98\u65b9\u5e76\u4e0d\u652f\u6301 electron, \u6709\u5927\u4f6c\u505a\u8fc7\u5417\uff1f \u611f\u8c22" }, { "author": { "url": "member/pdog18", "name": "pdog18", "avatar": "https://cdn.v2ex.com/avatar/1aa8/8bfa/238564_large.png?m=1732532005" }, "url": "t/975635", "date_modified": "2023-09-20T11:32:00+00:00", "content_html": "

\u6211\u4e86\u89e3\u5230\uff0c\u622a\u56fe\u5de5\u5177\u4e00\u822c\u90fd\u662f\u83b7\u53d6\u7a97\u53e3\u7136\u540e\u5728\u4e00\u4e2a\u65b0\u7684\u7a97\u53e3\u4e2d\u8fdb\u884c\u7f16\u8f91\uff0c\u4f46\u662f Electron \u6253\u5f00\u65b0\u7a97\u53e3\u7684\u64cd\u4f5c\u5c31\u7279\u522b\u660e\u663e\uff0c\u8fdc\u8fdc\u4e0d\u5982\u666e\u901a\u622a\u56fe\u5de5\u5177\u663e\u793a\u622a\u56fe\u7f16\u8f91\u9875\u7684\uff08\u65e0\u611f\u77e5\uff09\n\u6240\u4ee5\u4e3a\u4e86\u66f4\u597d\u7684\u4f7f\u7528\u4f53\u9a8c\uff0c\u622a\u56fe\u80af\u5b9a\u4e0d\u80fd\u4f7f\u7528 electron \u81ea\u5df1\u7684 api \u5bf9\u4e0d...

\n", "date_published": "2023-09-20T11:16:29+00:00", "title": "\u60f3\u7528 Electron \u505a\u4e00\u4e2a\u622a\u56fe\u5c0f\u5de5\u5177\uff0c\u4f3c\u4e4e\u7b2c\u4e00\u6b65\u6253\u5f00\u7a97\u53e3\u5c31\u6709\u70b9\u95ee\u9898\uff1f", "id": "t/975635" } ] } ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86