spa 就做快餐式产品有优势,图开发速度,可以用 mvvm 前端框架,真正打造用户体验好的产品,还是用传统的 iframe 包含页面,加上一些 dom 操作。 其实 dom 操作比虚拟 dom 快多了,直接操作 dom 都是哪里需要变化操作哪里,精准控制,虚拟 dom 是只要一个元素变化,整个区域都重新渲染。
标题说 iframe 和 spa,内容又转到 Virtual DOM;前半句说 dom 操作快没问题,后面那句“Virtual DOM 整个区域都重新渲染”又是错的。
强烈的 Troll 既视感。
现在的互联网啊,特别是中文互联网。人都没有激情了,只只关心对自己有利的东西,不能给自己带来好处的,连讨论都懒得讨论。我今天想钓出来几个较真的人。碰撞出思想的火花。
什么是 SPA?Single Page Application 其核心特点就是通过浏览器提供的 History API(或 fallback 到 hash)来实现非重载且能够持久状态的路由系统,从而达到只需要加载一个静态 HTML 页面就可以作出不限数量的“页面”(确切地说是“视图”)的应用形态。只要能够满足这种形态的,无论其是否是分离架构,也无论其使用了什么框架(或者完全不用框架),更无论其使用的视图渲染技术……它们都是 SPA。
再说虚拟 DOM,这已经快被说烂了还要被拿来继续嚼。首先,用不用虚拟 DOM 跟是不是 SPA 没有丝毫关系!其次,虚拟 DOM 的诞生不是为了比传统操作 DOM 快(尽管很多场景下它的确比传统方式快,不过这个“快”的幅度是要取决于实现的人的),而是为了给越来越复杂的客户端状态管理与视图渲染的同步问题找到一个新的解决方案。如果你认为像 QQ 邮箱的状态管理就能称之为“复杂”,那你得是多没有见识?不要因为那些初心者总是拿框架搞点博客和 Todo 就觉得这些框架就是用来干这些事情的。
虚拟 dom 是只要一个元素变化,整个区域都重新渲染
请不要总是活在几年前,技术总是在进步的,如今的主流渲染机制都能做到精确的节点(DOM NODE)更新了。
不知道你是蠢还是坏,我看到你讲别的技术话题的时候还是有可取之处的,但一说到前端框架和 SPA 就好像跟别人有杀夫夺妻之恨一样。肆意的发泄和传播不尽不实的讯息并不能让你看起来更睿智。就用你说的邮箱来举范例好了,gmail 就是比 QQ 邮箱的状态管理复杂得多的同类应用,而它恰恰就是用了一个 SPA 框架辅以操作 DOM 为视图管理主要机制的框架。若你一定要杠说前者的 UX 没有后者好,那也随你了,本来这就是一个主观性的东西,却拿来评价某种技术的适用性和优缺点,你说是蠢还是坏?
再者说了,就算你这么说鹅厂的人听了也不会给你点赞的,QQ 邮箱不用新的技术栈又不是因为人家不会用或者用不好,而是它的产品形态太稳定了,压根没必要重新实现一遍,让你说的好像同门微信疯狂搞小程序框架就是离经叛道一样。
格局大一点,不甚了解就别总是大放厥词。
总体上非常好,但是里面有 30% 的大字报文字,文字,文革风气要不得。
然后还是说体验,我见到的所有的 spa 应用,都不如直接用这 jquery 或者是 dom 原生操作体验好,大部分 spa 切换界面的时候,都能看见页面的晃动,这是因为该隐藏的那部分隐藏了,该显示的部分还没有显示出来,也就是说,这个切换由框架自动完成的,他总不如原生的 dom 操作衔接的好。
最后说说那个 gmail,当年就是这个家伙,用 ajax 征服了广大码农。我站在一个不懂技术的普通网民的角度去评价一下:他的体验比腾讯邮箱差的太远了。
我认为真正好的产品是在产品层面真正考虑用户的需求,实际解决问题。其次才能谈产品本身的问题。
dom 操作比虚拟 dom 快多了
这是绝对错误,这是绝对错误,这是绝对错误。就拿 React 来说,如果你更新了程序中的某个状态 (state),对应的再浏览器上只会更新对应的节点。虽然所有相关的组件都会走render
但是他们是内存操作,不涉及 DOM 更新也就不会触发浏览器的大量渲染或重绘。还有就是你可以进行优化 (SCU
),甚至连相关的render
都不用触发。
FB 团队那么多大牛的研究真的不是搞着玩的。楼主可以多了解一下新的技术和思想
我看到你讲别的技术话题的时候还是有可取之处的
之前看到楼主在一个帖子说「一般网站不需要考虑一致性,丢些数据也是可以容忍的,半夜关站跑脚本备份就可以」,我就觉得吧没法讨论的,他非要把范围限制到一个很狭隘的领域,既然这样自己喜欢自己用去咯,还有什么值得讨论的。
卧槽,居然还有人说 QQ 邮箱 这个 万年不怎么大更新的东西好,ifame 就是过时的东西。你用 firefox 打开 QQ 邮箱就知道有多么垃圾了。右边一大块留白
dom 操作比虚拟 dom 快多了
这句话不是绝对错误,Virtual DOM 的变更最终是通过 DOM 执行的,流程大致如下:
如果开发者把每个 DOM 操作写到极致,是比 Virtual DOM 更快的,因为少了 Virtual DOM 更新和 Diff 的操作。Virtual DOM 的快是相对之前一些小修改就大片更新的前端框架而言的,Virtual DOM 宣传过程产生偏差导致有的人误解有了 Virtual DOM 就不需要调用 DOM。
但是写到极致的 DOM 操作会非常繁琐,相当于在人工 Diff。我觉得 React 的优势是把 DOM 操作由过程式编程转向声明式编程,避免了人工 Diff。
各位大神,容我留下一爪!楼主本身荒不荒唐,凭我的水平是不敢去评价的。但是从这帖子里,各位大神的回复中,溢出的知识我感受到了,希望这种碰撞的帖子多一些,好让我们这些人多学习一下
看上去楼主犯了蠢,然后被牛人纠正了,旁观者学到了东西,这是不是多赢?
不是的,这类帖子多了,牛人会觉得这个地方讨论环境比较差,总是遇到装蠢的人不得不纠正免得教坏新手,久而久之就会心累离开这个地方,最终损失的是整个社区。毕竟每个人都喜欢和高于自己水平的人讨论,愿意教导谦虚好学的新手,而不是跟巨魔战斗。
这是为什么我对这类装蠢帖子很恼火。
不谈技术,首先你人品就很有问题。人家是台湾人,用台湾用语也值得你喷?反而显得你没见识。就算真是别人打错字,也值得你去喷,一点包容心都没有的吗?