V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
LinkedIn
djyde
V2EX  ›  程序员

从「后端现在已经看不懂前端了」说起

  djyde ·
djyde · 2020-01-07 21:22:41 +08:00 · 24907 次点击
这是一个创建于 996 天前的主题,其中的信息可能已经有所发展或是发生改变。

原载于我的独立博客: https://lutaonan.com/blog/to-frontend-prejudicers

V2EX 这两天有一篇这样的帖子:《说句实话,我后端现在已经看不懂前端了,太难了》

原文内容是:

看不懂惹,肿么办,最近在学 react,完全抓瞎。

然后又附加了内容:

一直用的 jquery,手动找位置然后对应 dom 操作,现在各种前端各种依赖,一会 route 一会 webpack 的 给爷整蒙了都。

类似这样的帖子多年来数不胜数,但这次评论区的评论比较典型,所以我决定这次不再沉默。当然,本文并非针对帖子作者。

对于那些抱怨前端「看不懂」的网友,我们应该问他们一个问题:为什么前端就应该是谁都能看懂?

这些网友从来不会抱怨别的领域的代码看不懂,比如他们不会说「我一个前端已经看不懂后端了」,或者「我一个后端已经看不懂 iOS 」了。

所以在这些网友心中,前端代码就是要谁都看得懂才是正常的。因为谁都应该看得懂 HTML, 谁都看得懂 CSS.

显然,这群人对前端的认知还活在过去,他们一边享受着用 Web 技术做出来应用,一边意淫着这些包含复杂业务逻辑的 Web 应用靠 HTML 和 Vanilla JS (原生 JS) 就能写成。

换句话说,这群人最大的问题在于,他们意识不到 GUI 开发 (Graphic User Interface Programming) 是一个从图形界面被发明开始就一直在被研究的独立领域,而 Web 前端只是 GUI 开发的其中一个分支而已。

这群人没有意识到到底什么是「前端」。前端就是写 HTML / JavaScript / CSS 吗?不,前端应该泛指那些需要编写 GUI 的技术。在我看来,写 iOS / Android 应用和写 Web 前端没有本质上的区别,区别只是语言和平台,背后处理的问题是一模一样的:如何实现视觉和交互 -> 交互如何触发逻辑 -> 逻辑如何影响视觉的变化

所以,如果认为浏览器识别的是 HTML 所以认为前端应该谁都能看懂、门槛低,进而得出前端目前的工作流是问题复杂化的结果,就如同因为 Android 的 UI 是用 XML 写的就认为 Android 门槛低一样不成立得可笑

对 GUI 开发难点的不了解是导致这种误解的最主要原因,以网友「 avastms 」提出的评论为典型:

这是前端圈长期逆淘汰的结果。

模板混代码里这种 PHP 宗教行为就别提了。

个人认为因为 javascript 语言的部分原因,前端很少有人懂什么是继承,什么是类,实例到底啥意思,更别谈良好维护引用了。

什么 redux,什么 vuex 根本就是莫名其妙,不就是事件监听吗,像 Node.js 那样 EventEmitter 多么清晰,非得自己造概念。

画虎不成反类犬,凡是有这套什么状态管理逻辑的,代码完全不可读。

前端自己也是不争气,不用别人的这些狗概念,自己就不会写代码了吗?

没有什么 redux,自己就不会管理自己的属性了吗?

他说:「模板混代码里这种 PHP 宗教行为就别提了」,想必他在说 JSX. JSX 刚开始出来就充满争议,但人们最终会发现,JSX 是函数式 GUI 开发最易读写的方案。实际上,他完全可以选择不使用 JSX,这样去写代码:

const Component = h(‘div’, null, [h(‘p’, null, ‘hello world’), h(‘p’, null, ‘I am Randy’)])

但是,这位网友大概更愿意读这样的代码:

const Component = (
	<div>
		<p>hello world</p>
		<p>I am Randy</p>
	</div>
)

觉得这样的写法恶心,多数是因为不知道 JSX 这个语法糖的背后是什么。

事实上没有人阻止任何人不用 JSX, 或者看看 Flutter 就大概知道没有 JSX 的 React 会是什么样子。

作为补充,这是希望 Flutter 引入 JSX 的相关讨论:Consider JSX-like as React Native · Issue #15922 · flutter/flutter · GitHub

至于提到的 Redux 和 Vuex, 证明这位网友根本不知道 EventEmitter 和 Reactive 的区别。这里就不展开讨论了。

为什么我们宁愿用 JSX 这种折中方案也不愿意放弃函数式编程,是因为声明式(Declarative) 是编写 GUI 最好的方法。复杂的 GUI 应用包含复杂的状态,人脑在处理复杂的状态绝对不比计算机在行,我们尽可能地把这些状态交给计算机做,函数式编程就是我们实现这个目标的工具。

Elm 的作者写过一篇名叫 Concurrent FRP 的论文,讲述了函数式响应式编程 (Functional Reactive Programming) 在 GUI 开发中的历史背景和应用。

那些喜欢说「 jQuery 一把梭」的网友,要么遇到的业务很简单,要么是在自虐。我见过写外挂用易语言一把梭的,但没听说过 Adobe 写 PhotoShop 用 Visual Basic 一把梭。

有些人,能接受 Maven, Gradle 的不完美,也知道什么场景应该用什么技术栈,但一旦开始写点前端代码,就认为应该有一个神一样的、完美的、还没有学习成本的构建工具,然后 Twitter, V2EX 抱怨一番,却不愿意认真学一学前端这个领域的知识。

不要妄想有一个睡醒就突然会用的构建工具。说实话,Webpack 不需要任何配置就能用,再不行试试号称 zero configuration (零配置) 的 Parcel, 用 TypeScript, 引入 CSS / LESS / SASS 通通不需要配置,跑起来就行。但那又如何呢,那些不愿意学习又想出活的网友们不懂的不是运行 webpack dev 这个命令,而是根本不懂这个命令背后解决的是什么问题。

一个人要锤子锤个钉子,结果大家都说雷神的锤子很牛逼。这个人听了,上来就要用雷神的锤子,结果拿都拿不起来。然后网上发个贴:「根本不懂为什么雷神要搞个这么重的锤子,给爷整蒙了都」。底下评论:「我工具锤一把梭!」楼下再附和:「雷神搞这个锤就是为了装逼」。

奉劝各位,把抱怨转化成求知,没有一个领域是不需要学习成本的,不管是做技术还是技术以外的领域,是分工和市场经济让各位觉得一切理所当然,然而像磨刀这样看上去简单的动作,也不是每个人都能磨好一把刀。

230 条回复    2021-10-28 10:02:18 +08:00
1  2  3  
YuTengjing
    1
YuTengjing  
   2020-01-07 21:30:34 +08:00   ❤️ 34
其实我觉得吧,现在有些人就是没意识到,甚至不愿意承认前端的门槛越来越高了。
搞技术的如果不能持续学习,不愿克服困难,持续探索,真不适合当程序员。
beidounanxizi
    2
beidounanxizi  
   2020-01-07 21:31:08 +08:00
好问题
mikulch
    3
mikulch  
   2020-01-07 21:32:43 +08:00 via iPhone
太长了,先占位再说。
另外找个成都的,5 年以上的高级前端,经验越丰富越好,一起合作做产品。产品需要持续投入精力,所以不太适合迫切需要钱,被迫 996 的朋友,本职工作很忙的朋友。
本人 7 年后端。本职工作不忙,可以持续投入副业。
tyrealgray
    4
tyrealgray  
   2020-01-07 21:37:38 +08:00   ❤️ 1
@YuTengjing 前端门槛一直很低,一个记事本就能写 html。只是上限变高了,越来越多的东西能用 js 写了。
lihongming
    5
lihongming  
   2020-01-07 21:45:15 +08:00 via iPhone   ❤️ 1
楼主说的很好,我也是近期重学前端,准确的说是 reactjs,发现必须抛弃原有知识,当一个全新的领域来学才是最快的。

现代前端技术栈是树状的,学着学着就会发现有个知识点会用到另一个技术,必须单独去学,另一个技术也是这样……如此迭代,整个技术栈学下来丝毫不亚于后端知识体系。但只要静下心来用心去学,一个月时间就能开始做一些东西了,学习能力强的可能一周就够了
murmur
    6
murmur  
   2020-01-07 21:45:41 +08:00   ❤️ 4
vue 是真的简单,然而有些人总是在无脑推荐 react,没办法呀,明明人家的需求就是个内容展示系统,你想着给别人上个墨刀的架构,那能简单就怪了

vue 的框架设计是在玩游乐园,设施就在那里,你怎么玩也不能出游乐园
react 是让你盖游乐园,最后你可能超越迪斯尼,但是提供给你的只有一个地基和施工指南
TheFLY
    7
TheFLY  
   2020-01-07 21:47:46 +08:00   ❤️ 6
结尾对类比恰到好处的精准使用已经预示了楼主未来十年将有一个极其光明的未来。
sagaxu
    8
sagaxu  
   2020-01-07 21:48:42 +08:00 via Android   ❤️ 3
请你体谅一下,他们只是老了。他们年轻时,也曾挥斥方遒,驳斥那些视 jquery 为洪水猛兽的上古神兽。
iMusic
    9
iMusic  
   2020-01-07 21:48:59 +08:00
把前端业务类比房子,把建房子的工具比作前端技术栈

可能以前的任务只是建土胚房,用锄头、瓦刀、锯子等就可以盖起来。现在要求建高楼大厦了,还用原来的工具也许也可以盖的起来,但难度太大了。而用现代机械,可能上手难度比锄头难多了,但是效率肯定比原始工具高。

所以是前端业务的复杂性导致现在这些技术栈的产生,虽然比以前使用的工具学习成本高些,但更适合现在的前端业务。
darmau
    10
darmau  
   2020-01-07 21:50:11 +08:00 via iPhone
@tyrealgray 你咋不说用吸铁石写硬盘呢
dog82
    11
dog82  
   2020-01-07 21:50:20 +08:00
java1.4 一路过来的老程序员,对 java 8 的函数式编程也表示看不懂了,也可能是我变老了,现在转成 Go 语言了
YuTengjing
    12
YuTengjing  
   2020-01-07 21:52:54 +08:00
@tyrealgray #4 也对,换成高水平的前端吧。各种 cli,库,框架将细节封装起来,并且随着时间的推移会还会有更多的细节被掩盖,而平时的开发其实大多数是业务开发,接触不到细节,即便能接触到,没有比较扎实的基本功和持续不断的探索精神也没办法探究下去,很容易导致一直原地踏步。舒适区是很可怕的,如果没有足够的动力,很多人是很难走出也不愿意走出舒适区的。
fkdog
    13
fkdog  
   2020-01-07 21:53:02 +08:00   ❤️ 7
人家说看不懂都只是调侃罢了,真以为学不会呢?
这么跟你说吧,大部分后端,入门一门新东西,大概搭建环境可能也就多点只占 30%左右。
然而前端这边,npm package.json 还算好装,接下去 webpack 和 babel 配置就跟噩梦一样。
好不容易花了大把时间研究文档终于搞出了一个脚手架来,这时候我想用一下类似 antd 之类的第三方 ui 类库,结果发现,要引入一个 ui 类库居然要大改 webpack 和 babel 相关配置。

够折腾
darknoll
    14
darknoll  
   2020-01-07 21:54:44 +08:00 via Android   ❤️ 1
有些后端就是看不起前端,但是有些后端的活真的比前端简单不少。
WildCat
    15
WildCat  
   2020-01-07 21:55:08 +08:00   ❤️ 5
调侃一句,前端也看不懂后端了吧,「中台」「 k8s 」……
ayase252
    16
ayase252  
   2020-01-07 21:55:35 +08:00
@fkdog 不是,引入了一个 antd 需要改 webpack ?
hyrepo
    17
hyrepo  
   2020-01-07 21:58:05 +08:00   ❤️ 1
我不认为业务的复杂性就一定会和技术的复杂性画上等号,最后一段“奉劝各位,把抱怨转化成求知”更是不认同,如果没有抱怨,给什么学什么逆来顺受,那改善和优化从何而来?技术的革新有多少次不是通过对现有技术的吐槽而得来的?
YuTengjing
    18
YuTengjing  
   2020-01-07 22:01:32 +08:00
@darknoll #14 说实话,我觉得大厂的前端应该都会写简单的 CURD。很多招聘信息不都写着至少熟悉一门后端语言。
Martox
    19
Martox  
   2020-01-07 22:03:37 +08:00
@mikulch 接近 4 年前端,进一步说话?三街上班,不算大厂。
Geeker
    20
Geeker  
   2020-01-07 22:04:51 +08:00
@sagaxu 说得真好啊
jiang42
    21
jiang42  
   2020-01-07 22:07:00 +08:00 via iPhone   ❤️ 6
实际上一项技术真的牛逼的话就是应该让傻逼能写出还过得去的代码,比如 Go

我是做 static analysis/formal verification 的,我的愿景就是让傻逼也能会用 sa/fv
YuTengjing
    22
YuTengjing  
   2020-01-07 22:07:08 +08:00
@ayase252 #16 这倒确实要,一般都要使用 babel-plugin-import 插件配置 antd 按需导入,antd-dayjs-webpack-plugin 插件替换 moment 成 dayjs 减少打包体积,还有修改 antd 主题等... 当然了,优化不优化还是看你自己了
hyrepo
    23
hyrepo  
   2020-01-07 22:07:23 +08:00   ❤️ 7
再多说一句,近几年的观察以及亲身经历的感悟是,搞技术的往往很容易因为对某些技术付出了精力就去捍卫这些技术,所以别人说你用的技术有问题时,在你反驳之前请先想一想自己有没有站到一个客观的位置上,你要捍卫的究竟是技术本身还是你自己付出的精力?
orzorzorzorz
    24
orzorzorzorz  
   2020-01-07 22:09:21 +08:00
此时,一名路过的 ng 老年选手正思考着如何吹一吹 vue 和 react,并考虑如何在其中混入 ng 黑以达到更好吹 ng 的效果,且需要吹 rv 吹得有理有据,黑 ng 黑得不带痕迹,带更多人步入老年。
ayase252
    25
ayase252  
   2020-01-07 22:17:11 +08:00
@YuTengjing 当然,做到优化改 webpack 没毛病。但是从学习路径上来说,单纯引入使用这一步还不到改 webpack 的层面。(突然发现 antd 的文档把这个放到 getting started 里面,难怪有人那么吐槽)
Felldeadbird
    26
Felldeadbird  
   2020-01-07 22:18:12 +08:00 via iPhone
所以我有个疑问了。
以前 java,php,asp 都只需要搭建对应的环境,外加非必要的数据库,就可以运行了。

现在换了更专业的前端(公司裁员前端离职了),如果不用对应的工具维护前端的代码(即经过工具打包的代码),能否做到以前那样,开箱即用呢?

这是我这个后端的唯一认为前端门槛提高了的地方。
murmur
    27
murmur  
   2020-01-07 22:20:16 +08:00
@Felldeadbird 能啊,连 node_modules 打包拷给别人就可以,less 是可以,然而 sass 还是啥要二进制文件,我不知道这个东西在不在项目目录里
jtsai
    28
jtsai  
   2020-01-07 22:24:27 +08:00
老问题了, 其实 web 前端比起前些年的爆发现在新东西和概念少了很多, 接近成熟了, 说难也真不难, 繁琐
Raymon111111
    29
Raymon111111  
   2020-01-07 22:28:31 +08:00   ❤️ 2
终于花了半年把框架学会了

结果框架被淘汰大家都用新的

*前端现状*
djyde
    30
djyde  
OP
   2020-01-07 22:29:30 +08:00   ❤️ 5
@Raymon111111 #29 據我所知前端技術棧在 2018 - 2019 已經沒什麼變化了
hantsy
    31
hantsy  
   2020-01-07 22:40:27 +08:00
前端框架流行,要感谢 FF,Chrome 的兴起,不然还停留在 IE6,狗屁框架也用不了。现在新框架几乎不支持 IE 系列了。
shintendo
    32
shintendo  
   2020-01-07 22:41:11 +08:00
@jiang42 vue 就是那个让傻逼写出过得去的代码的东西
guanhui07
    33
guanhui07  
   2020-01-07 22:44:30 +08:00
现在前端就学下 react vue 技能点 挺成熟了吧
tyrealgray
    34
tyrealgray  
   2020-01-07 22:46:58 +08:00
@darmau 能一样吗?
如果是一个程序员,没写过前端有天被叫去写前端凑合的情况大有人在。
反过来可能就不那么现实了,比如让前端从来没搞过嵌入式从头学点焊吗?
murmur
    35
murmur  
   2020-01-07 22:47:24 +08:00
@hantsy 某种意义应该感谢的是 360,通过各种手段推广带 chrome 内核的浏览器
Austaras
    36
Austaras  
   2020-01-07 22:52:17 +08:00
@djyde hook
maomaomao001
    37
maomaomao001  
   2020-01-07 22:52:29 +08:00
@Raymon111111 啥框架要学半年啊 , 这也太神奇了
tun
    38
tun  
   2020-01-07 23:00:41 +08:00 via Android
电脑手机性能越来越好 对功能要求也变高了 性能的快还要展示的好 所以一个全栈是不可能的 开始前后端分离 分离后就可以只研究自己这部分 双方就往两个方向越走越远 这时候后端直接跳到前端的领域一定就是看不懂的
DOLLOR
    39
DOLLOR  
   2020-01-07 23:01:11 +08:00   ❤️ 15
@Raymon111111
今年 2020 年,Vue 6 岁,React 7 岁,Angular 4 岁,webpack 8 岁,Babel 6 岁,TypeScript 8 岁,Electron 7 岁,Node.js 11 岁。

以上东西不会半年就淘汰,反倒是半年都学不成一个东西的人是得担心自己被淘汰了。
Raymon111111
    40
Raymon111111  
   2020-01-07 23:10:09 +08:00
@maomaomao001 所以前端只学工具使用吗?
charlie21
    41
charlie21  
   2020-01-07 23:17:06 +08:00
学习态度问题是无法由被学习的内容本身去纠正的,更无法由 ......
你开心就好
CasualYours
    42
CasualYours  
   2020-01-07 23:20:43 +08:00
刚学习 React 时,官方文档阐述的第一个概念便是 Think in React
LancerEvo
    43
LancerEvo  
   2020-01-07 23:23:11 +08:00   ❤️ 1
楼主这个槽点不太对
那个看不懂前端的后端显然是基础不扎实 react 那么经典简明的设计都看不懂的话 后端估计干的也不怎么样
EPr2hh6LADQWqRVH
    44
EPr2hh6LADQWqRVH  
   2020-01-07 23:41:27 +08:00
我看着你们连我的“代码完全不可读”都读不明白,我也实在是替你们的语文捉鸡啊。
竟还狡辩说复杂系统的代码就不该可读?
你猜 Linux 内核的源码可读不可读?
EPr2hh6LADQWqRVH
    45
EPr2hh6LADQWqRVH  
   2020-01-07 23:42:07 +08:00   ❤️ 6
我发现很多前端觉得现在自己走在函数式编程的康庄大道上,和其他 C 狗 Java 狗不一样,甚至和 jQuery 的前端老油条也不一样,完全属于特立独行,开天辟地,践行着一条没有前人走过的前端特色函数式编程道路,简直就是众人皆醉我独醒。

首先我要来指出一点,纯函数编程,永远也不可能成为主流。 为什么? 因为人类的平均智商还不够!明白了吗。你以为 js 是一种先进的函数式语言吗,别井底之蛙了,出来看看吧,都别提 haskell,一个 scala 都是搬不走的山。

别他们研究人员抛出个大概念,博士们都说好,然后一帮一知半解都谈不上的人,就跟着无脑在下面顶礼膜拜。

而且函数式编程概念一点也不新,他们最早一辈就开拓出来了,js 诞生之初就是函数传来传去的,根本没法用来唬人,好吧。


其次我要说的是,函数式编程和面向对象编程并不冲突,当然它和命令式编程就更不冲突,这其实也是 Scala 那帮人一直在说的。
你会爬了之后,突然听说了有一种移动方式叫蹦,这是不是意味着你就不用掌握走路了?


还有就别再说什么,FP 才是最适合我们前端的 GUI 编程范式,我们这么多人摸着石头走过来的一定没有错,Vue 啦什么 React 啦 jsx 啦,这都是历史的选择,是历史选择了 redux 什么 Vuex 之流来领导我们前端,他们永远是走在时代前面的,不断引领最正确的道路。

要不你问一下各大 GUI 系统的老油条,什么 Windows,X 之流,为什么不用最适合 GUI 编程的 FP 语言?
你猜也是 XML 写 UI 的 Qt,是不是也把模板写代码里然后预编译一下?


你们啊,还是要提升自己的姿势水平啊!
gzwsj95
    46
gzwsj95  
   2020-01-07 23:53:34 +08:00 via iPhone
前排吃瓜
charlieputon
    47
charlieputon  
   2020-01-08 00:10:24 +08:00 via iPhone
还有一些后端( java )说,随便搞搞就可以写安卓了。因为都是用 java
zigzog
    48
zigzog  
   2020-01-08 00:13:26 +08:00 via Android
我是后端,之前有个前端的活没人干,公司也没专业前端,我自己用 jquery 一把梭整了个事件驱动的“框架”,改了几版以后改不动了,全乱了 。
没办法又学了学 vue,然后重写了一遍,感觉好多了 😄
不过前端各种花样真是学不来,前面好不容易把 grunt 搞明白点了,发现又来个 webpack,这个更复杂。。。
wangyzj
    49
wangyzj  
   2020-01-08 00:15:13 +08:00   ❤️ 10
又来引战。。。
我一全干工程师来 BB 几句
首先,前端做好前端的活,后端做好后端的活,来回瞎掺和对自己没好处,现在不是全干工程师时代了,现在要求的是精尖人才
第二,如果只是关注某一个方面的话
后端从最初的 http server+php,java 之类就玩得转到后来分布式,集群,docker,devops,微服务,k8s,之类也是一点点的发展起来的,一个专注后端的人,从 server,数据库到什么 apm,acid 概念都得吃,你让一个前端从 0 开始来搞肯定懵逼,后端人员关注的也一直是服务器数据库性能,分布式事务可靠性等,而那个年代,没智能手机,只有 pc 上网,chrome 刚流行,ie6 还在大面积使用,bootstrap 还可以说是唯一方案,所以后端人员对前端的认识肯定是 jq,html,css,pc 能打开网页,文件只要压缩,甚至对 cdn 需求都没多少。那个年代的后端软件工程概念比较成熟,前端还算是原始社会
从 2009 年开始,v8 出现,nodejs 出现到后来 google 的 angular 出现,然后诞生 react,vue 等,前端压抑的激情得到了释放,尤其是中台概念出现后,前端觉得自己可以取代后端了。包括同时的移动时代到来,spa 应用出现,用户对网页浏览体验要求越来越高。简单的 html css js 堆积无法满足用户极端的需求和软件开发人员的协作效率,win7 开始全面部署 ie11+,各大主流浏览器都符合了 w3c 标准,前端软件工程解决方案就变得无比重要,到后来 es5,6,7 对 JavaScript 语言的优化,使得前端软件工程更加完善,甚至比现在后端还要完善,协作开发,打包,压缩,部署,cdn 一把梭,甚至有需要甚至可以做 nodejs 中间层承接更多请求,前后端协作也更加顺畅,可以说最近 10 年前端变化是质变的。反过来如果让一个后端从 0 开始直接接触 2019 年的前端,绝对是噩梦,但必须要承认的是前端目前的发展路线是必然的,是软件工程的刚性需求。同时过快的发展也带来了很多问题,common,amd,umd 乱糟糟,webpack 和 babel 之流版本一变化就惊出一身冷汗,再加上现在 dart,ts 各种崛起和三大框架不停的打嘴仗,我更希望看到稳定统一一站式的方案出现

归根结底,隔行如隔山,玩好自己的就行,不可能有人完全吃透自己的本行
而且也不用评论谁的好坏,并不是什么先进就一定是对的
要综合考量很多因素。需求,团队构成,成本和企业规划和已有技术栈更重要
v 站也没那么新潮,性冷淡风,不也玩的好好的,满足客户需求最重要
但我发现最近 Livid 好像在研究前端😨

结论
目前的前端是发展的必然产物
想学新东西肯定要花时间
肯定是复杂了,但学会后会很爽,因为更规矩了
后端把你看 k8s 文档时候骂街那劲拿出来啃一下前端肯定学得会的
手动狗头

小透明小见解
轻喷
zhuangzhuang1988
    50
zhuangzhuang1988  
   2020-01-08 00:15:23 +08:00
@avastms 哈哈, 不鼓吹会点 fp 的基础用法, 咋体现优越性
April5
    51
April5  
   2020-01-08 00:20:23 +08:00   ❤️ 3
@avastms 所以说了这么多,大神教教我们什么是前端开发的最佳实践,让大伙摩拜下 o(* ̄▽ ̄*)o
cxyfreedom
    52
cxyfreedom  
   2020-01-08 00:25:08 +08:00 via iPhone
本身这个就不关乎前端和后端,你让前端看前端,后端看后端也会有这种情况。职位不同,公司不同,导致技术栈本身就会有差异。有些技术可以自己学,有些则是自己折腾太费力。要解决什么问题就用什么技术,当你需要的时候不学也要学,否则就被淘汰了。
falcon05
    53
falcon05  
   2020-01-08 00:36:47 +08:00   ❤️ 1
因为原来看得懂,现在看不懂了。你说 iOS, Android,哦,那些原来就看不懂。
EPr2hh6LADQWqRVH
    54
EPr2hh6LADQWqRVH  
   2020-01-08 00:39:38 +08:00
@April5 呵呵,大概就是 Angular 那样吧,多学学,不一定非要用,对你自己有帮助。
q8164305
    55
q8164305  
   2020-01-08 00:42:40 +08:00 via Android
现在前端已经非常稳定了吧,套路就那样,事实上你完全可以用自己的思路开发,react 说白了就是个纯粹的 ui 层,啥 redux 根本不需要
laminux29
    56
laminux29  
   2020-01-08 00:49:39 +08:00
对于后端来说,前端只是麻烦而已,何来难度。

前端不服的话,可以来试试学后端。这可不是从 C++开始学,而是从高数 /物理 /模电 /数电开始学的。
tmachineff
    57
tmachineff  
   2020-01-08 01:09:56 +08:00 via Android   ❤️ 2
工作几年之后还在纠结技术方向,鄙视其他领域的话。你职业生涯大概率也就在搬砖了,并且搬到 35 就搬不过年轻人了
wangyzj
    58
wangyzj  
   2020-01-08 01:21:52 +08:00
@avastms 我也觉得 fp 现在被过分夸大了,快成宗教了
虽说不那么了解 fp 底层
但在我看来 fp 底层就是对类的封装出来的构造函数指针
根本就不是 fp 唯我独尊
而是融合发展,更加向自然语言前进
但再怎么发展依然脱不开 html,js,css
除非万维网大变化
wangyzj
    59
wangyzj  
   2020-01-08 01:22:45 +08:00
@laminux29
入门都不难
深究都不易
hcwhan
    60
hcwhan  
   2020-01-08 01:26:47 +08:00 via Android
说的很好
YenvY
    61
YenvY  
   2020-01-08 03:22:36 +08:00 via Android
其实很中文网络上理科生的莫名优越是一个意思,说是看不懂,其实是看不起
KuroNekoFan
    62
KuroNekoFan  
   2020-01-08 06:20:05 +08:00 via iPhone
看到有人提 qt,觉得挺有意思
现在用 qt 的多吗?感觉都是 electron 吧
(从另一方面说明自绘是没有前途的,别下注 flutter 了
Shazoo
    63
Shazoo  
   2020-01-08 07:48:04 +08:00
@KuroNekoFan 很多。中型厂商开发跨平台商用软件首选,没有之一。

用 electron 和 flutter,等着填坑吧……
loading
    64
loading  
   2020-01-08 07:53:17 +08:00 via Android
所以你发这帖子目的又是啥?点个“忽略主题”不香吗?
bestkayle
    65
bestkayle  
   2020-01-08 07:59:29 +08:00 via iPhone
@hyrepo 主要是国内的各大厂商天天做活动,特别是阿里,京东,美团,不知道国外的那些和游戏无关的软件会不会堆一些无聊的游戏
chinuno
    66
chinuno  
   2020-01-08 08:22:38 +08:00 via Android   ❤️ 4
等下。难道前端追求的是到最后谁也看不懂,或者只有 1%的人能看懂吗?
前端本来就是计算机程序设计的一部分,以前也没分什么前端后端都是一个程序员去搞定的,后面为了节约成本任务细分才出来的前端吧。
你考虑一下这种情况:就不加前端这部分了,单纯说后端。一个后端程序员,过去一年都在写基础库,没有接触到什么 web 框架没有写后端程序对外提供接口。现在工作变动需要重新写后端服务了。为了方便叫他 a 吧。
刚开始写,发现过去一年内出现了好几个 web 框架,而且全世界都在用。网上找找后端服务的源码想参考一下,都是用的这些框架写的。
a 想了想,不就是重新学个框架吗,分分钟上手。他挑选了个看起来好多大项目都在用的 axx 框架准备上手,然后发现文档特别复杂。编译就需要另外装个编译系统,配置上百个参数。打包发布也需要编译系统上再配上百个参数。
看到单纯配置环境就这么麻烦了,他想换个不需要这个编译系统的框架,结果发现全世界的框架配置起来都这么麻烦,最后决定还是用回 axx 框架。
a 找了几个 axx 框架的项目源码想参考一下,发现用 axx 框架还需要学一门新的语言叫做 t 语言。然后编译器再把 t 语言编译成 Java 代码,Java 再编译成字节码在虚拟机运行。a 还算是个求知欲比较强的人,并不抗拒学个新语言。但是项目排期只给了一个月,还要学个新语言项目肯定做不来了。
对比了其他的几个框架,a 另外找了同样许多大厂在用的 rxx 框架。rxx 倒是不需要学新语言了。但是 rxx 还需要写 jxp 文件。a 想了想,jxp 在代码里混合 Java 和 html 不就是以前的 jsp 吗?好不容易都前后端分离了结果现在又把他们搞在一起了?不过又不是不能用,想想剩下半个月的工期,a 还是用了 rxx 开始写程序了。
rxx 的编程思想确实有点与众不同,一套思维方式需要花点时间才能消化。对于聪明的 a 来说不是什么问题,3 天就完全摸懂 rxx 的编程思想了。
a 发现 rxx 虽然用起来不错,但是功能太少啦,许多明明可以集成到框架的基本功能 rxx 都不提供。于是 a 不得不自己进行扩展完善了许多基础功能。这个时候工期剩下一个星期。
a 想着这下终于可以真正开始写业务代码了。这时 rss 订阅列表出来了一篇新文章:“我是如何一星期把项目移植到 vxx 框架的”。a 有点好奇 vxx 又是什么?搜索了一下,发现又是一个新框架,上个星期才刚出来的。gayhub 上一看,最近一星期的新项目已经是 vxx 的天下了,最近一星期只有一个新的项目用了 rxx 框架。
a 看了看网上对 vxx 框架的评论,发现 vxx 并不像 rxx 一样基础功能都要自己实现。看了看自己刚加班那么多天写的 rxx 那些基础扩展,陷入了沉思。。有这么多时间直接用系统 api 写个简单的 socket 监听返回结果都没这么累
April5
    67
April5  
   2020-01-08 08:42:50 +08:00
@chinuno 不让你用 vanilla.js 了???
idealhs
    68
idealhs  
   2020-01-08 08:44:16 +08:00
@tyrealgray 你告诉我笔记本能不能写.java .cpp ?说这种话是脑子有包?
liuxey
    69
liuxey  
   2020-01-08 08:56:58 +08:00
你不是针对帖子作者,你是针对所有人
BacGa
    70
BacGa  
   2020-01-08 08:59:42 +08:00
不要搞语言 前后端 鄙视链了,按工资排名吧,挣得多总是有道理的。
gccdchen
    71
gccdchen  
   2020-01-08 09:09:56 +08:00   ❤️ 1
现在都成体系了,前端有前端的体系,后端有后端的体系,运维有运维的体系.
这样换人就方便了,需要哪些技术栈,面试就那些技术栈.成本风险相对降下来了.
cigarzh
    72
cigarzh  
   2020-01-08 09:11:26 +08:00
说的挺不错
Tdy95
    73
Tdy95  
   2020-01-08 09:17:52 +08:00   ❤️ 1
@chinuno
难道前端追求的是到最后谁也看不懂,或者只有 1%的人能看懂吗?
----------------------------------------------------------------------------
前端的复杂度不是凭空发展,是因为业务复杂度的上升,为了解决业务而产生的解决方案。你要是不会,或者说你没有这些业务场景,完全可以用原生 js 撸一把,既想享受现代前端的便利又不想承担学习成本,是想 pechi 吗。

后面一大段的东西总结下来无非是黑了前端技术迭代快、学习成本高,关于技术迭代,只要不是做一天和尚撞一天钟的程序员,学习曲线并不会陡峭,无非是翻看 api 的时间会多一点。

学习成本高,还是那句话,没那复杂度,您可以原生 js 一把梭,何必自找不痛快。



以前也没分什么前端后端都是一个程序员去搞定的,后面为了节约成本任务细分才出来的前端吧。
-------------------------------------------------------------------------------------------------------------
是因为 web 的发展,由单纯的信息展示转变成平台如博客、社交网站( SNS )、P2P、即时消息( IM )、基于地理消息服务( LBS )等等,承载的复杂度上升,一个工种玩不溜了,才会产生专职的前端。
hyy1995
    74
hyy1995  
   2020-01-08 09:23:04 +08:00   ❤️ 1
写得好,凭什么前端就应该是谁都能看懂。说实话互联网歧视链一直都存在,搞后端的看不起前端,却又不想、不敢承认前端这几年的发展,这类搞歧视的人,经常说的一句话就是:“前端再复杂,也没后端复杂,对比后端就是小儿科”。V 站这种人真心不少,现实中是“全干工程师”,网络上还真把自己当成“全栈工程师”了,会点皮毛前端就敢指点江山,也不看看自己待的是哪家公司,是 BAT 还是 TMD ?还是其他知名公司?


前端所能做的东西越来越多,也一直在变好,跨平台开发、桌面应用、Node.js 等等这些,早就已经不是当年的切图仔了,有些人思想是多陈旧、目光是多狭隘?才会觉得前端就是小儿科。讲道理,说自己“会”前端的后端开发,并且瞧不起前端技术的,大多数只是懂得用 Vue 开发后台系统,直接套 UI 框架那种,稍微深一点的技巧就不会用了,这类人敢说自己不是这点水平?


我是前端,以前在大学做毕业设计的时候,用的是 jQuery+PHP,前后端分离,PHP 没用框架,直接撸的。工作之后我也偶尔帮后端改代码(工作 3 年,对接的后端都是 PHP ),但我从来不敢说自己会后端,因为我会的很皮毛。如果换成是 V 站某些人,会这点皮毛就早把自己当全栈了吧。
hyy1995
    75
hyy1995  
   2020-01-08 09:25:18 +08:00   ❤️ 1
@Tdy95
他那种就是典型的 V 站歧视链选手,“为了节约成本任务细分才出来的前端吧”这种话都能说出来,可见水平。。。现在的 web 需求,有本事 JSP 一把梭,我看他能做出个什么锤子东西来。
zzlove
    76
zzlove  
   2020-01-08 09:28:16 +08:00
@tyrealgray 我也能拿记事本写 java hello world 啊
areless
    77
areless  
   2020-01-08 09:30:25 +08:00 via Android
html 起源于印刷领域。切图才是纯正的 html~~~这些邪道最后都会消失。而 html 不会
duanxianze
    78
duanxianze  
   2020-01-08 09:35:10 +08:00
前端门槛低 但现在上限很高 我认为迟早有一天会统一 所有 GUI 界面 包括手机电脑手表 甚至各种嵌入式设备
toma77
    79
toma77  
   2020-01-08 09:36:07 +08:00
@ayase252 react SSR 要改
FaiChou
    80
FaiChou  
   2020-01-08 09:41:40 +08:00
@avastms
我们公司, 前端 ClojureScript 后台 Clojure, 前后台都 FP . FP 流行起来应该不成问题, 前端 FP 的讨论也越来越多了. 有兴趣多讨论讨论.
nicevar
    81
nicevar  
   2020-01-08 09:45:05 +08:00
@KuroNekoFan 别,Qt 现在还是碾压 Elecron 的,Electron 目前还是写玩具的时代,微软这么强的公司,弄出个 vscode 还经常用着用着卡得要命,别说用来做一些复杂功能的软件了,什么时候可以用来写 Maya 这种软件就可以拿出来吹了
leigou19
    82
leigou19  
   2020-01-08 09:46:20 +08:00
如果是单纯的 crud 本前端也看得懂后端啊,但是追究到什么分布式,事务我就不知道了。对应来说,vue 大部分人猜也能猜出来是干啥的,但是想一步到位弄清楚前端工程化,难道不要付出点学习成本吗
qingsonghe
    83
qingsonghe  
   2020-01-08 09:48:12 +08:00
微软的 office 365 套装,我现在用的多的反而不是客户端,而是 online web 版本。感觉前端开发,整套流程下来,复杂程度和后端是相当的。
no1xsyzy
    84
no1xsyzy  
   2020-01-08 09:52:51 +08:00
@murmur 甚至 React 社区造出的游乐设施 Vue 那边就靠官方抄过去。这个比喻神了。
yaphets666
    85
yaphets666  
   2020-01-08 09:53:04 +08:00
@Felldeadbird 不用对应的工具啊 现在基本不用写 webpack 了 早就集成了...说你们不懂你们还不服气
EPr2hh6LADQWqRVH
    86
EPr2hh6LADQWqRVH  
   2020-01-08 09:53:13 +08:00 via Android
@FaiChou 可以,胆子挺大的
mikulch
    87
mikulch  
   2020-01-08 09:55:21 +08:00
@Martox 看了下老哥你房贷 8k 会不会压力太大了。。。。顶不住什么时候就去大厂 996 挣高工资了。
geying
    88
geying  
   2020-01-08 09:55:22 +08:00
看评论像进了幼儿园 有扯皮的功夫不如摸会鱼

我觉得前端确实是比以前复杂了,但是至少在发展,但是发展归发展,步子不要太大,容易扯着蛋

后端就继续搞好后端,自己的坑还没填完呢,怎么还有精力搞前端(被迫全干的除外)
tachikomachann
    89
tachikomachann  
   2020-01-08 09:55:44 +08:00 via Android
讨厌的是不断地折腾工具和概念,还有娱乐圈似地导出打嘴炮推广。。
sunznx
    90
sunznx  
   2020-01-08 09:56:55 +08:00
模板混代码里这种 PHP 宗教行为就别提了。
现在的 php 也不是模板的啊
nfyig
    91
nfyig  
   2020-01-08 10:00:55 +08:00
@FaiChou 什么公司, 这么牛, 但最终还是编译到 js, 而且异步流程如果用 FP 应该不是很好处理
Felldeadbird
    92
Felldeadbird  
   2020-01-08 10:04:31 +08:00
@yaphets666 就是变复杂,学习成本大了。以前后端可以兼职前端。现在前端打包后的成品,如果不部署对应开发工具,在成品修改的话,不专业呀。开发环境部署完毕后,还要学习多一套新语法。后端估计大部分连 es6 语法都没弄懂。看了半天,看得一头雾水。如果在看 typescript……所以回到正文:后端现在已经看不到前端。 不正是如此吗?
JJmou
    93
JJmou  
   2020-01-08 10:05:42 +08:00
@mikulch 4 年前端可以吗,这是需要上班还是利用闲暇时间做
ben1024
    94
ben1024  
   2020-01-08 10:08:25 +08:00
[JSX is similar to another extension syntax created by Facebook for PHP called XHP.]( https://en.wikipedia.org/wiki/React_(web_framework)#JSX)

PHP 的嵌入模板在纯展示层还是舒服些
arraysnow
    95
arraysnow  
   2020-01-08 10:10:12 +08:00   ❤️ 1
@hyrepo 屁股坐歪了。
楼主要说的是,不要因为某个领域难以入手就去讽刺+鄙视整个行业(前端真的难入手吗?),前端早已不像当初全干程序员一把梭的时代,现在由于业务和平台的复杂已经细分为一个行业了。这就像因为机器学习入门难就去吐槽 tensorflow 不好使,而大部分程序员对 ml 认知还处在“协同过滤”“国际象棋”这两个名词。
承认现实远比回避来的实在,至于技术革新,先把姿态摆正才有谈的意义
wenzichel
    96
wenzichel  
   2020-01-08 10:21:33 +08:00
术业有专攻,为什么前端的东西,一定要让后端看懂
no1xsyzy
    97
no1xsyzy  
   2020-01-08 10:25:58 +08:00
@wangyzj #58 编程范式的改变改变的就是上层接口,而不是底层实现啊,V8 还是 C 实现的呢,C 既不是函数式(无闭包)也不是面向对象(勉强做出来 cls_method(obj, args...),这些函数仍然在唯一命名空间)。而且相当多的文章讲闭包直接描述为 “闭包对象”。
另一方面,PG 写过一篇简单实现 CLOS 的。反过来说,这样考虑也没什么问题:类就是生成对象的函数,而对象就是含有一个闭包并设计了消息入口的函数。传统的杯子例子:


发展目标不应该,至少大部分会去主动判断 “应该不应该” 的人都声称不应该是走向自然语言。

另外,js 可能可被 wasm 抛弃,但目前 wasm 使用量极少,大部分还是用于骇客目的,其次是混淆。
murmur
    98
murmur  
   2020-01-08 10:28:48 +08:00
@no1xsyzy 开源社区互相借鉴有什么不好么,vue 还借鉴了 ng 呢,google 那个 ng 喷子已经被开除了
yanguangs
    99
yanguangs  
   2020-01-08 10:33:04 +08:00
@Felldeadbird
ts 对于后端来说没什么难度吧,反而不了解的是前端的打包,配置项这一块.
我接触的很多前端,反而对 ts 一开始是很不适应的.
onfuns
    100
onfuns  
   2020-01-08 10:34:59 +08:00
我一直认为前端后端都是只是一种语言的实现,而不是局限于岗位。
再说了鄙视链不是一直都有吗?底层 > 算法 > 后端 > 前端 > 测试 > 运维 > 产品。
只要技术存在一天,有岗位需求,那么鄙视链一直存在,就像洋大人比自己人高一等的感觉。
1  2  3  
关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1427 人在线   最高记录 5497   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 67ms · UTC 17:59 · PVG 01:59 · LAX 10:59 · JFK 13:59
Developed with CodeLauncher
♥ Do have faith in what you're doing.