一些前后端分离的观点

知乎用户:
没必要分太细。我们需要 specialist,但是 senior 的人都应该了解整个 E2E (end-to-end) 过程的。
在 Facebook 我们不分前端和后端,只分 product 和 infrastructure。做 product 的通常都是 full stack,不需要对特定的技术非常精通,但要求学习能力和灵活性足够好,不能只做自己 comfort zone 以内的事情,do whatever it takes to get your product shipped。通常聪明的应届生都会先进入 product,因为他们学什么都很快,也不会说浪费了在某个领域的积累。infrastructure 拥有更多各个领域的 specialist,前端只是其中之一。infrastructure 的客户就是 product,要做的事情就是让 product 开发实际产品时觉得爽,就这么简单。
至于真正 senior 的人,必须了解整个 E2E 过程。这有点像那个「在浏览器地址栏按下回车后都发生了什么」的答案,也就是掌握大局同时了解细节。因为具体的问题可疑扔给 junior 的人去解决,所以 senior 的存在价值就是在众多问题当中寻找值得解决的问题。学过计算机体系结构的人都应该知道,性能优化只应该在瓶颈上做,因为做在非瓶颈上就是浪费资源。同理技术或产品的优化都应该是做在瓶颈上的,所以 senior 的人应该熟悉整套系统并且能够有效找到当前的瓶颈。这时候就不存在前端或者后端的概念了,因为 specialist 在特定领域再精通,不了解整个 E2E 的过程就没办法再往上提升。
@winter

提到「联调」,我想说我很久没听说过这个词了,因为这个词没有对应的英语版本,美国公司的产品开发过程通常不包括联调。product 要做什么,就自己学习对应的技术,学习公司内部的 infrastructure,然后调用公司内部的 API 就可以了。一个产品的逻辑,要分前端和后端两个团队的人实现,然后还要协调实现的结果,这我只在中国公司见过。当然这不仅仅要求公司 infrastructure 好,还要求有开放的文化。
我进 Facebook 之前只写 JS,在 Facebook 要用 PHP 我随便学学就开始写,反正写得不好 code review 时会有人指出。只要保持开放的学习心态,同一个错误不要一犯再犯,别人都乐意帮助你进步。现在我的 PHP/Hack 就仅仅是够用的程度,但这不妨碍我工作。我的工作当然要用到别人的 infrastructure,偶尔用起来有点小不爽,我就会想要改动一下。管它是 Python、Java 还是 C++,反正我不爽就必须亲自研究源代码弄懂了自己该。原本的作者不一定有时间处理我的小需求,我就按照我的理解去改,改好提交 code review,别人都会帮忙看然后提点建议。
所谓联调,无非就是有些事情你自己做不了非要以来于别人帮你做,然后别人就会成为阻塞你的环节。(通常都是前端依赖后端,很少有说后端因为前端没完成就必须停下来等的。)这种做不了就停下来等的态度是不对的,不能说那是别人的问题就等别人解决。总之阻塞了产品发布的问题就是你的问题,无论需要你学习什么新技术,无论需要你编写和调试什么不熟悉的代码,do whatever it takes,just get the product launched。
@齐泰然

那个木工和电工的比喻大致也是对的。在中国公司,这就是木工和电工的分离。在美国公司,有一帮人使用 3D 打印机、激光切割机、数控机床,外加 Arduino 或 Raspberry Pi,迅速把新一代电子产品的原型做出来;还有另外一帮人研究新一代的 3D 打印机,考虑如何让上述 maker 更快地把头脑中的产品原型变为现实。在中国公司,木工和电工整天吵架,木工说电工不把线路板面积确定下来他就没办法做木盒子,电工说他在电动机大小不确定的情况下线路板没办法定稿。

知乎用户:徐飞
意义很大,但是你的问题本身认识有偏差。对于前后端分离,认识上有个误区,那就是很多人自称:我们老早就分离了,全AJAX,使用Angular或者什么什么就可以了。这个说法是不合适的,打个比方,别人问的是“如何解决家禽把蛋生在水草边的问题?”,但实际上人家养的是鸭子,答题的却是养鸡的,所以回答“不让去水边就行了”,这显然不在点子上。这两年业界说的前后端分离,是限于偏展示类的系统(用A代替),而不是应用、管控类Web项目(用B代替),在B类项目里,前后端是天然分离的,对此,除了少部分后端开发人员,基本所有人的认识都是一致的。上一段中这样回答的人一般都是只做B类项目,在B类项目里,前后端分离是共识,不需要讨论。那么,剩下的问题就是讨论A类项目的前后端分离了。这个问题的核心在什么地方呢,在于模板的与数据结合的位置,以及,模板的控制权在谁手里。经过这两年的讨论,基本上我们可以达成的共识就是:模板应当由前端人员去控制,主要原因有两方面:- 性能优化(尤其是外部资源的管理与发布,请求合并等等)- 协作的顺畅性(已形成模板的界面片段的返工等问题)那么,模板到底应该在什么地方跟数据结合?这个问题就比较折腾了,有部分人尝试像B类项目那样,使用js模板,然后在浏览器端执行,这是存在一些问题的,比如说seo不友好,首屏性能不够,尤其对于首页DOM量很大的电商类网站,差距很明显。所以我们还是得把主要的模板放在服务端来执行。在这个过程中,阿里作了一些尝试,那就是引入Node层,在这一层把模板与数据进行合成,然后浏览器拿到的就是生成好的HTML了,但也不是所有HTML都是这么生成好的,还是会有一些内容等到了浏览器之后,再用js去加载和生成。所以这一定会是一个混合方案,同一个系统中存在两种模板,一种在服务端执行,一种在浏览器中执行,互为补充。至于说这个方案中,是否中间层一定要是node,我觉得无所谓,只要是能正常做web项目的东西都可以,这个还是要看所在企业的技术积累方向,当然node做这块是有一些优势的,比如对前端人员的语言友好性,前后端模板的通用性等等,但这些都是细节,重点还是整体方案和流程。这时候回头看你问题中的这句:> 前后端分离的意思是,前后端只通过 JSON 来交流,组件化、工程化不需要依赖后端去实现。我相信你这里对前后端的限定是以浏览器为准的,但事实上,A类项目中,前后端的分界一定要延伸到服务器端的模板层,也就是在这一层里,把各种来源的数据整合到模板中,这个数据未必是JSON格式的,会存在有JSON,XML,特定的二进制等等。组件化这个话题就更复杂了,在刚才组织形式中,很难说出究竟什么才是组件。是某个商品的模板吗?是数据吗?是数据和模板的结合体吗?没法回答。在此,我说一句自己的看法:像电商这种项目的前端部分,基本不存在组件的概念,甚至不存在组件化的价值,因为这里面可复用的东西太少了,也不易提取,大多数东西都是不带逻辑的界面模板。最近因为ReactJS的流行,带来了一个Isomorphic的概念,这是一种很有意义的探索,但是否能解决这类问题,尚不得而知,根据我的理解,它对B类项目是较好的补充方案,但对A类项目暂时还缺乏可用性,因为A类项目中,运行期的DOM变更并不多,多是整片的改变,用这个方案去解决的话,有些牛刀杀鸡的感觉。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,658评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,482评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,213评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,395评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,487评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,523评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,525评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,300评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,753评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,048评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,223评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,905评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,541评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,168评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,417评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,094评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,088评论 2 352

推荐阅读更多精彩内容

  • 前端 前后端分离 这不是一篇纯技术文章,而是一篇分享我个人在前后端分离路上收获的点点滴滴的文章,以此来为准备尝试前...
    寒剑飘零阅读 1,891评论 0 22
  • 尝试与改变 如果你没有尝试过前后端分离的工作流程,那么可以先试想一下这样的流程改变:把流程从PM:“我要这个功能”...
    超人不会飞jjw阅读 3,811评论 1 15
  • 惊鸿一瞥 康桥一别 便是一生
    999zxx阅读 322评论 4 6
  • 有的人知识渊博,成就显赫却为人低调。 相反,有的人知识匮乏,碌碌无为却虚张声势。 我们很难用言语去说服一个厌倦学习...
    Eric_yip阿咩阅读 143评论 0 0
  • 最近,为沟通产品代销,和国内某排名前十券商的营业部总经理一起吃饭,席间谈到该券商的人事任免制度和中国的证券...
    春林CC阅读 226评论 0 0