死亡命题!
共 2344字,需浏览 5分钟
·
2021-05-29 13:06
大家好,我是二哥呀。
最近一段时间,很奇怪,好多同学私信问我“前端和 Java 该怎么选”的问题,说句实在话,这是一个死亡命题啊!
![](https://filescdn.proginn.com/85d0317de1e49d5d0a38ea069ebe82f7/ce6a09f951a391fbd0e2212b2a705494.webp)
真不好选,因为“男怕入错行,女怕嫁错郎”,初学者纠结这个问题也是情有可原。
二哥斗胆来谈谈这个话题。毕竟二哥当年也是出版过一本前后端都有涉及的《Web 全栈开发进阶之路》,之前还有不少同学说这本书躺过他们学校的图书馆。
前端这些年因为有 React 和 Vue,再加上安卓、Flutter、微信公众号、微信小程序等等,确实发展得挺好的,可谓一片盛世。而 Java 后端呢,也是一片盛世,国内的阿里、京东、美团、网易等等一线互联网公司,还有国外的很多大厂,像领英、亚马逊等等,都在使用 Java 作为后端的开发语言。
两个发展前景都好,该怎么选呢?
先搞清楚 Java 后端和前端的区别到底是什么,再做选择。
不能抱着偏见去做选择,尤其是不能有这样的偏见:“前端比 Java 后端容易一些”,那可能一个 Java 后端的大神级的好苗子就没了。像同学舍友说的那样,认为“学 Java 找实习来不及,学前端的话,可能性更大”,这种结论很不可取。做任何选择,都不能只停留在表面。
Java 后端的学习建议我上周日的文章已经写过了,今天这篇就重点谈一谈前端,看看前端需要掌握的知识点都有哪些,我尽量给大家梳理的完整一些。
前端开发是一个非常特殊的行业,它的历史并不长,但知识相当的繁杂(尤其是近些年),并且技术的迭代速度是其他技术不能相比的。与此同时,前端工程师也成为了研发体系中的重要岗位之一。
![](https://filescdn.proginn.com/9d4bbe1d7b76be699c2bfa08f2e31360/c8a644fcf687d2d44f0fda6c83854206.webp)
1)JavaScript
JavaScript 应该说是前端吃饭的家伙,深度、广度要兼备。基本上主流的前端框架都是基于 JavaScript 开发的,像 Vue,是由前端大神 @尤雨溪 开源的 JS 框架;像 React,是 Facebook 开发的一款 JS 库。下面这些知识点,是一名前端开发必须要掌握的。
![](https://filescdn.proginn.com/2d0385764508aecc9a010c05b97a7aff/5bbaa3ef1db2eadc6f58ce4869769fe6.webp)
2)HTML 和 CSS
随便打开一个网页,按下 F12 就可以看到大量的 HTML 和 CSS 代码。一个网页美不美观,能不能得到用户的喜欢,除了 UI 设计,除了 JavaScript 来控制逻辑,剩下就是 CSS 样式了。
![](https://filescdn.proginn.com/1c819b8afeb9555d8bf6dbc18be33d28/3bbcc46f8771206dcd438f3a281d1018.webp)
3)运行环境
浏览器作为 JavaScript 的一种运行环境,为它提供了:文档对象模型(DOM),描述处理网页内容的方法和接口,一名合格的前端得了解:
浏览器提供的符合 W3C 标准的 DOM 操作 浏览器的差异性、兼容性(Chrome、Safari、IE 等等) 可以使用 Node.js 搭建前端运行环境 可以使用 Node.js 操作文件、操作数据库等等
注:Node.js 是一个能够在服务器端运行JavaScript 的跨平台运行环境
4)框架和类库
有一说一,前端的框架和类库真的是层出不穷,我学过的就有 Flex、ActionScript、jQuery、Bootstrap、TypeScript、React、Vue,有些已经淘汰了,有些快被淘汰了,有些是当下的主流。
对了,前端里还有 Flutter,一个由谷歌开发的开源移动应用软件开发工具包,用于为 Android、iOS、Windows、Mac、Linux、Google Fuchsia 开发应用。
告诉大家一个小秘密,我之前还为京东大佬的《Flutter 实战入门》的书写过推荐序,虽然后来只在封皮上留下了这段话。
![](https://filescdn.proginn.com/7bbd4c932c879a0ad78450dd30d05c03/cd54fcefa79a3206ff21acc66c1eeafe.webp)
前端的同学可以留言下,如果数量不算少的话,我到时候把序言分享出来,顺带送 10 本书给大家。
前端的 UI 组件也非常多,比如 Ant Design、EChart,还要掌握 GIS 开发框架,比如百度地图的 API,还有可视化开发框架,比如 Three.js、D3。
前端还需要懂一些计算机基础,比如说:
![](https://filescdn.proginn.com/c32e8bc0ac64161e4cae6c45900ffac6/cc61c5d4cc07f64f42519a04168fcaa5.webp)
虽然大部分前端对数据结构和算法这部分知识有些欠缺,甚至抵触,但真的想要摸到更高的天花板,数据结构和算法是必会的。
![](https://filescdn.proginn.com/43dad2d8f6710ff1fa2d2ffec7623369/74f8ed776e25545ce9037672a72bae81.webp)
另外,要熟练使用浏览器提供的调试工具,比如说 Google Chrome,还有微信基于 Chrome 内核魔改版的可用于调试公众号和小程序的调试工具。
前端不再是单纯的谢谢 JavaScript 和 CSS,也需要工程化,所以需要理解 npm、yarn 等依赖包的管理原理,还有前端打包工具 webpack 的编译原理等等。
对了,还有性能优化这块。尤其是启动页,用户第一时间看到的,如果加载速度慢,页面的响应速度慢,用户可能就直接离开了。
我之前在做微信公众号的小商城时,可没少在首页的加载速度上下功夫,要压缩 CSS 和 JavaScript,要使用 CDN 内容分发,要减少 HTTP 请求的数量,要实现图片的懒加载,还要后端配合一些缓存等等。
这么一套前端的知识体系下来,是不是就不会再有那种刻板印象了,前端真的那么简单吗?懂的人永远不会说简单。
贴一张字节跳动的面试题吧,想走前端路线的同学可以感受下。
![](https://filescdn.proginn.com/13555f90d9dd68d71bf646b1e7e7f8a2/9cf4074fbab32ea0ddc564b85bbca244.webp)
还有一张前端的技能图谱:
了解了前端的知识体系,再结合我之前的文章,应该就能做出自己的选择了,到底选择前端还是 Java 后端,同学们心中应该就有自己的答案了。
PS:二哥毕竟不是专业的前端,更全面的前端工程师自检清单,可以参考 ConardLi 的文章,更详细更全面。
https://juejin.cn/post/6844903830887366670
我是二哥呀,我们下期见,可以在评论区给出你的看法~