├── .gitignore
├── README.md
└── cover.jpeg
/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | .idea/*
3 | .templaterc.js
4 | dist
5 | # mac自动生成的文件
6 | .DS_Store
7 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | ## Electron + React Hooks + TS 实战开发:从 0 到 1 实现简历平台
2 |
3 | 
4 | 
5 | 
6 | 
7 | 
8 | 
9 |
10 | > 本小册从一个开发者角度,讲述技术选型到编码实现,点亮 Electron、TS 等技术点,逐步深入 React 开发,从 0 到 1 实现一款轻巧适用的简历平台桌面应用。
11 |
12 | ### 开发
13 |
14 | ```
15 | npm install
16 | npm run start:main
17 | npm run start:render
18 | ```
19 |
20 | ### 打包
21 |
22 | ```
23 | npm run build-app-mac
24 | npm run build-app-win
25 | ```
26 |
27 | ## 作者介绍
28 |
29 | 彭道宽,就职于 CVTE,部门人称“彭于晏广州分晏”,掘金专栏作者,投身开源,[rc-redux-model](https://github.com/SugarTurboS/rc-redux-model) 库作者,SugarTurboS 开源组织推动者之一,坚持用心写文章
30 |
31 | 你可以在这里找到我:[github](https://github.com/PDKSophia)、[博客](https://github.com/PDKSophia/blog.io)、[掘金](https://juejin.im/user/594ca8a35188250d892f4139/posts)、[微博](https://weibo.com/u/2971991985)、[SugarTurboS](https://github.com/SugarTurboS)
32 |
33 | ## 小册须知
34 |
35 | 本小册共试读 8 章节,我希望你看完这 8 章节后,再决定是否购买。
36 |
37 | 可能有小伙伴会有所疑惑,**“我刚转 React 技术栈,会不会食用此小册时噎死?”、“我不会 Electron,学起来是否很难且费时?”、“我暂时不需要用 Electron 是否能食用?”、“我不想做成 PC 端,能不能做成 Web 端?”**,这些问题我将在 [🏆 500 米里程碑|环境搭建篇完成](https://juejin.cn/book/6950646725295996940/section/6962898545577820198)进行解答。
38 |
39 | **《无常经》载: 世事无相,相由心生**。我只能保证,每一章节,一定是用心去写的。
40 |
41 | 该小册侧重于实战,**强烈建议边读边实践**。相应代码也已开源,希望这本小册子能够给你带来一些帮助,扩充你的知识库,帮你集齐目前炽手可热的技能点,也能帮你从 0 到 1 完成一个实操项目。
42 |
43 | ## 小册介绍
44 |
45 | ### 为什么我不用脚手架?
46 |
47 | 鲁迅先生曾言:“世上本没有路,走的人多了便也成了路”,在刀耕火种时期,我们写前端代码并不需要所谓的脚手架,三件套 HTML+CSS+JS,再搭配一个 VSCode 就够了。随着 Web 的发展,页面越来越丰富,需要的技术栈越来越多,各种各样的脚手架腾空出世。
48 |
49 | 世间万物存在,必有其意义,我们得明白脚手架的出现,给我们带来了什么方便?脚手架是一个工具,通过输入一些简单指令,为我们快速搭建好一个基本环境,基于此快速开发,从而提高工作效率。很有意思的现象,随着脚手架市场不断丰富,在开新项目选型技术框架时,会有意识的去选择是采用 `vue-cli` 还是 `create-react-app`,久而久之成为脚手架的忠实使用者。
50 |
51 | 不知老板们大学是否有教前端的课程,如果我没记错,我们学校有门课程叫做:`Web基础`,教材内容极为“舒适”,可以说与现在的主流技术栈毫无关系,当然现在教材内容是否有变更就不为人知了。
52 |
53 | 我相信大部分学习前端的小伙伴,差不多都是这个流水线:
54 |
55 | 
56 |
57 | 记得我第一个仿站项目:Vue 开发去哪儿网从入门到实战,视频刚看前 3 节,我就放弃了,如果你问我为什么,我会很骄傲自豪的告诉你,搭建环境没成功,Webpack 老配置不对,项目跑不起来。
58 |
59 | 人们总是习惯性的呆在舒适圈中,我也一样,能用脚手架解决的事情,我为什么要自己去写,自己去做,渐渐地当我对脚手架产生依赖性之后,莫名有种恐慌,因为脚手架太香了,我基本用到的配置都已经帮我写好,我只需要坐享其成。
60 |
61 | 基于脚手架搭建项目,大部分人主要工作是:参与其中的“页面”开发,更多的对于前期配置与后期打包发布等问题,都处于相对空白状态;我曾想,该如何学习 Webpack,我上网去搜,很多教程,诸如 Webpack 傻瓜式指南、Webpack 入门体验、Webpack 花式入门教程,我都粗略看了一下,都不错,但没能找到属于自己学习 Webpack 的正确道路;`我去看文档,枯燥乏味,我去 B 站学习,有一股神秘的东方力量,将我的视频内容从 Webpack 变成 Lisa ,我去看优秀项目中的配置,又太复杂,各种操作秀上天,山舞银蛇,原驰蜡象,欲与天公试比高`,对于我这种初学 Webpack 的好同志来讲,简直就是造孽。
62 |
63 | 逃不掉的,你总得学,只是时间早晚问题,从零开始,抛弃脚手架去踩踩坑,从坑中爬出来配合文档查缺补漏,这才是可持续发展的最佳战略。
64 |
65 | ### Electron 跨平台桌面应用程序
66 |
67 | **以前我们被称为切图仔,慢慢地,我们有了个头衔,叫做前端工程师**,大部分情况下,我们前端仔都是跟浏览器打交道,如果会点 Node,还能写点后端秀一把。但如果涉及到“禁区”:原生应用,那就无能为力、束手无策了。偶然得知,我们的吃饭工具 `VSCode` 是用 Electron 开发出来的。它自吹:“如果你可以建一个网站,你就可以建一个桌面应用程序 ”。简单来讲,就是允许你使用吃饭的家伙,去开发原生桌面端应用。
68 |
69 | 如 Atom、VSCode、迅雷、微信等都是采用 Electron 构建桌面客户端,足以说明 Electron 的强大。
70 |
71 | 同时部分前端岗位在招聘职位上也有明确描述:主要前端框架为 React、Electron。希望通过本小册能让你了解 Electron,并通过实战,体验一下开发桌面应用的快乐。
72 |
73 | ### React Hooks
74 |
75 | 对于 Hooks 的了解,你可以通过[官网](https://zh-hans.reactjs.org/docs/hooks-intro.html#motivation)能找到答案,但实际上,还是有许多小伙伴并不敢下手实践。
76 |
77 | 作为一名程序员,我们很明确的清楚,对于复用的代码要抽离出来,但在 React 中,我们往往想复用一些状态逻辑是非常困难的,大部分情况下都是通过高阶组件、render props 等方式,重新组织代码结构(组件结构),以达到我们的目的——复用状态逻辑。
78 |
79 | 正因为想解决上述情况,Hooks 应运而生。希望通过本小册通过具体项目实践应用 React Hooks 新特性,我想这一定比干啃文档更补。
80 |
81 | ### TypeScript
82 |
83 | 想必 TS 的概念大家都知道,但真正上手 TS 的却少之又少。不仅 React,现在 Angular、Vue 都拥抱了 TS 生态,如前段时间很火的 Vue3 都刚用 TS 重构完毕。
84 |
85 | 不得不说, TS 是一个大趋势,掌握 TS 也是进阶必备技能。同时在求职过程中,它是你的亮点或者加分项,有些公司甚至已将其作为必备技能。掌握 TS 对你来讲是利大于弊。
86 |
87 | ## 核心思想
88 |
89 | 
90 |
91 | 本小册的写作思路:围绕简历平台,采用当前相对流行的技术栈,从零打造一个完整的实战项目。从最开始的技术选型到项目初始化,开发环境下的相关配置到功能的具体实现,功能点的设计及相关库的选型,以及最后的打包发布。
92 |
93 | **纸上得来终觉浅,绝知此事要躬行**,试读章节是对 Webpack、Electron 核心知识的讲解,对整个应用功能设计,接下来在业务篇进行一一讲解,配套对应的分支代码,让你从头到尾把内容连贯起来。
94 |
95 | ## 关于建议
96 |
97 | 为了保证较好的阅读体验,不建议跳读,你要真的跳,那我也没办法。
98 |
99 | 还有这本小册,阿宽会根据知识点内容进行适当的拆分,能一节说完的东西,不会拆成两节,为了确保最佳阅读效果,我会尽最大能力,让语言幽默些,看起来轻松点,如果你看完觉得不够轻松,那去洗个澡冷静一下,再回来看。
100 |
101 | ## 关于解惑
102 |
103 | > 古之学者必有师。师者,所以传道受业解惑也。人非生而知之者,孰能无惑?惑而不从师,其为惑也,终不解矣
104 |
105 | 如果大家在阅读小册时发现任何你有困惑的问题,可以对我提问,非学习上的问题,也可对我提出,我在力所能及的范围内尽力帮大家解答。
106 |
107 | ## 你会学到什么?
108 |
109 | 
110 |
111 | 
112 |
113 | 小册目录共分为 28 章,每一章节的篇幅都相对较长,期望你能耐心去看,看完之后你将会获得下面技能:
114 |
115 | - 点亮新技术点,了解 Electron ,掌握 Electron 开发 PC 端应用的基础知识和积累实战经验,你不仅仅只能做 Web 端,还能做 PC 端,相信我,这并不难
116 | - 实战型教程,不只是讲理论知识、更要让你明白某个功能点从技术选型到设计再到实现
117 | - 抛弃脚手架,从零搭建项目,不断踩坑,配合文档查缺补漏,了解一个完整项目的总体流程
118 | - 熟练使用 React Hooks 新特性进行业务开发,思考 Hooks 为你带来的价值
119 | - 聊聊公共组件,公共 Hooks 开发前的思考及过程,返璞归真,越简单的东西往往越难
120 | - 手把手实操搭建平台,围绕`为什么`、`怎么做`进行配置代码解读,配套不同代码分支帮助理解,加强你对 Webpack、Babel 的认识。
121 | - 无任何的 UI 框架,纯手工制作,让你脱离 UI 库,进而提升自己的 CSS 能力
122 | - 了解 redux 原理,了解 redux 中间件的真面目,结合 rc-redux-model 中间件,让你开发 redux 中间件不再困难
123 |
124 | ## 适宜人群
125 |
126 | - 掌握一些前端基础知识,但没做过项目,缺乏实战经验的在校大学生
127 | - 转型技术栈,对学习和掌握 React 还未积累实战经验的同学们
128 | - 期望了解一个从 0 到 1 完整项目的整套流水线,补全自己知识体系的小伙伴
129 | - 期望通过前端技术,开发桌面客户端的小伙伴们
130 | - 迟迟不敢探索新特性,对 React Hooks 感兴趣,但仅停留于理论文档,缺乏实战经验的前端小伙伴
131 |
132 | ### 更多分支
133 |
134 | - 环境分支
135 |
136 | - [electron-init](https://github.com/PDKSophia/visResumeMook/tree/electron-init):关于`Electron`相关的初始化配置代码,只涉及到 Electron
137 | - [electron-react-init](https://github.com/PDKSophia/visResumeMook/tree/electron-react-init):将 `Electron + React` 结合起来的初始化配置代码
138 |
139 | - 完整项目
140 | - [master](https://github.com/PDKSophia/visResumeMook):简历平台应用完整项目地址
141 | - [init-cli](https://github.com/PDKSophia/visResumeMook/tree/init-cli):完整配置的分支代码,可以基于此分支直接进行项目开发
142 |
143 | > 支持配套学习分支,章节名对应分支名,如有疑问,请提 issues,同时欢迎提 Merge Request
144 |
145 | ### 小册章节
146 |
147 |
148 |
149 | - [x] [开篇-小册介绍](https://juejin.cn/book/6950646725295996940)
150 | - [x] [开篇-技术选型和项目结构](https://juejin.cn/book/6950646725295996940/section/6962895331667230727)
151 | - [x] [基础篇-Electron 初步认识并掌握基础知识](https://juejin.cn/book/6950646725295996940/section/6961585436967829516)
152 | - [x] [设计篇-需求功能设计与数据存储方案设计](https://juejin.cn/book/6950646725295996940/section/6962435230061821952)
153 | - [x] [环境篇-动手搭建我们的简历平台](https://juejin.cn/book/6950646725295996940/section/6961586491285831720)
154 | - [x] [🏆 500 米里程碑|环境搭建篇完成](https://juejin.cn/book/6950646725295996940/section/6962898545577820198)
155 | - [x] [业务篇-首页开发,好的印象能加分](https://juejin.cn/book/6950646725295996940/section/6962938228357726241)
156 | - [x] [业务篇-如何写我们的 Redux 与 jsonFile](https://juejin.cn/book/6950646725295996940/section/6962906314565484551)
157 | - [x] [业务篇-简历制作之常用组件设计与简历数据设计](https://juejin.cn/book/6950646725295996940/section/6962895451875966989)
158 | - [x] [业务篇-简历制作之入口页面开发](https://juejin.cn/book/6950646725295996940/section/6964550757375246366)
159 | - [x] [业务篇-简历制作之工具条模块与简历模版之间通信](https://juejin.cn/book/6950646725295996940/section/6965876539833450503)
160 | - [x] [业务篇-简历制作之数据的录入与展示](https://juejin.cn/book/6950646725295996940/section/6962940365221396511)
161 | - [x] [业务篇-简历制作之导出 PDF](https://juejin.cn/book/6950646725295996940/section/6962940108383191048)
162 | - [x] [🏆 1000 米里程碑 |简历主流程完成](https://juejin.cn/book/6950646725295996940/section/6962940484008280077)
163 | - [x] [业务篇-首页主题换肤功能实现](https://juejin.cn/book/6950646725295996940/section/6962761759404851239)
164 | - [x] [业务篇-简历模版列表实现与侧边栏交互效果](https://juejin.cn/book/6950646725295996940/section/6962940426999300109)
165 | - [x] [业务篇-简历数据存档且自定义存储路径](https://juejin.cn/book/6950646725295996940/section/6962940676258398222)
166 | - [x] [🏆 1500 米里程碑 |丰富功能](https://juejin.cn/book/6950646725295996940/section/6962939774650810380)
167 | - [x] [优化篇-如何采用 Hooks 优化主题换肤逻辑](https://juejin.cn/book/6950646725295996940/section/6962940589528580132)
168 | - [x] [优化篇-公共弹窗拆解优化,让职能更加单一](https://juejin.cn/book/6950646725295996940/section/6962941125426413599)
169 | - [x] [优化篇-采用 Hooks 优化简历 Form 组件](https://juejin.cn/book/6950646725295996940/section/6962941213401939998)
170 | - [x] [定制篇-自定义 Electron 原生应用菜单](https://juejin.cn/book/6950646725295996940/section/6962938070312157184)
171 | - [x] [打包篇-Webpack 打包优化](https://juejin.cn/book/6950646725295996940/section/6962941321325576226)
172 | - [x] [打包篇-Electron 打包体积优化](https://juejin.cn/book/6950646725295996940/section/6962941003858706436)
173 | - [x] [🏆 到达目的地-应用程序发布](https://juejin.cn/book/6950646725295996940/section/6962941268389265415)
174 | - [x] [结尾篇-行而不辍,未来可期](https://juejin.cn/book/6950646725295996940/section/6962941492159578143)
175 | - [x] [彩蛋篇-Webpack 基础介绍与两大利器](https://juejin.cn/book/6950646725295996940/section/6962895331730620423)
176 | - [x] [彩蛋篇-RcReduxModel 中间件开发设计](https://juejin.cn/book/6950646725295996940/section/6953057493043904549)
177 | - [x] [期望篇-可视化自定义独特的简历模版](https://juejin.cn/editor/book/6950646725295996940/section/6953057711445671943)
178 |
179 | ### 效果
180 |
181 | 1. 首页
182 |
183 | 
184 |
185 | 
186 |
187 | 2. 模版列表页
188 |
189 | 
190 |
191 | 3. 制作简历页
192 |
193 | 
194 |
195 | 
196 |
197 | 
198 |
199 | 
200 |
201 | 
202 |
203 | 4. 导出简历信息
204 |
205 | 
206 |
207 | 5. 导出 `名字+学校+职位` PDF
208 |
209 |
210 |
211 | > 上述是部分截图,其中的布局、样式、交互均纯手工制作,未采用任何 UI 库,导出的简历并不模糊,可放心使用
212 |
213 | ### 疑问
214 |
215 | 有任何疑问可以提 issues 或者添加我微信 PPPengDK 哈,同时欢迎大家提 Merge Request
216 |
--------------------------------------------------------------------------------
/cover.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PDKSophia/visResumeMook/8546b803fc4a18f9a172d5ed48ffdac389a31771/cover.jpeg
--------------------------------------------------------------------------------