vue 等框架不如 jquery 的地方: dom 无法参与计算,仅仅是用来展示。

2018-03-15 11:29:19 +08:00
 gs139
比方说一排按钮,点击过以后变成灰色,灰色的再点击就不参与计算,用 jquery 的话,直接根据这个按钮的颜色就可以判断是否再参与计算。而 vue,必须得给这个按钮加一个属性,用来记录它的颜色。

这只是个简单的例子,如果是 n 排按钮,按钮要用 div 包裹,点击过后 div 的背景也变色,也要根据这个按钮的父元素 div 的颜色来判断,如果是 n 层 div 嵌套,用 vue 就很复杂了,用 jquery 直接用 parent().parent().parent()向上取父元素的属性即可。

简而言之,jquery 计算页面逻辑就像图形数据库,图形本身是参与运算的,而 vue 等框架,你必须得在脑子里建模,图形不参与运算,只用来展示。
14932 次点击
所在节点    程序员
138 条回复
gouflv
2018-03-15 21:07:56 +08:00
数据可视化应该描述 D3 还差不多,套在 JQ 和 DOM 上很搞笑。。。
sox
2018-03-15 21:12:34 +08:00
理智告诉我,不能鄙视小白
TanJunqiang
2018-03-15 21:32:48 +08:00
数据为什么要和视图长在一起呢
er567
2018-03-16 00:46:43 +08:00
炸出一堆前端送铜币(我也是
msg7086
2018-03-16 02:05:28 +08:00
> 在开发过程中随时可以对这个对象的状态进行手动操作

当楼主还在沉迷于对每个对象手动操作的时候,Vue 程序员们早早地建完了模型写完了组件下班回家打游戏去了。
hlwjia
2018-03-16 02:25:04 +08:00
@msg7086 不知道楼主这样写累不累,我感觉是很累的
msg7086
2018-03-16 02:30:00 +08:00
@hlwjia 其实也不是写得累的问题,主要是可维护性的问题。
写得累点最多也就两三倍时间,可维护性这玩意花掉的可是数十上百倍的时间。
改动一个小功能直接花掉两周,楼主怕不是很快就崩了。
hlwjia
2018-03-16 02:34:36 +08:00
@msg7086 反正写组件我是很乐意的 :D
shynome
2018-03-16 03:06:15 +08:00
我只问一句多窗口同一数据渲染怎么弄?
数据一份更新多窗口同步更新,难道从其他页面中的 Dom 中查找数据,还不是要抽出一个数据源来通知其他页面进行更新
eurokingbai2
2018-03-16 09:14:15 +08:00
MVC 都这样吧
SilentDepth
2018-03-16 09:24:18 +08:00
一个数组生成一个列表,根据请求的数据切换不同元素的不同状态的时候怎么办?
根据数据切换元素的结构(<input> 变 <button> 这种)的时候怎么办?
大量并发数据密集更新同一个元素的时候(性能)怎么办?
需要组件化并引用到多个页面场景的时候怎么办?
写一个内容不确定(需要其他人按要求填充)的组件的时候怎么办?
一个 Object 映射为一堆元素的整合体的时候(更新视图)怎么办?

我想专注于数据,不想思考 DOM 结构的时候怎么办?

---

jQuery 就是一套操作 DOM 的工具,甚至不算框架。当你需要给应用分层的时候,你依然需要基于 jQuery 封装一个「视图层」出来。看看 jQuery 和 Vue 的体积,jQuery 真的有那么大的优势吗?
aokihu
2018-03-16 10:19:51 +08:00
我想说在座的各位都 TM 的是垃圾,没有一个回答到点子上的,首先这个提问者就是一个小白,如果你工作好几年了,那么恭喜你,你一点进步都没有,在座的各位也是
为啥开发了 React 和 VUE 还有 angular 框架,angualr 先不去管他,因为他的设计理念跟那两个不同,但是 React 和 VUE 要解决的就是 DOM 速度慢的问题
React 和 VUE 都是采用了虚拟 DOM 来维护自己的内部状态,虽然为此要多消耗一部分内存,和处理时间,但是跟直接去操作 DOM 来说,快的不是一点点,至少 10 倍的速度是有的,如果你的项目非常大的话,那可能就是 100 倍甚至 1W 倍的差距了。
你以为你改变了 DOM 属性这个操作很简单?你知道 DOM 的全称吗? Document Object Model,看清楚 Document,也就是说你改的只是一个标签,实际计算的是整个标签树,同时还有样式的渲染,布局的计算等等,你如果什么都不懂,直接一个一个去操作 DOM 对象,你知道浏览器被你折磨成什么样子么?而 React 和 VUE 就是将你的数据变化线记录下来,然后通过对比内部的虚拟 DOM,将变化的部分替换到真实的 DOM 树中,这样以来你改变 1W 次,最后操作 DOM 树也就一次而已。如果你知道 document.createfragment()这个 API 应该知道,替换的消耗时间将会远远的少于你直接去一个一个修改节点内容。
你如果是纯展示页面,用 jQuery 没关系,但是你要是处理大量数据的话,使用 jQuery 就是找死了,别人花了 5、6 年时间开发的一个框架,难道还比不上你一个入门者的理解?
codehz
2018-03-16 10:25:18 +08:00
@aokihu #112 讲道理嘛,vue1 的时候还是没有 vdom 的,这个东西只是其中一个理由而已。。。
aokihu
2018-03-16 10:30:25 +08:00
@codehz VUE1 采用的是 Angular 的理念,因此我说了不要提 Angular 了,Angular 采用的是脏数据检查,将数据与 UI 显示同步,他解决的仅仅是数据的同步问题,因此性能上面并没有提升,你可以看看当年 angular+react 的实现,速度是纯 angular 的 100 倍,而 angular2+react 的速度简直就是火箭速度,因此 VUE2 后来改用虚拟 DOM 是很明智的举措,angular 能做的其实 jQuery 有个插件也能实现
SourceMan
2018-03-16 10:36:24 +08:00
@aokihu #112
划重点!!!》》我想说在座的各位都 TM 的是垃圾

大家散了吧,不能有异见的人已入场
lizhenda
2018-03-16 10:38:00 +08:00
此贴反应各自的编程水平,真是赤裸裸啊,是骡子是马看你说的话大概就清除编程思维处于什么水平了
lizhenda
2018-03-16 10:39:23 +08:00
面向过程写多了会蠢的,天天写业务也会目空一切
learnshare
2018-03-16 10:39:40 +08:00
@aokihu React 和 VUE 要解决的就是 DOM 速度慢的问题
这不是写着两个库的主要原因,甚至一开始考虑的根本不是性能问题
shiye515
2018-03-16 10:41:56 +08:00
推荐楼主去关注 真阿当,你们算是臭味相投
crs0910
2018-03-16 10:43:32 +08:00
@aokihu #112 你是在钓鱼吗?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/438267

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX