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

分享本人对 Web 前端开发的看法,比较偏门的视角

  •  4
     
  •   civet · 2016-01-17 18:01:51 +08:00 · 6635 次点击
    这是一个创建于 1400 天前的主题,其中的信息可能已经有所发展或是发生改变。
    http://made.withflash.net/2016/01/17/wtf-is-web-development/

    最近郁闷着准备找新工作,充电之余写了点牢骚话
    某些术语用得不太准确,请无视
    因为个人涉足的领域有限,可能某些地方理解较肤浅,比较主观
    但我不是来伤害某些人的感情的,欢迎评论及提 issue
    第 1 条附言  ·  2016-01-17 18:39:48 +08:00
    我认为技术应该要越来越易用,如果技术难用,创意就难实现,如此而已。
    我不是跟大家争论语言问题,不是想引战。
    第 2 条附言  ·  2016-01-18 10:42:19 +08:00
    看了评论,我想到自己写的时候没提及到的是开发人员的“两极分化”,不过要涉及到心理的东西,还是不要扯的太远好了 不太懂
    73 回复  |  直到 2016-02-03 00:20:43 +08:00
        1
    wizardforcel   2016-01-17 18:09:33 +08:00
    flash 漏洞百出 各种本地 io 浏览器沙箱模型碰到它基本就成摆设了 我真不知道 adobe 一家之力是怎么让 flash 活过来的还活得这么好

    另外你要是黑任何一门语言都有理由 比如:

    php 的特性坑和标准库坑太多
    py 版本分裂
    java 语法冗长 标准库接口设计反人类
    c#生态不好 社区太少遇到问题只能找微软
    c++的模板可读性差编译效率低下
    c 语言字符串处理弱 轮子少需要手写数据结构 posix api 还不兼容

    等等等等。。。
        2
    civet   2016-01-17 18:16:36 +08:00
    @wizardforcel 我没打算黑语言。你说 Flash 漏洞百出,你也可以套到任何一个软件上面。因为 Adobe 有做工作,所以 Flash 能活
        3
    jokcy   2016-01-17 18:20:21 +08:00 via Android
    确实理解得比较肤浅,而且很主观~
        4
    wizardforcel   2016-01-17 18:21:02 +08:00
    @civet 从安全中心收到 issue 的数量来看, flash 漏洞的确要多很多。况且 flash 是跟 jvm 一样的平台级的东西,如果 jvm 隔几天就报一个安全问题,你怎么看?
        5
    civet   2016-01-17 18:26:37 +08:00
    @wizardforcel 我理解你的意思就是说,漏洞百出的技术就渣,完毕。没有 HTML5 之前,大家要做网页应用是怎么做的? Java 也有因漏洞问题被屏蔽过的历史,而且大苹果也有份
        6
    jamiefang   2016-01-17 18:32:48 +08:00   ♥ 2
    支持楼主的想法。有不一样的意见挺好。
    我也认为前端在工程化上走火入魔,而忽视从产品和用户的角度发现/解决问题。
        7
    civet   2016-01-17 18:36:13 +08:00
    @jokcy 谢谢。 这里还有一篇老外写的 http://t.cn/R4ptBK0
        8
    wizardforcel   2016-01-17 19:06:06 +08:00   ♥ 1
    好吧。那就忽略你黑 js 的那些话。其实我觉得 js 是个尝试,现在有太多的基于继承的 OO 语言(也就是狭义上的 OO ), js 是个异类,换个口味,不是很好嘛。虽然 js 有些东西的确很渣,但起码是一次尝试,值得鼓励。

    前端 mvc 实际上就是把 b/s 写成 c/s 。模板的组装是肯定要有的,你不在前端组装就在后端组装,工作量是一样的。在前端组装就省了服务端的部分压力。而且这样一来服务端就只需要提供 json 形式的接口,假如以后要开发移动端,后端也不需要变任何东西。
        9
    learnshare   2016-01-17 19:09:35 +08:00
    本来的 Web 是为了呈现内容,现在硬是做成 App 了。
        10
    wizardforcel   2016-01-17 19:16:23 +08:00
    @learnshare 我觉得只是为了呈现内容的话,发明电视就够了,没必要有计算机。计算机就是为了交互而生的。


    @civet 简直黑没黑到点子上。 node.js 的最大黑点就是单线程异步模型。如果把它托管给 apache 或者 nginx ,然后应用这边就相当于是同步的了,代码逻辑也能理顺。作者却拿 node 的包说事,好像 python 写个什么东西都不需要包似的。
        11
    k9982874   2016-01-17 19:16:59 +08:00   ♥ 2
    我赞同撸主的看法,现在的 JS 和几年前的 AS3 很像。

    AS3 让一大波做动画的华丽变身成程序员,拿着超高的薪水,每天制造着垃圾代码。

    现在的 NodeJS 出现让一大波做网页的华丽变身成后端工程师,甚至架构师,还是一样拿着超高的薪水,制造着垃圾产品。

    我不针对 AS3 JS 或 NodeJS ,技术无罪。但是我鄙视那些趁火打劫,拉低整个程序员职业社会地位的乐色。

    libuv 你吃透了么? epoll iocp select 等 io 模型理解了么?
        12
    aivier   2016-01-17 19:45:52 +08:00   ♥ 2
    不是每个公司都会专门去招一个 C++码猴去改 Webkit 核心与网页内容交互

    可以说我是第一个把新技术带给现在所在的公司的前端,在这之前他们是无法想象让自家的网页版应用与系统整合完成一些特殊的功能的

    入门成本低确实会带出来很多只会写 jQuery 的人,但是也不能因此觉得 Web 技术不能做 App 吧,一个人也可以搞定一个网站+客户端了,哪里不好呢?
    如果你是觉得前端写不好代码,那么写后端的大牛还是不要碰界面相关的东西了,审美那么差,写什么界面,难用的要死
        13
    luoway   2016-01-17 20:02:00 +08:00   ♥ 1
    http://made.withflash.net/assets/img/20160117-javascript-everywhere.jpg
    English !

    单页应用能减少页面跳转,这一点就让体验上升了一个层次。
    至于弄丢了的历史记录,加个 route 记录管理就好了。

    web 页面的基础是浏览器, App 的基础是 OS , web 前端所做的这一切工作是为了使 web 体验更接近 App ,并超越 App(无需安装,兼容多平台)。
    说了这么多,怎么实现呢?只有 HTML 、 CSS 、 JavaScript 可以实现上述需求。

    “什么都用 JavaScript 去解决问题”,因为“制作 App 不再需要懂 Java 或者 Objective-C/Swift 了”。
    “也就是说 JavaScript 要升级了”,因为需求膨胀了。
        14
    luoway   2016-01-17 20:03:05 +08:00
        15
    luoway   2016-01-17 20:03:41 +08:00
        16
    chemzqm   2016-01-17 20:10:50 +08:00   ♥ 2
    这个语言一直这样,上限特别高,下限特别低,只不过现在用的人更多了,玩的花样也更多了。
    最近又重温了一下老道的演讲

    只能说讲的实在太好了
        17
    maddot   2016-01-17 20:13:04 +08:00
    那堆东西确实搞起来好麻烦啊,两者比较我宁愿去用 swift 写原生的
        18
    Pastsong   2016-01-17 20:25:24 +08:00
    感觉像是把英文那篇的观点复述了一遍,而且理解还比人家浅...
        19
    civet   2016-01-18 10:05:33 +08:00
    @wizardforcel 说得对, Web 做成 App 的需求是有的,对 App 模式的局限性进行互补。 Flash 早就是用 C/S 模式运作的,我明白 SPA 的意思。但是你说模版肯定要有我不太认同,那是后台开发引入的概念,前端/客户端开发者应该更熟悉的概念应该是 UI 组件,就像 App 开发时用的那些。所以我想吐槽 Angular

    @k9982874 @aivier 本来需要分工的却凑在一块,对应领域相关知识不是说换工具那么简单,要是这样的话给你一把菜刀就能当厨师。一个新技术出来不是不好,往往就是形成了误导之后,各种误用

    @luoway Routing 的概念对应用开发其实不是必须的,那是因为考虑浏览器的问题,前进后退历史这些。 Flex 框架也出现过类似的东西叫 deep linking

    @chemzqm 明智的人当然分得清 Good or Bad 但不是所有人水平都一样,对于 JS 这种弱类型、自由度又异常高的语言,没有规范的前提下ˊ_>ˋ
        20
    civet   2016-01-18 10:11:22 +08:00
    @chemzqm 谢谢你提供视频的视频链接 看来我不应该只说 most popular...
    The World's Most Misunderstood Programming Language 这个头衔更贴切
        21
    whwei   2016-01-18 10:47:30 +08:00   ♥ 1
    “所以,如果你问我 Angular2.0 的前途会怎样,我也不想再过多解释了,用后台开发的思想去控制前端开发, I think ,大多数传统的前端开发人员都水土不服,更别提切图工了^_^”

    @civet ,撸主为什么认为 angular2 是“用后台的开发思想去控制前端开发”?
        22
    oubushixb   2016-01-18 11:09:21 +08:00
    angular bring js to html,相比 react 来说,对切图工更友善甚至是 angular 的一大优点...只关心撸主是否真正使用过 angular
        23
    civet   2016-01-18 11:23:38 +08:00
    @civet 写的有点偏差了抱歉,可能要把 2 个版本统称 Angular ,虽然 2.0 完全是另一回事,但有些核心的东西还是继承 1.x 的。因为对于只做过前端范畴的我来说, Angular 大部分概念都是新的, Web 系统里不是前端就是后端,或者应该说它集合了很多思想。本来这东西只有一定适用范围,不是万金油,过度宣传会造成误导

    我觉得前端的重心是界面表现。 Angular 是一整套很优雅的方案,当要关注一整个“优雅”就会显不出重点,你可以见到大多 Angular 教程是给你默认用 Boostrap 和 Material ,它不会再多的教你如何做好界面。而最终用户看得见摸得着的却是这一层,管你里面多优雅

    此外写之前我做点了功课
    http://www.zhihu.com/question/31509445
    http://www.zhihu.com/question/38571416
        24
    civet   2016-01-18 11:27:21 +08:00
    诶 搞错了- -# @whwei
        25
    starAsh   2016-01-18 12:00:02 +08:00
    @k9982874 既然这么说,我是不是要把整个 V8 都给吃透了才能出师呢,新技术的出现本身就是为了让更多的人去方便使用,所以门槛会越来越低,这个趋势无法阻挡。
        26
    wizardforcel   2016-01-18 12:00:38 +08:00 via Android
    @civet

    使用组件的方法是获取组件,然后设置值。使用模板的方法是设置数据源然后自动绑定。后一种方式虽然反直觉,但 angular 真的比 jquery 少写很多代码。

    再有就是熟练度的问题了,由于思维模式完全不一样,重新适应需要一段时间。我就是因为懒才不愿意从 jq 迁移到 angular 。
        27
    wizardforcel   2016-01-18 12:03:16 +08:00 via Android
    @k9982874 一个语言领域广是好事,门槛低是好事。就像你不能既羡慕 java 社区的繁荣也吐槽 java 程序员水平低。多少好的框架好的思想正是从这么多的垃圾解决方案里整理和抽象出来的。
        28
    wizardforcel   2016-01-18 12:06:42 +08:00 via Android
    @maddot 你是没有在各种语言上编写 gui 程序的经历。 html 再怎么说也是一套规范一种标准,比直接使用各种 gui 库要重新适应 api 还不方便迁移要好得多。

    我不知道 ios 上怎么样,安卓的 xml 和 style 难用的要死,让我选肯定还是 html 。
        29
    shunia   2016-01-18 12:07:32 +08:00
    大部分人没写过 AS3 ,没用过 Flex 吧(像现在使用的 WEB 开发一样的频度和深度)?
    撸主的文章写的有点乱,主题是担心 JS 沦为 AS 一样的下场?
    JS 前端和后端混合这个事(前端可以直接引用 node_module )是挺容易混淆开发人员的开发视野的(低质量程序员),另外 6L 说的工程化也是一个值得深思的问题。
    但是 JS 世界应该不会有和 AS 一样的命运,根源在于大家并不信赖 Flash 依赖的自己实现的浏览器内的虚拟机,当然媒体的妖魔化也是原因之一。但是对于 JS 直接依赖于浏览器这种方式更能接受一些。
    有人说 Flash 一堆 BUG ,这个问题没有考量到: AS 是 Adobe 一个团队在开发和维护,自己实现了几乎全部的核心的功能,它不是开源代码,无法做到把责任分散给开源社区来分担。而 JS 的状态则是 vanilla js 的世界并不是核心,核心是目前充斥开源社区的框架和插件和工具,如果把这些开源社区的 ISSUE 整合起来, BUG 量比 AS 自家产生的 BUG 是只少不多的。

    所以 AS 的问题只是在于它不开源。

    Angular 的 directive ,在写法上和 SilverLight 以及 Mxml 的想法是如出一辙的。
        30
    loading   2016-01-18 12:14:13 +08:00 via Android
    互联网是开放的,由用户决定,而不是技术。
        31
    wizardforcel   2016-01-18 12:20:41 +08:00 via Android
    @shunia 同意。

    js 不会像 as 那样就是因为 js 是 w3c 默认的语言, w3c 和 mozilla 基金会拼死也得维护它。

    flash 的 bug 主要是因为封闭性。所以等 web assembly 完全实现后,浏览器内的 bug 肯定会直线上升。 web 开发者写个 c 语言,弄出个 buffer overflow 简直太容易了。
        32
    maddot   2016-01-18 12:28:38 +08:00
    @wizardforcel 写界面肯定是 HTML , css 方便。但 JS 框架工具那个乱啊,让人望而却步。当然我是那种只想用工具来方便完成事情,不想被工具玩的懒人。
        33
    zongwan   2016-01-18 12:34:48 +08:00
    这不是 civet 大神吗...
    wonderfl 看过您的很多作品...

    还曾经尝试学习过 你制作的播放 midi 的 flash 可惜没有学成...

    flash 挂掉的主要原因之前看了某个文章
    是因为早起 MacOS 乔布斯求 adobe 把行业标准视频处理软件 adobe pr 开发个 MacOS 版本吧
    当时乔布斯被拒绝了

    后来 iPhone 1 的时候 adobe 说 把 flash 加入 iOS 吧 ...乔布斯:呵呵

    -----
    PS:本人对前端接触不多, 也不愿太多
    HTML5 渲染效率太低...
    不过前端做出的很多东西也不是拼效率
    很多轮子 拿来可用 快速成型 才是特点...
    不过因为兼容问题 有历史遗留问题
    没办法和做 AS3 的时候一样愉快的处理

    所以要是我选择的话 应该会是走 iOS 学习 Swift , 附带点 轻量玩后端的知识
        34
    wizardforcel   2016-01-18 12:37:37 +08:00 via Android
    @maddot 是的。所以说 jquery 应该被纳入 w3c 标准,然后就只剩一大堆框架在那儿撕逼了。不想用框架的人直接用原生 api 也能解决问题。
        35
    civet   2016-01-18 12:44:25 +08:00
    @shunia 我想再补充一下说法。

    Flash 没有说过不开源,而是业界一直不接受这么个东西。毕竟 Adobe 不像 Mozilla 这样的组织, Adobe 是个商业公司。曾经 Adobe 将虚拟机捐给 Mozilla ( http://www-archive.mozilla.org/projects/tamarin/),但是这不凑效,而 JS 是没有等 ES4(也等不到)而绕到 5 的。

    而 Adobe 的商业决策也是失利的,他们不懂怎么持久地经营技术。结果让 Flash 身先士卒,让 HTML5 踏着它的尸体前进。但很可惜,很多做 Flash 开发后来都继续去做游戏,做 Web 应用方面并不多。所以我也只好自认是偏门了,但是现在评论面对的是各种功力深厚的大大
        36
    ianva   2016-01-18 14:44:00 +08:00
    “用后台的开发思想去控制前端开发”
    编程领域分什么后台思想前端思想么?解决的问题规模有区别而已
        37
    jokcy   2016-01-18 15:02:41 +08:00 via Android
    @civet so ?我觉得那老外很搞笑~fb 开发 react 是为了解决通知中心的问题?这不过是 fb 在发布会上举个例子~然后我也很奇怪你告诉我有这篇文章是什么目的?证明有个老外跟你一样理解不深又主观?
        38
    jokcy   2016-01-18 15:09:47 +08:00 via Android
    @wizardforcel 你可以试一下只用 jquery 开发大规模应用,你就知道框架有什么用处了。
        39
    exoticknight   2016-01-18 15:16:37 +08:00
    于是其实就是不爽经常用的东西被判死刑?
    虽然我最常用 JavaScript 但是如果有更好的语言我还是毫不犹豫抛弃它
        40
    Wangxf   2016-01-18 15:23:50 +08:00   ♥ 1
    html5+css3+js+jquery+vue.js 基本能覆盖 80%以上的需求了
        41
    ChiangDi   2016-01-18 15:28:53 +08:00 via Android
    不喜欢就不学咯,你是自由的。
        42
    shunia   2016-01-18 15:31:27 +08:00
    @civet
    avm 开源了,但是没有任何引导怎么做 contribution : https://github.com/adobe-flash/avmplus tarmarin 只是部分会被 avm 实现:“...The code will continue to be used by Adobe as part of the ActionScript™ Virtual Machine within Adobe® Flash® Player.”因为它是 ECMAScript4 的核心,并不只是服务于 avm 。
        43
    scarlex   2016-01-18 15:33:40 +08:00
    全文都带着戾气啊,看着像一个 Flash 开发者不甘心看到 JavaScript 飞速发展,而自己的 Flash 却没落了
        44
    wizardforcel   2016-01-18 15:41:00 +08:00 via Android
    @jokcy 我从来都是只用 jq 的。另外轮到我写前端的机会不是很多,没办法尝试。
        45
    civet   2016-01-18 15:42:08 +08:00
    @jokcy 随你怎么理解。 38 楼的回复只说明你断章取义
        46
    civet   2016-01-18 15:54:28 +08:00
    @scarlex 你这样说我真只能笑了。每个人的遭遇不一样
        47
    WildCat   2016-01-18 16:16:45 +08:00 via iPhone
    @jokcy 说 react 是为 iOS 程序员开发的这点也很猎奇
        48
    wizardforcel   2016-01-18 16:32:51 +08:00 via Android
    @civet 其实你是想讨论“数据绑定”这个东西吧(或者叫 mvvm )
        49
    myv2ex   2016-01-18 17:01:50 +08:00
    楼主从一个比较长的软件发展阶段来抒发关于 web 前端开发技术更迭循环的看法,对于我一直在做 C/C++,Java 及相关 C/S 结构所谓的后端开发打拼的人,总是看不清前端到底在折腾神码东西有了更进一步的认识,果然还是有前端的人终于从历史到如今到未来发表了自己的看法,不是一味的好评,值得学习。时代更迭,展示硬件平台的变更加速着软件展示层面的技术更迭,如见的 WebApp 不还是干着早先 Flash , AIR , MFC CDHtmlDialog 所干的事情。最后“ Angular 是吸引 Java 程序员而来”的说法,我只能呵呵了,闲等它被淹没在历史的技术洪流中,而 Java 程序员还是可以作出更好更精彩的东西。
        50
    jokcy   2016-01-18 20:40:29 +08:00 via Android
    @wizardforcel 其实说白了觉得用 jquery 就可以了的就跟用 servlet 就能开发 j2ee 差不多一个意思
        51
    jokcy   2016-01-18 20:45:48 +08:00 via Android
    @civet 彼此彼此吧~对于这种不怎么理解还非得出来发表自己的看法的,就像会写个 jsx 就觉得自己精通 react 了差不多,我也没什么好说的。你搬那老外的文章出来无非就是,“你看,人家老外也是这么说的吧”的意思嘛~我懂,你开心就好
        52
    2osx   2016-01-18 20:50:36 +08:00
        53
    wizardforcel   2016-01-19 10:16:40 +08:00
    @jokcy 不一样。模板和 orm 是必要的。前端的数据绑定是不必要的,因为完全可以转移到后端来做,工作量是一样的,就是绑定的时机不同,以及后端多花一点开销。
        54
    jokcy   2016-01-19 19:51:43 +08:00 via Android
    @wizardforcel 负责任得告诉你,模板和 orm 并不是必要的,有很多方式可以做前后端彻底分离。分离带来的好处不仅仅是让后端少一点花销,流量开销,用户体验提升,不依赖后端之后前端架构的提升带来的开发效率提升都是很重要的点。你以为业界都在吵吵说前后端分离是在玩?所以还是那句话,用 servlet 就能做 http 服务器,何必用 spring ?
        55
    wizardforcel   2016-01-19 20:16:33 +08:00 via Android
    @jokcy 你调用 json 接口也算是依赖后端,后端改接口你前端也得改。对于你们前端来说,只是换个格式写模板而已。

    另外 spring 的 ioc 还真不是必须的,大多数框架根本不带 ioc ,大多数公司也根本用不到 ioc 。都是跟风。
        56
    wizardforcel   2016-01-19 20:18:50 +08:00 via Android
    @jokcy 打个比方,我可以自己写个模板引擎,照样能把 angular 在后端渲染了,而你们根本不需要改动任何开发流程,你信不信?
        57
    jokcy   2016-01-19 20:26:36 +08:00 via Android
    @wizardforcel 什么时候 angular 就是和模板引擎了?你当然可以实现个模板把数据一次性显示出来,然后呢?数据绑定,组建服务?你以为还是在 10 年前前端还是没什么操作的年代?
        58
    wizardforcel   2016-01-19 20:36:33 +08:00 via Android
    @jokcy 数据绑定屏蔽掉,回调的逻辑是正常的,这很简单。

    更何况,你用 angular 就是最开始显示数据的时候痛快,回调呢?回调代码量不是和 jq 一样吗?
        59
    jokcy   2016-01-19 20:43:50 +08:00 via Android
    @wizardforcel [手动 doge],回调代码量一样。。。先不说 promise ,你做一个企业站你写的 java 代码还没一个 spring 的包多呢,你干嘛还用 spring ?
        60
    wizardforcel   2016-01-28 08:15:52 +08:00
    @jokcy

    我这里暂且不吐槽前后端真正“分离”的说法。

    你们前端真是只会用轮子不会造轮子。连 angular 的基本原理都不清楚。呵呵了。

    看来前端视野太局限了,还需要学习一个。[手动 doge]
        61
    wizardforcel   2016-01-28 08:27:30 +08:00
    @jokcy 你睁大眼睛看看是不是一样?

    ```
    // angular
    $http.get(url).success(function(data) {
    $scope.name = data.name;
    $scope.age = data.age;
    $scope.click = function() {...};
    });
    ```

    ```
    // jq
    $.get(url).done(function(data) {
    $('xxx-name').text(data.name);
    $('xxx-age').text(data.age);
    $('xxx-button').click(function() { ... });
    });
    ```

    还 promise , jq 早就支持 promise 了你造吗?
        62
    jokcy   2016-01-28 09:07:01 +08:00
    @wizardforcel 哟,还跟我讨论 angular 的原理呢,你要是知道 angular 原理还能说出来跟 jquery 一样你的脸皮真是厚道原子弹都打不破。你举的例子叫一样?上面的代码能在 view 层复用,下面的代码改个 id 你还能复用么? angular 是 data=>UI 的驱动模型你知道么?看起来像就是一样?“看来前端视野太局限了,还需要学习一个”这句话用在你身上那是再好不过了。不懂别在那装懂,看着都觉得羞耻
        63
    jokcy   2016-01-28 09:09:22 +08:00
    @wizardforcel 还有,举例子举得详细一点,获取数据每个框架都差不多。当然深度的例子估计你也举不出来,毕竟眼界就那样。估计在你看来 react 跟 angular 也就是一个东西,估计你也不知道如何模块化。另外过了这么多天才回复我,是先去学习了 angular 再回来给我举例子吧?这么久还只能举出这样的例子,哎~劝你别玩前端了。
        64
    wizardforcel   2016-01-28 14:08:45 +08:00 via Android
    @jokcy 你前端除了给后端做展示, curd ,还能干嘛?

    我告诉你, mvvm 这种东西在 gui 编程里也有(比如 wpf ),但是不吃香的原因就是前端做的事情都是 curd ,太简单了。 gui 应用(特别是那些功能性的)不存在一个单一的数据源,你想 mvvm 也没办法。也就是你们前端 curd 用 mvvm 方便。

    我以前是做 gui 应用的,维护的应用少说 5 个窗体,多了要十几个,我照样不用任何绑定,就是获取控件然后访问,我完全控制得了。

    说你眼界低还不相信,你知道网页加载完了之后 angular 首先要干嘛吗? angular 不需要遍历 dom 树然后解析双花括号?解析双花括号不是后端模板引擎的做法?你 angular 的语法不是跟 jinja 学的?就知道什么业务逻辑驱动模型,让你写个 parser 估计都跟抽筋似的。你根本没写过这些东西,所以跟你说移植到后端也是对牛弹琴。
        65
    wizardforcel   2016-01-28 14:23:24 +08:00 via Android
    @jokcy angular 的代码还复用呢,笑死我了,把 ng-app 和 ng-controller 一改,连$scope 都取不到了,还复用呢。

    另外我啥时候说过 jq 和 angular 原理一样了?我只是说,数据先用后端模板渲染好,回调用 jq 来做,完全可以实现一样的功能。(实际上这一直是传统 web 的做法)至于你们前端怎么舒服,我是搞后端的管你们干嘛。

    从执行效率来看, angular 的确解放了后端渲染模板的压力。浏览器开缓存的话也可以省一部分流量。

    从开发效率来看,处理数组在 angular 里就是一行赋值,而在 jq 里面,需要写个循环、创建节点、赋值、插入节点。

    但是 so what ?难道大部分网站不迁移至 angular 的原因是这些优点比不过带来的重构成本和学习成本吗?
        66
    jokcy   2016-01-28 14:35:13 +08:00 via Android
    @wizardforcel 噗,还跟 jinja 学的,后端模板引擎一大堆,目的是为了渲染,前端模板引擎也是渲染,看上去当然差不多,但是意义一样么?你用后端引擎能实现前后端分离么?知道为什么要分离么?你公司如果有 app 和网页客户端,用的接口都是类似的,你不分离后端就要多写一套,后端服务化听说过没?

    再次用前端渲染可以做切换效果你用后端模板来个试试?前端渲染可以做更多体验好的交互体验你用后端模板试试?写个 parser 你就高潮了?前端 orm 听说过没?

    还移植到后端,大家都在往前走你偏要往后走,还大喊着你们都走错了我也是醉了,你这么牛逼怎么没见你出个文明全球的开发模式?

    早跟你说你跟不上时代了还不信~呵呵
        67
    wizardforcel   2016-01-28 14:47:57 +08:00 via Android
    @jokcy 问题是我分离也得写两套。一套是静态页面,一套是 json 。这两个东西显然得分配两个路由。

    然后分离之后 req handler 的逻辑是读页面 /数据、刷给 out 。分离之前是读页面、读数据、渲染、刷给 out 。
        68
    wizardforcel   2016-01-28 15:03:31 +08:00 via Android
    @jokcy angular 干的事情就是之前后端模板引擎干的事情,只不过 angular 是遍历 dom 解析的,后端引擎是整块 split 来解析的,我说它是模板引擎,怎么就不对了?

    还数据绑定,有必要搞这么高大上的名词嘛?

    是, view 移到前端是趋势,以后也会有人移植各种语法的引擎到前端来用。“一切东西都会用前端的技术重做一遍”,但是你说是引擎也好,框架也好,他们的发源地是后端。
        69
    jokcy   2016-01-28 15:11:10 +08:00 via Android
    @wizardforcel 分离之后后端就解放了,只要接口设计得好,比如 restful 化之后就不用管调用数据是 web 还是 app ,而且由于接口和业务是解耦的,所以业务变更你的接口基本不需要动,这就是分层的意义。

    如果我理解你的 json 是借口,那么接口就是服务层,定义完之后就不会随着业务变化而变化的。所以等你们公司的网站变成一个两个, aop 出了三个四个,服务只要一个就够了。

    所有东西你都可以看成是读数据,渲染数据,输出。至于能把这些结合成什么样那就是你的本事了
        70
    jokcy   2016-01-28 15:25:40 +08:00 via Android
    @wizardforcel angular 可不只是模板引擎,他还是一个组建化框架,你用 jquery 出一个好的组建化方案看?除了组件化还有模块化,你给我来个?需要我跟你强调一下组件化和模块化的意义么?

    数据绑定有什么不对么,你更新数据 ui 就变化这么叫有错么?是不是你又要跟我扯“实际上不就是模板渲染么”?

    那 react 的虚拟 dom 在你眼里是不是也是模板渲染?知道为什么 react 渲染效率为什么比 angular 好么?

    你难道不知道这些框架出现的目的是为了更好得做更好的产品么?
    “服务器不就是套接字接收网络请求分析内容然后返回数据么”我是不是应该摔给你做后台的这么句话?
        71
    wizardforcel   2016-01-28 15:56:02 +08:00 via Android
    @jokcy

    组件?在正常的开发者眼里,所有程序集都是组件。'angular 是组件,但是 apache 也是组件,这是个非常正确但是没有任何卵用的词。

    前端就不要跟我谈什么模块化了。 html 到现在都不支持 include , es 到 6 才支持 import 。后端开发者一开始就接触架构和模块化,无论是包含还是导入。前端之前非常缺少模块化所以现在格外推崇这个词,但是你叫任何一名前端之外的开发者,他肯定会觉得程序不都是模块化的吗?这有什么。

    所以我就特别讨厌吹捧名词的人,明明是个模板引擎,非得说成“组件化模块化的解决方案”。这种事情我觉得只有不懂代码的媒体才能干的出来。那我把接口说成“软件即服务”,你听着不一样别扭吗?
        72
    jokcy   2016-01-28 16:07:55 +08:00 via Android
    @wizardforcel 哎哟卧槽~100 多 k 的 angular 被说成模板引擎,笑得我胃疼。我也懒得跟你争,前端组件化都不知道,我再说下去也没意义。你继续用你的服务端模板引擎,我用我的 react
        73
    markocen   2016-02-03 00:20:43 +08:00
    JS 为啥现在这么流行,我觉得还有一个原因就是它能快速的将技术转化成利润, 想想一个公司仅用 javascript 一种语言就快速上线一个网站去赚钱,这个吸引力是很大的。
    楼上很多人喷现在很多所谓全栈 JS developer 都是半吊子,但从不懂技术的高层来看他们就是效率很高,所以他们能拿高薪并不奇怪
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1044 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 27ms · UTC 17:57 · PVG 01:57 · LAX 09:57 · JFK 12:57
    ♥ Do have faith in what you're doing.