{"id":13671580,"url":"https://github.com/zedwang/electron-bdcloud","last_synced_at":"2025-07-11T03:36:55.103Z","repository":{"id":87577637,"uuid":"121077163","full_name":"zedwang/electron-bdcloud","owner":"zedwang","description":":heart_eyes::two_hearts::airplane:BaiDu cloud with React16.x and Electron练手项目","archived":false,"fork":false,"pushed_at":"2018-05-02T09:55:19.000Z","size":1876,"stargazers_count":25,"open_issues_count":4,"forks_count":3,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-06-11T11:25:30.207Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/zedwang.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2018-02-11T02:49:42.000Z","updated_at":"2023-11-16T10:17:27.000Z","dependencies_parsed_at":"2024-01-14T17:04:56.013Z","dependency_job_id":null,"html_url":"https://github.com/zedwang/electron-bdcloud","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/zedwang/electron-bdcloud","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zedwang%2Felectron-bdcloud","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zedwang%2Felectron-bdcloud/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zedwang%2Felectron-bdcloud/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zedwang%2Felectron-bdcloud/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zedwang","download_url":"https://codeload.github.com/zedwang/electron-bdcloud/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zedwang%2Felectron-bdcloud/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264722161,"owners_count":23654069,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-02T09:01:13.744Z","updated_at":"2025-07-11T03:36:55.046Z","avatar_url":"https://github.com/zedwang.png","language":"JavaScript","readme":"# 仿百度云盘客户端\n\n基于`Electron`,`Webpack3`,`Babel7`,`React16`,`MobX`\n![shortscreen](https://github.com/zedwang/iCloud/blob/master/screenshots/main.png?raw=true)\n\n \u003e electron的官方脚手架只是一个demo，并没有完全的基于业务实现。所以，想通过此项目来系统的接触。其实不太需要真实的API,所以并不不会考虑文件的传输问题（当然要对接一些云也是可以的）。\n \u003e 关于UI的细节也没有花太多精力，那些都是体力活，模仿的百度云仅用于学习。主要是强调生产的过程，比如项目的工程化，托盘处理，自动更新、跨平台打包、网络检测，发布到平台等等这样原生功能。\n\n## Dev\n\n 1. fork仓库，安装依赖包\n\n```shell\n    yarn install\n```\n\n 1. 启动\n\n```shell\n    yarn start\n```\n\n 1. 打包调试\n\n ```shell\n    yarn package:win\n ```\n\n 1. 编译安装包\n\n ```shell\n    yarn release\n ```\n\n## TODOS\n\n* [x] 拖拽窗口\n* [ ] 网络检测\n* [ ] 自动更新\n* [ ] 系统通知\n\n## 注意事项\n\n 1. electron不同于普通的web程序，涉及到进程通信，所以在webpack编译的时候要配置  `target: 'electron-renderer'`\n 1. 比较常见的就是es6`class`this的绑定问题，一般有三种方式解决：\n    * 在`constructor`手动bind，或者用`auto-bind`这个报来自动绑定\n    * 在调用的地方bind，`\u003cbutton onClick={this.handleClick.bind(this)}\u003eclick me\u003c/button\u003e`\n    * 不定义方法类成员方法，定义成类的属性`handleClick = () =\u003e {....}`\n 1. `babel7`修饰符插件的问题。修饰符插件和类属性插件顺序很重要,`@babel/plugin-proposal-class-properties`插件必须开启`loose`模式,否则就会出现mobx不会刷新组件\n 1. `Not allowed load local resource`错误。\n    * 检查文件是否存在，或者路劲是否正确\n    * 可以在`BrowserWindow()`中关闭安全策略\n    ```js\n    {\n        webPreferences: {\n            webSecurity: false\n        }\n    }\n    ```\n    * 因为运行的环境是nodejs，所以在Webpack配置中要保证`__dirname`行为输出的是常规的文件目录\n    ```js\n        node: {\n            __dirname: false\n        }\n    ```\n 1. 打包体积问题。electron打包的东西出来通常体积比较大，那是因为包含了一个chromuin浏览器和node在里面。但是我们开发的环境中node_modules的体积也是很庞大的。所以我们可以main.js也进行打包，这样就可以不出现冗余的node_modules包。注意的是，在编译main的时候webpack的target要配置为`electron-main`\n 1. 字体乱码的问题。这个问题比较2，就是缺少了`\u003cmeta charset=\"UTF-8\"\u003e`的声明\n 1. `electron-packager`适合打包调试，推荐`electron-builder`\n 1. 要自动更新必须要打nupkg类型的包，`linux`平台并不支持自动更新\n 1. 一般情况下在render进程中通过remote接口去拿main进程的模块，可以不用显示的发事件\n\n## 体会\n\n 1. MobX vs Redux\n 2. Electron\n","funding_links":[],"categories":["JavaScript"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzedwang%2Felectron-bdcloud","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzedwang%2Felectron-bdcloud","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzedwang%2Felectron-bdcloud/lists"}