V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐关注
Meteor
JSLint - a JavaScript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
JavaScript 权威指南第 5 版
Closure: The Definitive Guide
FrankFang128
V2EX  ›  JavaScript

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

  •  
  •   FrankFang128 · 2016-12-14 17:04:43 +08:00 · 26645 次点击
    这是一个创建于 2930 天前的主题,其中的信息可能已经有所发展或是发生改变。

    知乎传送门: 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 的应用场景变多了,所以需要更多前端了。
    等前端足够多了你再看看你的工资。
    最终工资高的,还是基础知识好的人。

    写在最后

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

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

    第 1 条附言  ·  2016-12-14 18:45:38 +08:00
    尤大神微博发言了!应该会发文反击。
    我对尤大神的评价已经准备好了。
    尤大神说的也有道理!支持。

    你现在懂了我的套路了吗?听两种极端的声音,你就会了解真相。
    而不是,站队。
    第 2 条附言  ·  2016-12-14 22:59:57 +08:00
    怎么我成了 V 站运营了。
    回想一下好像是的。
    最近的几篇帖子都是 Top 10 啊。
    不过我的标题取得这么欢乐,你们就一起来吐槽就好了。前端该怎么发展还是怎么发展。痛苦的是前端又不是你对不。
    第 3 条附言  ·  2016-12-14 23:16:46 +08:00
    另外我营造的这么好的欢乐氛围,不要破坏了。马上就圣诞了。🎄
    239 条回复    2017-02-16 17:04:31 +08:00
    1  2  3  
    codespots
        201
    codespots  
       2016-12-15 12:26:40 +08:00
    楼主,我挺认同你的,就像我觉得前端工程师可以尝试下 Node.js ,但是要我个人用可以,但是在公司商业项目中推行,我还是老老实实用 PHP 吧,不是每个团队都有淘宝 UED 的水平的,技术要为业务服务。兼听则明,注重基础,冷静选择技术方案!
    xcatliu
        202
    xcatliu  
       2016-12-15 12:30:26 +08:00 via iPhone
    直接写原生 css 怎么解决浏览器兼容性?
    -o-
    -ms-
    -webkit-
    哪些属性需要这些你记得住吗?

    一些变量和继承的功能是可以用原文中的单独类实现,但是一些数值或计算的需求怎么办?

    觉得 scss/less 学习成本高,可以只用它的一部分功能。上手门槛基本忽略了。

    不能因为一个东西有缺点就不用,你可以只用它的优势部分。
    sammo
        203
    sammo  
       2016-12-15 12:35:56 +08:00
    术业有专攻嘛
    jwdstefanie
        204
    jwdstefanie  
       2016-12-15 12:41:42 +08:00
    Vue 千秋万代 一统江湖
    flybluewolf
        205
    flybluewolf  
       2016-12-15 12:50:35 +08:00
    看完楼主的文章,总结下来“我不是专门针对你,我是说在座的各位都是辣鸡,直接用 010101 编码才是王道”。
    mars0prince
        206
    mars0prince  
       2016-12-15 14:06:53 +08:00
    看第一段就不想看了,语法糖和框架,你以为 java 就少吗? PHP 就少吗? Python 就少吗?盯着 js 喷来喷去,什么鸟心理,说的好像后端都是 0 框架原生代码疯狂敲一样
    iugo
        207
    iugo  
       2016-12-15 14:27:09 +08:00
    然后发现楼主是比较清闲, 上班时间来闲扯.
    holy_sin
        208
    holy_sin  
       2016-12-15 14:30:08 +08:00
    撕起来就好了
    mqtt
        209
    mqtt  
       2016-12-15 14:35:21 +08:00
    react 是最好的 js 框架
    FrankFang128
        210
    FrankFang128  
    OP
       2016-12-15 14:43:17 +08:00 via Android
    @iugo 我自己创业,上啥班
    fundon
        211
    fundon  
       2016-12-15 15:03:51 +08:00
    新人多了解行业风向、趋势准没错,再来有实践会更好。老人一味固守老本,闭关锁国,不利自己,也不利于带队,“没办法你的细胞还在不断更新呢!”
    ppwangs
        212
    ppwangs  
       2016-12-15 15:11:48 +08:00
    编程语言无所谓好坏,他就是一把剑,这把剑耍的好不好,不是看剑锋利与否,而是看耍剑的人技术是否高超~

    @guyskk 其实 Mingge js 基础扎实的很呢~
    Rice
        213
    Rice  
       2016-12-15 15:21:22 +08:00
    对 NODE 批判不了解,对于 sass , react , vue , es6 那段批判完全无法理喻。
    现在我就在维护着一个纯 js+jq+css 做的东西。痛苦啊。
    如果一开始他们是用 react 或 vue 来做,现在根本不会如此痛苦哇。
    murmur
        214
    murmur  
       2016-12-15 15:21:37 +08:00
    @xcatliu 记不住也得记住,这是考点 我被问过 box-model 和 flex 要不要前缀 什么浏览器用什么前缀
    nilai
        215
    nilai  
       2016-12-15 15:51:32 +08:00
    楼主,我挺认同你的
    nine
        216
    nine  
       2016-12-15 16:19:38 +08:00
    我们公司给机会

    位置郑州

    Ruby on Rails
    React + Ant.Design
    Weex
    hololens
        217
    hololens  
       2016-12-15 16:22:39 +08:00
    楼主,我表示你转帖之前动一下脑子。
    somethin
        218
    somethin  
       2016-12-15 16:28:25 +08:00
    全文只有这句话有价值:虽然我写了这么多,但也有可能,全是错的。
    feehey
        219
    feehey  
       2016-12-15 16:43:14 +08:00
    中午刚用 node.js 的文件系统码了一个词法分析器,逃~。
    lijingyu68
        220
    lijingyu68  
       2016-12-15 16:54:28 +08:00
    JS 语法糖多!?
    crayonyi
        221
    crayonyi  
       2016-12-15 17:14:16 +08:00
    应用新技术也是要讲场景。 现在好多前端都是为了技术而技术。
    scgy5555
        222
    scgy5555  
       2016-12-15 17:19:51 +08:00
    反过来说有什么是前端真正值得推荐的?
    浏览器原理吗? ecmaScript 规范细则吗?还是别的什么?
    我倒是觉得撕不起来,因为就没有讨论点。

    楼主说这些技术有问题,某些角度看确实不好,的确现在又回归海洋时代了。
    各种工具层出不穷,各种概念相互碰撞,但使用工具和做什么事没多少关系吧?

    脑子是个好东西,有时间多看看书,多了解几个工具,饿不死。
    yunshansimon
        223
    yunshansimon  
       2016-12-15 21:40:06 +08:00
    @FrankFang128 感觉前端 js 和 html 什么的,本身就没有什么稳定的基础。因为 html 和 js 的规范一直都在变。现在的 es6 跟 10 年前的 js ,除了基本数据类型一样,连写法都大相径庭了(起码不要写分号了)。想要从 js 里面学习写代码的基础,简直就是缘木求鱼。学一门主要语言比如 C , JAVA 什么的,才叫基础吧。脚本类语言都是工具而已。他的目的就在于快速实现。哪个工具能快速实现,哪个就是好工具。简单说,页面布局,最早是 table ,后来微软推 iframe ,再后来是 block/inline ,接着就是 float ,现在是 flex. 哪个才是最佳实践?都是技巧,几乎没有知识。一个以技巧和经验累积起来的东西,能叫基础?跟人家学 C 的,学 JAVA 的,怎么比啊。 java 的虚拟机是统一的, c 的环境的单一的, js 运行的浏览器环境完全是各种残,各种坑。在都是坑的跑道上练习长跑,跑再好也参加不了奥运会吧。我觉得应该这样号召,不会 JAVA 的 js 程序员不是好前端。
    mritd
        224
    mritd  
       2016-12-15 22:49:43 +08:00
    个人观点,跨界装逼结果基本都是悲惨的;前端写后端就是扯淡,后端写前端也是逗逼;如果你能同时写前端后端那么我可以认为 你很牛逼,是个全站,但是如果你准备用一种语言称霸前后端,那么我只能认为 呵呵。。。后端那么多语言都要等死吗? Google 费力搞 Go 是傻逼吗?一线 IT 公司 都是脑残么?

    回到我自己的一贯观点: 永远不要认为自己比别人聪明,发现新大陆的肯定不是你;这不是不思进取,而是量力而行。
    FrankFang128
        225
    FrankFang128  
    OP
       2016-12-15 22:58:14 +08:00 via Android
    @楼上的楼上, 你不能因为一个东西在发展就说它是不好的,十年前的 js 拿到现在的 chrome 一样能运行。你也不能因为一个东西稳定就说他是好的,易语言也很稳定呀。如果你的论点在于 js 这门语言好不好,其实没什么好讨论的,因为没得选。
    invalidtoken
        226
    invalidtoken  
       2016-12-16 00:47:45 +08:00 via iPhone
    有点为了喷而喷的感觉, SCSS/Less 这些虽然只是语法糖,但是如果要写一个稍微大一点的 App 只用面条式的 CSS 明显是不合适的。一个 import 一个请求,没有变量没有层级,没有 Mixin ,没有简单的颜色处理, calc 计算兼容性又不能算非常好...


    NodeJS 虽然很多地方仍然有待发展,但是也带来了很多东西,不用学习一门新语言就可以写简单的工具,也带来了不少 Electron, VSCode 这样优秀的项目和工具
    tyrealgray
        227
    tyrealgray  
       2016-12-16 01:01:25 +08:00
    @yunshansimon 一个程序猿不应该只学 js ,而且同样一开始的时候最好从编译类静态类语言学起。但是不代表你学了这些语言就能很快掌握 js ,反之也是。这不是基础的问题。一个好程序猿不会 java 也可以是好程序猿,只要他对计算机编程的理解到位了就行。
    realpg
        228
    realpg  
       2016-12-16 09:15:44 +08:00
    认同楼主的大部分观点
    当然很多偏激之处过于偏激
    但是现在前端乱象,真的烦死了
    尤其是前端 js ,搞这个的大多不是编程出身,不太会有效的组织代码和规范化。后端代码上,大部分主流程序员,写出来后不依赖文档,别人可以很轻松读懂看懂。写 js 的,见过无数写出来 JS 以后过了三五天自己都读不懂的……
    leisure
        229
    leisure  
       2016-12-16 10:20:28 +08:00
    @nine 什么公司~~
    FrankFang128
        230
    FrankFang128  
    OP
       2016-12-16 10:27:06 +08:00
    @nine Rails 提供 RESTful API 前端用 React 这样么?可有分享,我最近也在这么玩,但是我 Rails 水平一般
    nightYe
        231
    nightYe  
       2016-12-16 10:35:36 +08:00
    吃瓜群众围观
    nine
        232
    nine  
       2016-12-16 12:16:02 +08:00
    @leisure
    民生药业集团
    看我发的招聘贴 https://www.v2ex.com/t/300987#reply15


    @FrankFang128
    目前没有纯分离, react 只是接管了 rails 的绝大部分的 view 层
    用的 react_on_rails 这个 gem 包整合 react 和 rails
    用 npm 管理 js 包

    分享随后会整理,目前项目才走了 2 个月,很多东西还都没到最佳实践。
    backfrw
        233
    backfrw  
       2016-12-17 20:41:27 +08:00
    @wizardoz 恩,感谢解答
    backfrw
        234
    backfrw  
       2016-12-17 20:43:00 +08:00
    @Durandal01 那应届生的竞争力的怎么表现呢?
    adv007
        235
    adv007  
       2016-12-18 06:02:59 +08:00 via iPhone
    不可否认,楼主的确说出了当前前端圈的浮躁,用了那么多框架和工具,不知道其设计思想的大把。大家只是一窝蜂的跟,跟技术无关
    hanbing135
        236
    hanbing135  
       2016-12-18 16:35:33 +08:00
    完全不懂 但是看到一群搞前端的人无原则的纯粹攻击文章作者 让人感觉这些前端自己又能好到哪里去呢
    chenyachao
        237
    chenyachao  
       2016-12-18 20:48:34 +08:00
    回归本质,技术为成果服务。谁能解决问题,谁就可以上阵。至于谁解决的累,谁解决的爽,还是自己知道。
    susucoolsama
        238
    susucoolsama  
       2016-12-19 11:34:45 +08:00
    撕撕撕,不过个人觉得出现新技术总是好事,难不成因为 c java 好,就一辈子用 c java 了?不用用怎么知道?
    wizardforcel
        239
    wizardforcel  
       2017-02-16 17:04:31 +08:00
    node 能干的事情和 python 一样多,区别只是有多少人在用。但是这跟他的功能没多大关系。
    1  2  3  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2918 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 13:52 · PVG 21:52 · LAX 05:52 · JFK 08:52
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.