最近感受追不动前端的发展了,写篇文章感叹一下。php
我知道有一些学校会教一些简单的网页制做,就是用 Dreamweaver 点一点的那种。大多也会留做业,最后交做业的时候看起来也像模像样。css
只要不看代码。html
看了代码感受宁愿选择死亡。前端
table 布局,无心义的 dom 节点。大小写混用,缩进混乱。java
做为一个前端工程师,至少要写明白本身写的声明是什么意思对吧?react
而后还得减小没必要要的 dom 节点,毕竟不少文章说节点多会影响渲染速度(ps: 我是不在意的,我以为有点儿矫枉过正的味道了)webpack
而后比较重要的一点儿是对于语义化标签的看法。好比何时该用 ul
, 何时该用 section
, aside
css3
至于 head 里面的那些无聊的声明只要会复制粘贴就行了,我以为没什么意思git
自信作到这些的应该算差很少了程序员
文章说的是前端有多难,不少人都以为这些标签简单。然而想象一下,要写多少的标签才能理解语义化的意义?要写多少页面才能真正的明白这个节点应该写什么标签?如何组合才算合理?
而后是关于 CSS,我以为这方面是很复杂的。并不像不少人以为只是一些单词的组合。
一开始我会改 background-color 以为开心得不行,觉得掌握了
后来无限突破视野。
在第一次写超过50个class以后就感受想死,重复性劳动,样式修改调试,写法丑。。。
接触到 Sass 以后像是发现了新大陆,有一段时间甚至不会写原生 css 语法了。
而后折腾: Sass -> Stylus
到这里结束了么? naive
后面还有postcss, cssnext 这些东西。
在 react 生态中还有 css-modules, css-in-js 这些鬼东西。
虽然语法都不是很难。可是这么长时间的折腾下来,虽然说提高是有的,但并无感受到生产力有多少巨大的提高。
css 到这里还没完。
还有BEM的命名方式要去理解。
到这里依旧没有完。
css3 的新特性,还有各类 hack。好比如何实现footer始终在底部,内容始终撑满全局?如何实现条纹?
到这里结束了么?
依旧没完。
css stage 4 等着去学习。
还有精力?
能够试着多作些兼容性相关的东西。会崩溃,相信我
到这里?
在个人视野中差很少算结束了,然而有谁能肯定明天有没有一个什么new-css
之类的东西解决什么问题。
来了来了,前端的一个核心。
说JS轻松么?我们来扯扯。
首先是各类 dom 的增删改,而后是ajax相关。学会了差很少能作简单的页面了。
而后对异步的理解。只有理解了异步才能正常地写js。
而后是对js语言特性的理解。好比ES5如何实现继承什么的,闭包。
总之这些就是面试题老是会问的东西。
以后还应该理解设计模式对吧?
到这里是正常的语言应该学习的内容了。然而js到这里只是起步。
以后一个前端工程师还得会 ES2015/2016 之类的吧。如今不写个async
谁好意思说本身是写前端的?
以后应该是配合工具了,后文说。
继续顺着语言往下说。会了 ECMAScript 就能作个合格的前端了么?
还早呢。
以前火的 coffee script
如今不行了,然而 TypeScript
火了啊。不学一下怎么好意思追前端?
ts 对于以前写 Java, C# 的很是友好,基本语法没什么变化。然而可苦了那些不写这些语言的同窗。语法改变却是其次,思惟方式的转变才是难以接受的。
如今还有 Elm
了。。。
我以为我老了,追不上了
都说二流程序员爱玩工具,那我应该算是三流程序员了。对于vim
若是我不算狂热,那可能没有几我的算是教徒了。
我一直以为编辑器应该够快,可以跟上我思考的速度。在折腾了两年总算契合了个人习惯。
对于其余编辑器,我只有一个不去选择的理由:太慢
好了,说完了我本身的选择,得来看看我用过的编辑器了。
最初我也没用过几天的 Dreamweaver。直接上了 sublime。以后跟着快乐的sublime编辑器这套课程用了起来,应该是我用过除了vim外时间第二长的编辑器。
最初只以为好看就用起来了。
而后学了一段时间PHPStorm,大概会用了JetBrains家的东西。说实话,他们家的东西是不怎么好学的,细节太多。
而后我用起了vim。
做为一个0基础起步的人,我在编辑器上折腾了两年多才算找到了还算合适的方式。
其实我以为不少人并无找到本身合适的编辑器,致使写代码的热情都下降了。
对于编辑器的总结是只能本身踩坑才能找到合适的编辑器和配置。然而须要时间踩坑啊!
另外的工具大概是前端的工具集了,就像是gulp
这类的东西。
我在初学的时候流行的是grunt,然而我看到那个配置文件写的就彻底不想用。
而后gulp就流行了起来,配置文件看起来简单好多,学!
而后gulp刚刚入门就发现世界已经被webpack统治了,怎么办,学啊。
这么长时间的折腾结束了么?没有啊!
还有rollup打包这些东西了。
像是php或者java就没这么多破事,代码不用打包,直接跑起来,哪里会半年换一套方案。
到如今,HTTP/2大行其道,但是前端却没有一款适合HTTP/2的打包工具。因此我以为半年到一年左右还会有新的工具出现,你们准备好从新学习吧 :)
刚刚忽然想起了还有版本控制工具也算是工具。
一开始不用版本控制,而后学Git, 而后有些公司使用svn,又得学。会用是一回事,深刻理解又是另外一回事了。我们得稍微深刻地理解一些吧。好比版本控制如何看待移动文件这件事的?
而后会了Git, 怎么说也得上Github混混脸熟吧。而后跟Gayhub上的一堆基佬交流一下,怒了提交个issue。过几天发现这么简单的bug还没fix掉,忍不了,我本身写patch,发个pr上去。
上面一行话说得轻松,然而没个一年半载哪里作获得。
版本控制会了,企业级私有仓库还得折腾一下吧,踩踩坑。
又一个重点来了。
就是js什么范式都能写。
OOP么?约起!class Foo {}
走起来。
由于大多数人都是从C/C++学起的,因此总能先接触到OOP思想。并且OOP挣钱容易,因此这其中大部分人是不肯意接触不怎么挣钱并且还得从新学的的其余部分的,用我爹的话说就是别搞那些没用的
。
然而如今不学FP真的能行么?
并不能啊,兄弟。
如今不写个 react 好意思跟人说本身是写前端么!写了react怎么说也得接触一下 redux 吧。而后就完了。。。和以前彻底不一样的新思惟就来了。
以前jQuery绑定一个数据直接改就行了。如今出个单项数据流,什么操做都得发个 action ,视图得订阅 store 。好吧,这还不算FP的范畴。
高阶函数老是了吧。我以前历来没想太高阶函数怎么在 react 里面用,直到看了 connect 源码吃了一惊,卧槽,还能这么写!
还有说烂了的柯里化。
如今还出现了不少js的函数式语言变种,就像 Elm , clojurescript什么的。
我真的以为不学门函数式如今很难作前端了。
因此从入门的OOP到函数式,得费多大功夫才能学会。人家都是学好一种就能够了,作前端的都得会
Node.js带来了前端的春天。然而也加剧了前端的负担。
以前写点儿jQuery就成了,如今还得会Node, 本身写后端。
写事后端的人多少都知道,代码写起来并不算很难,难的是负担。如何设计才能承载高并发大流量。如何应对这些状况,宕机了怎么办。
原来前端不用关心的东西如今都得考虑。毕竟 Node 和前端靠的近,人家问起来本身不会多尴尬。
在我我的看来,不少写Node的只知道堆package, 对于Buffer, Event, Stream, Http并非很了解。
因此写 Node 的前端同窗们啊,我们的学习之路任重而道远。
学通了以后呢?那就已经脱离前端的范畴了。
这都说到后端了。得扯一下数据库吧。
数据库毫不是简单的拼一下SQL语句就能够了。
在设计表结构的时候要充分考虑以后的应用场景,可维护性,承载量级。
就算不考虑上面的几条,那至少得遵照到三范式吧?
数据库应用的时候还有不少要了解,好比一个表关联是什么意思,事务是什么东西,应用场景在哪里,如何处理慢查询。
而我发现有些人都被ORM惯坏了,写SQL都生疏了。
好了,一个前端工程师作到这份上也算是仁至义尽了。后面的交给DBA吧。
作一个独立前端天然少不了和server打交道。关于 Nginx 至少得会安装。而后会写简单的配置文件。这样,就能够本身上一个网站了。用了 Node 还得学学反向代理的东西。
然而到这里哪里能知足爱折腾的前端?
HTTPS 走起!从几家服务商中选择本身喜欢的,口碑好的,而后搞定证书。
跑了HTTPS依旧不满意,追新的咱们怎么还用几十年前的 HTTP/1.1 ? HTTP/2 走起,本身下载编译安装 Nginx ,而后调参数,改配置。
这个阶段得学会 Linux系 编译, SSL/TLS 的知识,加密算法,HTTP。。。
一个写前端的还得学这些 T_T
还没完啊,HTTP懂了还有TCP/IP等着啃,Socket协议还得了解。
一万我的告诉我算法和数据结构才是计算机科学的核心。
List, Graph, Tree 什么的还得学学。反转二叉树这种知名题目还得写写。快排,水仙花什么的还得写一些
这个时候可能有些前端会问,跟我有关系?
关系太大了。
我在实习的第一个月在作module load的一些方案,由于对算法了解不深,写了不少操蛋的代码。好在后来各类重构没让我太过羞耻。
前端多多少少会接触 canvas 和 WebGL 这些关于图形学的东西。但是若是线性代数学的不到家怎么可能写得好图形学的代码?
至于那些数据结构对于前端应用可能并非很明显,然而一旦碰到将是致命的。好比对于Immutable.js的理解
因此一个合格的前端算法还得过关。
工程化是我一直以为前端的最最困难的地方。和其余的后端所不一样的是,前端工程化的重要性远超算法数据结构。
前端虽然也有几十年了,但是一直处于边缘地带。没有很是稳定和合适的工程化实现。
千禧以前大多用C直接写(前端渲染用什么我真不知道,求老司机教)。而后用PHP作后端,直接在HTML里面拼接。
而后出jQuery一统江湖。改dom解决全部问题。
但是到这个时候是没法解决大量页面所带来的问题的。好比性能,好比缓存,好比代码重复,好比代码可读性差。
以后的Angular1的出世应该算是一道惊雷。在我看来前端工程化大概从这里起步了。
源自于后端经常使用的依赖注入控制反转之类的思想开始在前端崭露头角。
到如今,虽然群星闪耀,却仍旧没有一个稳定的最好的解决方案。
从MVC -> MVVM -> Flux 的变化,如今彷佛 Reactive 有着火起来的趋势。
如何组织构建页面,如何在大量页面中仍然能优秀地组织好文件结构,如何在面对需求变动的时候经过尽可能少的修改代码来实现需求。如何减小错误的发生,和排错的代价。
在我看来,在前端领域,优秀的工程化方案要比优秀地算法更重要一些。
再来扯扯硬件吧。
最重要的天然是电脑,毕竟咱们这样的“网瘾少年/女”天天八九个小时都要对着电脑,甚至可能比和对象呆一块儿的时间都长。
因此,颜值怎么能差!长得丑还有心情撸代码?
因此,性能怎么能差!女友老生气谁受得了。
我我的最想要的应该是顶配版 MacBook Pro 了。等发新品了,就算卖屁股也得买一台
因此看看作个前端成本多高!不只要写代码熬成白发还得兼职卖屁股 T_T
而后是键盘,这个我保证比碰男女友时间长。
自从我买了 HHKB 我只以为没有网上盛传的那么神奇。我该怎么用仍是怎么用,代码速度依旧,开心程度依旧。
因此我以为可能一把500块的cherry就够了。
关键是必定要把大写锁定 map 到 ctrl!!!
关于 remap 的问题。。。我以为有些同窗仍是不肯意干的,毕竟麻烦。
而后继续谈谈作前端的成本问题。
我大二就买了个独立显示器,应该算是比较早的了。
不买个独立显示器对这个小屏幕,鬼才愿意写代码。
然而屏幕烧起来但是贵了很多。好在我穷得烧不起(此处插入微信smile表情)
而后是椅子。我前一段时间想买一把好点儿的椅子。
而后我刷了一遍各类评价不错的椅子。以为好像拖到40岁得个腰间盘突出比较值
到这里,你发现了么
前端一点儿都不简单啊。
要学各类注定被淘汰的所谓“新”东西。还得学贯先后端,熟悉算法,了解工程化方案。
别人攒钱买房,咱攒钱买键盘。
因此这辈子作前端的上辈子都是折翼的天使,请善待你身边的前端同窗
sf 居然支持 emoji 了,还真不错哦