这会是 2016 年前端的年末撕逼吗?

2016-12-14 17:04:43 +08:00
 FrankFang128

知乎传送门: https://www.zhihu.com/question/53625252/answer/135820259

利益相关:不认识阿当……用过 Angular 1 、 React 、 Vue 、 SCSS 、 LESS 、 Grunt 、 Gulp 、 Webpack 等一系列有的没的。

前端三大爱好:
1. 语法糖
2. 字符串转换
3. 用别人的框架

现在说 Angular 、 React 或者 Vue 的不好,都是政治不正确滴。

声明,我没说我站在阿当这一边哈。我可是很怕得罪了整个前端界的呢 O(∩_∩)O !。

不过依照中国大部分前端的计算机基础知识素养,能跟阿当正面撕逼的也没多少个。

其实我觉得吧,中国的前端就是认死理,非要给自己带一个「前端」的帽子,生怕别人不知道他只会 JS 。多看看不同意见,多看看别的语言,你会发现 JS 能做的,很少很少。

以下是我自己理解的,以阿当的口吻说的,大家不要以为真的是阿当说的:

2016 年我喷了 Sass 、 React 和 Angular ,被前端各种布道者鄙视,于是我们互相伤害起来。
但我研究的技术可比你们学得这点东西多多了。
我以我的经验,认为这些才流行几年的玩意儿,是值得怀疑的。
1. 有些玩意是高手发明出来给高手用的,小公司的几个前端玩得转?
2. 你们这些布道者只说优点不说缺点是什么意思?安利你听说过没。
所以前端新人们,你们要长点脑子,别听风就是雨。

关于 SCSS 和 LESS

优点你们都吹得那么好,我偏说缺点。
直接能运行在浏览器里的 CSS 你不用,加一道字符串变化在中间挡着,一来增加上手门槛,要学新知识;二来新的语法增加新的复杂度;三来这玩意有传染性,我想用你的代码我就必须也用 SCSS/LESS 。
而且,你 SCSS/LESS 依然没有解决你想要解决的问题呀!
所以我认为弊大于利。

跨界、 CoffeeScript 、 TypeScript 和 ES6

前端你为啥这么在意语法糖?你个前端不好好研究优雅的用户体验,去研究什么语法糖,你忙得过来吗?
CoffeeScript 是 Ruby 社区搞出来的, TypeScript 是 C# 社区搞出来的,它们都是非前端社区的产物,迎合的也是非前端的工程师群体的编程习惯。适不适合前端,走着瞧。
最终你们这些前端看上了 ES6 ,但是你们这些前端在语法还没成型的时候就用 Babel 来转译是不是有点太激进啊?
学学 jQuery ,通过原生 JS 来加语法糖,稳定过渡。你们前端咋这么猴急呢?

关于 Node

Node.js 作者本人就把这玩意儿当个玩具,你们前端居然当个宝。
前端没有拿着玩意写后台,而是那它做脚本。
写写脚本就算了,前端居然还妄图一门语言统一前后端。然后整天布道什么「全栈」。
可是孩子呀,你一个跟 DOM 打交道的人能理解后端那些概念吗?你们就知道个 JS ,连数据库也只喜欢长得像 JSON 的 MongoDB 。
半吊子想当架构师。
你们看看现在有几个公司用 Node 做服务器啊?服务器端 Node 完败。
你们这些不会写 shell 的人就老老实实用 Node 写脚本吧。
但是你们写脚本也要有个限度好不好?看看现在的前端工具流有多复杂了啊。而去年的工具今年你们就抛弃了。
孩子气。

关于跨界、全栈、公司定岗

前端这么乱,不就是因为前端没主见吗,尽听别的圈子扯。
CoffeeScript 是 Ruby 社区的; LESS 也是 Ruby 社区的; Node 的作者就是一个票友,平时根本不用 JS ; Angular 是 Google 的服务端团队搞的; React Native 是为了做原生 App ;全是跨界的!
他们解决的是他们自己的问题,对你有没有用你不想想?
你引入任何一个中间层都会有弊端,你不知道吗?
你用技术要在在乎其缺点。

全栈。
你想做全栈我不反对,但是你要看看公司给不给你机会呀。
你以为你学了 Node 公司就愿意你去开发后台?你有这个能力吗?
你以为你学了 React Native 公司就愿意让你开发 App ?你有这个能力吗?
你真的比得过人家专职团队吗?
全栈是顶级高手团队才有的, Google 、 Facebook 。在小公司还是安心做前端把。

关于前端的核心竞争力

前端你不要拿自己的弱项跟别人的强项比了,找死呀。
你拿 Node.js 跟 Python 后台比得了?他们学起 Node.js 不甩你一条街啊?
你拿 React Native 跟 iOS 开发比得了?他们学起 React Native 不甩你两条街啊?
用 Java 写安卓应用的程序员什么时候找死跟 Java 后台程序员抢饭碗了?
用 C++ 写桌面应用的程序员什么时候找死跟 C++ 服务器程序员抢饭碗了?
就你能啊?
你前端的核心竞争力应该是搞清楚浏览器上面的东西!
HTML 标签、 CSS , JavaScript , Form2.0 、 Websocket 、离线缓存、 Webworker 、 Border-image 、 Canvas ……
这些东西是有难度的。你让一个后端开发写个 CSS 垂直居中并说出优缺点你看他会不会。要想破头啊。这东西靠经验啊。
你不好好看核心,去学一些乱七八糟的是什么意思?
那么什么是核心呢? HTML 、 CSS 和 JavaScript (我认为还有 HTTP )
现在的那些个前端布道师,不讲核心专讲新技术,又是几个意思?

关于 Angular ,后台, SPA

这是给服务器同学用的,如果你的团队以服务器开发人员为主,你再用这个吧。
你们这群没主见的前端,追捧这个干什么?根本就不是给你用的好吗? Angular 2 一升级你是不是又傻眼了,怎么后端又改用 TypeScript 了?
你去追前端基本功呀!
另外 Angular 真的好吗?其实后端程序员可以自己找前端同学封装一些更轻量的框架。(你们前端不行?当我没说)

关于 React

React 组件化的思路,我是认同的。 Flex 的组件化方案比 HTML 不知高到那里去了。 React 组件化 是对 HTML 很好的扩展。
但是 React 太重了,条条框框太多了,把简单事情搞复杂了。
我推崇「轻框架 + 组件化 + 面向对象」。你们不好好改进原来那一套运行得不错的方案,为什么非要去追新,而且还一年换一个星来追。
如果 React 就火个几年,后面的前端新人不学 React ,你这个 React 项目谁来负责?你怎么跟公司交代?用新框架重写?!
你作为个人学习去玩玩 React 我是鼓励的。
关于抽象和面向对象,你真的掌握了吗?封装、继承、多态、设计模式、解耦、 API 设计这些真的都熟练了吗?我接触过的前端,绝大多数同学都毫无概念。来看看我的代码。

关于 SPA 和 Web Site

SPA 不是说你动态加载页面和数据就叫做 SPA 的。 SPA 强调的是功能。你要用新技术做出新的功能。现在中国有几个是真正意义上的 SPA 页面?网页游戏、在线 IDE 、网页版 PhotoShop 之类才是真正的 SPA 。
所以别老是说什么你在做 SPA 。

React Native 和 PhoneGap

不看好。除了开发成本低,没有任何优点。但是哪个公司是因为开发成本低成功的?

关于微信小程序

这玩意既不是 HTML 5 也不是 Native ,不看好。

关于前端的缺人和高薪水

现在前端多,只是因为前端太少,跟新技术没关系。
同时 HTML 5 的应用场景变多了,所以需要更多前端了。
等前端足够多了你再看看你的工资。
最终工资高的,还是基础知识好的人。

写在最后

虽然我写了这么多,但也有可能,全是错的。

握草怎么这么长,中途差点就想关网页了。
你就摘对自己有用的看吧。其实他说的也是有道理的。
而且我跟他的观点是一致的。

26186 次点击
所在节点    JavaScript
239 条回复
quxiangxuanqxx
2016-12-14 23:13:54 +08:00
@murmur 没有不用它们的理由,但是我看好 node 作为后台的能力

难道我用 node 就要把其他后端语言一棍打死吗?

我还是很喜欢 python 的,只不过当脚本用了
jin5354
2016-12-14 23:17:47 +08:00
建议你们去找大公司的 node 团队负责人问问 node 到底有什么用,或者直接上书高层建议把 node 团队拆了。
HuJian201
2016-12-14 23:18:50 +08:00
其它的不讲,我反正是被 jquery 拼字符串恶心过,你让我 jquery 全家我不干。再说 jquery 写的代码基本是不可维护吧?
FrankFang128
2016-12-14 23:20:35 +08:00
@HuJian201 jQuery + Backbone + Marionette 这一套写出的页面还是可以维护的。也有组件、声明周期之类的,就是麻烦许多。
murmur
2016-12-14 23:22:34 +08:00
@HuJian201 可不可维护只跟程序员的素养和公司有没有坚持代码审查有关, react 那么多条条框框照样给你写出不可维护的代码来,如果你说模块化,$.extend 早就做到了啊
quxiangxuanqxx
2016-12-14 23:22:55 +08:00
@FrankFang128 技术火不火我觉得不能评价其作用

同样的,这个世界上本来就没有最好的语言,只有最适合自己和当前环境的语言

计算机技术火一段时间,技术迭代之后几近消失,过一段时间又火起来的例子又不是很少

发展的方向对了,火不火其实也就那么回事

node 出来会让后端语言黯然失色吗?

我倒是觉得这些后端语言相互促进,都学习一些,会让自己感触更深一些

毕竟我们爱的是技术本身
FrankFang128
2016-12-14 23:30:53 +08:00
@quxiangxuanqxx 我只是觉得 Node 没有明显的优势。 要并发有 golang erlang 啊。
唯一优点就是 JS
yangtze
2016-12-14 23:35:06 +08:00
@FrankFang128 当初是信谁说 JS + Node 历史包袱少,入的 JS 坑的
FrankFang128
2016-12-14 23:40:08 +08:00
@yangtze TJ ………
backfrw
2016-12-14 23:43:56 +08:00
趁着人多插个题外话,前辈们能跟我讲讲软考吗。
想知道软考,软件设计师对应届生或者刚入职的新人作用大吗?
目前大四,一直学的 java web 方向
FrankFang128
2016-12-14 23:48:38 +08:00
@backfrw 不贵就考,没坏处
quxiangxuanqxx
2016-12-14 23:52:37 +08:00
@FrankFang128 要并发有 node 啊

优点是看别的语言有没有吗?

难道我跟你一样帅不能算优点吗?

哈哈,开个玩笑
Jafee
2016-12-15 00:14:43 +08:00
不说文章对错,无论如何,作者勇气可嘉,有些话不是谁都敢说的。
FrankFang128
2016-12-15 00:19:06 +08:00
@Jafee 原文巨长巨长,而且逻辑是自洽的,所以总会有几句话是对的
blanu
2016-12-15 00:29:55 +08:00
@FrankFang128 并不自恰
it407841482
2016-12-15 00:33:47 +08:00
哎呀,妈呀,前端菜鸟还在看张鑫旭大神的网站,脑海里仿佛还回荡着他的声音。
FrankFang128
2016-12-15 01:30:33 +08:00
@blanu 虽然他的认识是错误的,但是他的逻辑是基于要学基础,所以其实他每句话都是要学基础。以此排斥新技术。

我的观点是要学基础,同时学习新技术。。。
yunshansimon
2016-12-15 02:09:16 +08:00
@FrankFang128 不同意你的观点。仅仅作为一个懒惰的程序员。如果拿一样的钱,你愿意写 1000 行代码还是愿意写 100 行? js 本身极不完善,加上受限于浏览器,加载时间要求,各种浏览器安全策略,各种浏览器实现的不兼容……写 js 的程序员几乎是所有程序员里面最苦逼的。各种大牛提供的工具,都有相应的应对场景,并不是万能工具。面对不同的要求,选择不同的工具,所有人都知道吧。喷一种工具不是万能的,有什么意义吗?你最多喷因为不明所以将工具用错了地方的人。作者要有时间,可以总结一下,什么情况用什么东西,可能还对前端程序员有所帮助。就我的经验,写 pc 浏览器上运行的 js ,可以放心调用 jQuery ,因为 pc 浏览器运行速度很快,不在乎 jQuery 底下的效率。如果写 mobile 浏览器上的,最好用原生 js 。数据绑定和组件化, vue 1.x 确实做的不错了,性能在 mobile 上也非常不错,可以通用。 bootstrap 的自适应是切小鸡鸡式的自适应,希望精确控制不同屏幕宽度下的网页表现,用 rem 单位长度加媒体选择指令就可以了。 nodejs 的核心不是 es 语法(当然 es6 很舒服),是流( stream )概念,这是我在 php 和 java 里面没见过的。在处理大流量数据非常方便,而且不用考虑缓冲区溢出。即便是 AWS ,都提供使用 node 类似的 js 处理大数据流。学习 nodejs ,可以让你直接使用 es6 编写前端代码(用 babel 编译)(现在 chrome 可以直接执行和调试 es6 了),使用各种前端插件比如 vue , webpack ,即便不用来写后端,也可以使用 jslint 提高自己代码质量。所以,我建议所有前端都要学习 nodejs 命令, npm 命令,会写 package.json 配置项目,会编译和调试自己的前端代码。 nodejs 还支持即时编译加热更新的服务器,这能让前端大大增加工作效率。真不明白,你为什么要喷 nodejs 呢?你看不起 mongodb ,因为你没用过全文搜索,如果你用 php ,产品经理让你搜索多个字段的包含一系列关键字的记录,用 mysql 你怎么写 sql ?就算写出来那性能也是酸爽。 sql 中的字符串匹配 like 跟 json 里面直接使用 regex 比,简直就是搓刀跟自动化车床。对于大数据量搜索, nodejs 支持异步流处理,出来一个结果返回一个,可以中断,不需要更多的数据库指令,也不会阻塞 IO 。 php 加 mysql 如果遇上大量数据返回,只能分页,否则就卡死。这种场景下, nodejs 加 mongodb 就真的如行云流水,非常高效。我没说 php 和 mysql 不好,只是说不同场景下,不同的技术有不同的特点。
wxt2005
2016-12-15 07:21:43 +08:00
别的不想讨论,原来现在那种长度的文章就算是“长得看不完“了吗……
4641585
2016-12-15 08:18:55 +08:00

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/327650

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX