到底什么是好的页面?什么是好的前端工程师?为何如此多的前端概念?我已经被砸晕了!!
回复内容:
知乎上不是有好多程序员吗,现在排名第一的是什么鬼。看不下去了,指点你们一下。
在三线城市的一家互联网公司当技术总监,不是那种三五个人十几条枪那种,正儿八经的重视技术、钱掰成两半花的创业公司。
第一,
前端热,但不需要冷静,如果可能的话,我希望更热闹一点;
第二,
目前的状态下,页面很难写好,纯css和js撸出来的页面测试和维护成本都很高,用框架也有用框架的问题;
第三,前端技术栈非常复杂,根据应用场景的不同千差万别,在足够快的加载速度、足够好的兼容性的前提下,保证代码的可测试性和可维护性,是好的页面和好的前端程序员的方向;
第四,新技术都有其应用场景,我们用Angular换掉jQuery的场景中,生产力提高了7-8倍,但是我们的Angular仅限于单页面应用。
我们使用web的地方包括公司官网、手机嵌入简单的页面、学工系统、内部管理端等,需要面对的是有限的资源、不太强的技术实力、永远不充足的人手、紧迫的工期等常见问题。
我们的学工系统是典型的单页面应用,之前使用ExtJS,目前在往Angular迁移,互联网产品,追求用户体验嘛。使用的前后端分离,后台用Golang写的,总体性能还不错,写了半年,已有subview接近200个,只有一个前端在做(是的,你没看错),如果用jQuery的话,程序员估计已经疯了。另外完成后subview可能近千个,我们需要高度的自动化测试,不可能每次发布版本人工测试一遍,用jQuery做这个并不容易,以我们的水平,妥妥的写不出来。
内部的各种管理端全是Angular写的,套的bootstrap,并没有严格的测试,也是前后端分离的,这样的话可以App和网页共用一个后台,一些图表控件我们封装了ECharts,基本上谁有空谁写一点,用jQuery的话,维护没有这么容易,写起来也没这么快。
我们的手机嵌入的一些数据填写、统计信息什么的,也没有用jQuery,用CSS3的选择器和原生的HttpXMLRequest挺好的,加载速度也比较快,用户体验嘛。这一部分基本上一人写一个界面,维护挺麻烦的。
公司的官网,大多数是静态的,因为要SEO,我们也没有人手去做一套内容管理的东西。有些很漂亮的特效是CSS3做的,一样没有用jQuery。
后续一些活动可能使用WebGL之类的一系列技术,如果吃力的话我们还是继续CSS动画。我们有一些界面设计器准备往React迁移。
以上就是我们的应用情况,可以看到根据应用场景的不同,技术栈的差异蛮大的。
我们面临的问题有
人员确实贵,互联网行业人力成本确实是黑洞,引入新的技术既可能增加成本,有可能降低成本。在一个三线城市,新技术的代价很高,实际上除了我们很少有别家用Angular,我们坚持用了之后,开发速度提高了7-8倍,对比每个人薪资百分之二十左右的增幅很划算。
另外,
人确实难招,学校里不专门讲,很多人觉得很简单,但是水平多数停在百度代码实现动画效果的水平。没有框架的情况下,学工系统这么复杂的东西都写不了。
技术上面
首先,我对jQuery没有成见,我们的Angular的很多插件还是封装了jQuery的,但是距离目前排名第一的包打天下还差一点;
第二,js不好用,ES6还没普及,普及了会好一点,用不起TypeScript,当然了,也有它爹是微软的原因,很多团队成员不喜欢它;
第三,css不好用,项目大了难以维护,我们试着往sass上面迁移,但是失败了,成本过高,也可能是我们的设计师对响应式设计理解不好,很难项目一开始规划好各种组件,Sass没有大幅度的降低工作量,年后会再试一次。
未来前端应该还会持续演进,让我们的开发成本再低一点点,日子再好过一点点,当然了,这意味着它会继续热下去,直到ES 6普及,我们有类和模块可以用(实际上我们招聘不到搞得懂js原型继承和闭包的程序员),设计师的工具能更好的跟程序员合作的那一天(每天应对不同的分辨率,心情并不好)。
也就是五年之内,都不会“冷静”下来了,好好学新技术,好好招人吧。
别人瞎跟风对自己是好事。
精力是有限的,他去跟风,今天搞这个明天搞那个,你静静的提高你的代码水平和工程水平。当互联网寒冬来的时候,刷掉这一批用框架找工作的孩子,底子扎实的孩子出头之日就到了~
注意,我说的是瞎跟风,如果你的业务需求有更好的解决方案但是你又不知道,这就叫没有跟上技术发展,而不是不瞎跟风~
之前看过一篇文章,写的是作者十几年前开始写前端,到如今却发现前端新出的技术都看不懂了。三十好几的人却要跟十几岁的小屁孩站在同一起跑线上重新再来,如何能竞争得过?
虽然只是入坑两年多,我对此还是感触颇深,前端的技术变化太快了。比如构建工具,13年还是用的ant,14年初grunt火了,14年底是gulp,15年则是webpack。单页面应用,13年是Backbone,14年是angular,15年是React。以上每个工具框架的使用虽然入门耗时不高,但累积起来所花费的学习成本就很可观了。更何况前端这几年产生的轮子还远远不止上面所提到的。
这两年我为学习这些新玩具付出了很多的时间和精力,到头来却发现自己还是当年自己眼中的三流程序猿,没有什么长进,这是很令人沮丧的一件事情。
对于前端中的新技术,没必要每样都亲自去试验。每周扫扫《JavaScript Weekly》,仔细看一两篇自己感兴趣的就够了。等到平时工作中遇到了相同的场景,再去仔细研究下相应的新技术是否能够解决问题,提升工作效率。
前端也是程序员,在掌握好HTML,CSS,JS的前提下,把时间花在算法数据结构,提升代码可维护性等方面上才是比较有意义的。
2016.1.22
更新一下,把自己认为比较重要的一句话挪到前面来
不同的框架产生只是为了满足不同的需求,不是为了产生一个新型的东西统一前端世界所有问题看需求!所有问题看需求!所有问题看需求!重要问题说三遍
---
目前赞数排在第一的匿名说的有部分道理,但我不是全都同意
1. 先说有人说国内不冷静没有造出轮子的事情
国内的前端在整个国际前端社区的影响力到底有多大?BAT社区里比较活跃的就是 A厂和 B 长了。
即便有技术,不是说想造一个轮子就可以造的,造了好轮子就有人用的。围观国内几个大厂,内部经常会出现自己造的不错的轮子,不怎么用,why?举个栗子:阿里云的 ui design,曾经出现过一些交互和设计比 bootstrap 漂亮很多、icon 时尚炫酷,简直提升逼格,为什么不用?因为没人继续维护了。你可以想象一下一直使用的一个依赖的样式框架,突然没人维护了,跟不上你现在的需求变化,你还用吗?当然不了...所有的东西都有维护成本,放眼目前很多人忙着到处跳槽涨工资的情况,人力成本还是非常紧张的,包括厂内紧张的业务节奏,还有很多着急的老板 push,不现实。
2. 前端热炒就真的不好吗?
不见得,很多开发 webapp 的人,不少可能都经历过 jQuery -> backbone -> angular -> react
真的就是脑子一热吗?
当一个页面的逻辑复杂度成倍增长,用户的需求可能变得更加复杂,全部写 jQuery?那会死人的...
MVVM 的 概念,angular 确实是真的改进了一些项目的开发效率。
当我们非常希望数据能保证 immutable 的状态,你能清晰地把握数据流,flux 当然是非常好的选择
抑或你的页面有大量的重用组件,需求能够允许 diff dom 的速度,react 也不错啊
新东西肯定永远都在变化的,想跟上进度不是一直学新框架、学新的库...
而是
从现有知识深入,扎实自己的基础。grunt/gulp,如果只会用,那多没意思,gulp 的任务是怎么并行的?自己打开源码看一看,剖析一下(或者了解个大概),才能更清楚。而不是 grunt 出来我就光学 grunt 怎么配置,gulp 出来我就看看 gulp 怎么写,哪些插件和 grunt 的对应...
好的页面没有定义的,这概念太大了。工程师是为了解决问题的,技能多而扎实固然好,不过真正能
优雅地解决现有问题的才是好工程师
##2016-1-22更新
今天又仔细看了那个排名第一的内容,我发现了一些算是正确的内容,比如新人应该先打好基础。
但我不会改变反对的立场,因为他对于新技术消极的态度是没有正能量的,同时他对于node生态圈的贬低也主要在于没弄清楚node出现的意义。
所以我对他的猜测如下:他是一个主做后端(如java)的,但是对于前端有一定了解,并没有经历过大型web应用的构建,又以为现在的前端还是两年前那个样子。
我想对前端新手和后端转前端的说几句,现在入前端的坑不能算是一个好时机,因为发展速度太快导致脱节会非常严重。新手入门之后的普遍反应是不知道我接下去该学什么。这个问题不好解决,因为对不同的项目有不同的技术原型,并没有一个类似于spring对于java web一样具有标杆性质的项目。
那新手该怎么办?最简单的答案就是“做项目!”找中大型项目做,按照你目前的知识体系去做,做完总结问题,想办法解决问题,问题解决完想办法优化,发张优化不了进行新的技术原型然后重构。一定要想办法做到最好,这样你才会发现,这些新的框架新的工具出现的意义,以及会给你带来什么帮助。
现在的前端市场,牛逼的人继续牛逼,但是菜逼的人却很难变得牛逼,这不是时间能解决的问题了,而是市场决定的结果,在这个大环境下,你必须要学学学,不进步就是退步。共勉~
---------------------以下为原答案
排名第一的那个匿名回答我表示完全无法理解这么多的赞是谁点的?
先不说angular是不是已经被react替代,就angular带来的开发效率提升用过的人都清楚吧?那人说用angular等框架会踩坑,我去你用jquery实现angular实现的复杂功能写的代码多一倍你能保证你没坑?
那哥们说自己很菜,我觉得这是通篇说的最正确的一句话。他应该没做过架构吧?他做的一般都是类似企业站这样没什么前端功能需求的网站吧?但凡来个稍微复杂点的表格处理到时候你是自己写还是用jquery table插件?那个插件源码也有几十k,你确定没坑?
一旦项目复杂起来了势必涉及到设计模式和架构。你用jquery给我实现个好的设计模式我看看?
那些点赞的和评论区支持的人:
如果是刚入门的看到前端百花齐放的技术不知道如何选择,那么我建议你找个大一点的项目一个个实现一次。
如果是做了前端几年的了,那么我建议你换个职业。
如果是后端人员几年前写过一点前端,那么我建议你好好写你的后端代码,你早就跟不上前端的节奏了。
凑个热闹。
所有的互联网项目都有用户界面,而用户界面的实现方法就只有ios/android/web。随着互联网项目的增多,这三种用户界面技术都变得很火。也许在很远的将来,当整个互联网都变慢的时候,web前端自然会变得不温不火
相对于ios和android都是由一家公司控制技术的局面,web前端没有一家公司控制技术,所以出现了百花齐放。给web前端一段时间,好的东西自然会脱颖而出,例如react,而不好的东西自然就被时代抛弃。我们这些从业者,唯一能做的就是努力学习,跟上时代,否则就会被淘汰
在这个过程中,要记得记得一切的辛苦都是为了解决用户的问题,要记得相信数据和逻辑,而不是相信所谓的大神或者潮流
最后用俗套的话给所有从业者自勉,『这是最好的时代 也是最坏的时代』
热得正好,热比冷好,越热越好,工具多选择多,这难道不是好事吗?
跟不上而抱怨迭代快,不会挑而抱怨选择多,不看场景而盲目追新,我怎么感觉这都是怎么选择的问题,不是选项太多的问题。
简单的页面你就简单做,复杂的应用您就试下热门的 mvvm/react 啥的,或者您继续用 jQuery 堆砌,这都没有问题,慢慢踩坑,慢慢补经验。
但是实践出干货,空谈白费劲,省下争论的功夫,多写两行代码吧哪怕只是 todomvc。
=============
目测一下这个问题其实是匿名用户自问自答吧?
“jQuery、requirejs、seajs、grunt、underscorejs、hightchar、moment、bootstrap、zepto、handlebars”
只用过这些,不就是 jQuery + 插件吗?根本还不知道别人在做什么,用在什么场景,要解决什么问题呢,用过,踩过,跌倒过,站起来再抱怨吧。想得太多,做得太少,有此一惑,也是难怪。
2014年的TOIBE,programming language of the year是Javascript,15年是python,所以可以认为那一年是社区的顶峰。
~~~增评第3栏~~~
我也算是服了…关前端何事?编程从来就没冷下来过,有这么多蓬勃发展的新技术是好事。好的技术当用则用,当学则学。少关注用什么,多关注为什么。