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 等框架,你必须得在脑子里建模,图形不参与运算,只用来展示。
14356 次点击
所在节点    程序员
138 条回复
gs139
2018-03-15 12:59:07 +08:00
前端就像卫生巾,用完了直接扔(就算你舍不得扔,老是一种操作方式用户也会厌烦,会以为你这个项目没人维护了)

后端就像内裤,用完了可以洗,洗干净了晒干了可以继续用😝
an168bang521
2018-03-15 13:01:08 +08:00
楼主,jQuery 方面,建议你再多熟悉下,
你这 jQuery 用的非常渣啊;
你是用 parent().parent().parent();这么取的值,难道写的时候不觉得蛋疼么??
建议 closest() 这个来替换,
否则 DOM 结构需要修改的话。或者层级变了,那你岂不是要蛋疼死了;
tinytin
2018-03-15 13:02:07 +08:00
视图是数据的提现,操作数据 --> 变更视图。
SuperMild
2018-03-15 13:06:37 +08:00
@gs139 不是前端模仿后端,而是一个功能,以前前端不能做,现在前后端都可以做了,这就给系统架构带来更多选择,在多数情况下,把功能放在前端可以大大地降低服务器的压力,也就是大大地省钱。

在这里面,前端和后端不是对立的,前端和后端的区别根本不是重点,重点是降低成本。
STRRL
2018-03-15 13:07:21 +08:00
前端确实是所谓的"老想模仿后端",引入了越来越多的东西。

但是这些理念确实是正确的,最起码 逻辑清晰
gs139
2018-03-15 13:10:35 +08:00
@an168bang521 那只是打个比方,怎么那么多人咬住 parent().parent().parent()这个细节不放呢?说的好像跟我不会用 closest()似的。

我打这个比方只是要说明,jquery 寻找父元素、子元素很容易,这是 jquery 的强项。


[数据可视化,dom 既是数据,数据既是 dom]
[轻而易举的上溯父元素、查询子元素、查询前后同级元素]


特别是直接把 dom 作为数据,直接应用到 UI 的运算中,这是最大的优点啊!!!数据可视化不是编程界一直追求的吗?怎么把这么好的方案摆在你们面前,你们又去追寻所谓的 mvvm 了?

至于调样式、改风格,用 jquery 也是在 css 文件里改啊。如果界面到了大幅调整的程度,你确定 vue 不是重写?用 vue 重构的时间,jquery 都重写好几遍了。
lihongjie0209
2018-03-15 13:11:09 +08:00
怕是不懂 OO 吧
mkeith
2018-03-15 13:24:09 +08:00
你说了这么多就是现在不会 VUE 也不想学会
luoway
2018-03-15 13:31:12 +08:00
楼主用过 canvas 吗?
canvas 其实就是将数据绘制到 canvas 标签里,根本没有操作 canvas 已经绘制的内容的 API。

楼主一直在说[数据可视化,dom 既是数据,数据既是 dom] ,但是楼主对 DOM 的概念停留在浏览器渲染出来的画面上,而不认为 DOM 是渲染前的数据,是观念上的问题。

DOM ( Document Object Model,文档对象模型),它根本就是一个对象。
fds
2018-03-15 13:32:43 +08:00
vue 就是为了把展示层和数据层分开。如果逻辑很简单,不需要区分就别用嘛。就跟你去马路对面小卖部买个饮料,是不是非要开车呢?是不是得吐槽汽车启动慢还费油呢?
zhwithsweet
2018-03-15 13:36:39 +08:00
别扯淡了,只会 jquery 的前端,找个工作试试。
Biwood
2018-03-15 13:37:15 +08:00
这么萌新的帖子你们回复的真起劲儿,直接忽略不就好了
svenzhao
2018-03-15 13:46:48 +08:00
@gs139 vue 没学好 jq 也没看出来水平多高


先不说中大型的 jquery 项目需要多高的约束条件 和对用人的能力要求.
(如果你觉得 jquery 是一个入门的人就能用好的 后面你也别看了.)


来个实际问题

100 行<li>元素 长轮询动态改变<li>中的视图的较好实践.

你用 jquery 裸写 diff 自己算算多少代码
你要是 js 模板引擎重新渲染算我没问
tailf
2018-03-15 13:48:07 +08:00
楼上这么多人还正儿八经地讨论。。。。。


要我说?


楼主再写两年前端就啥问题没有了,这个问题纯属技术不过关导致的。
ipwx
2018-03-15 13:48:37 +08:00
坦白说吧,楼主你说的恰恰是 Vue 等框架的优点。
Mutoo
2018-03-15 13:51:21 +08:00
DOM 本质上也是一种 Model。跟 VUE 操作的 VNode 没啥区别,只是浏览器渲染 DOM 的时候帮你做好了大量的映射。

再说数据可视化什么的,跟 DOM 没半点关系,非要扯不如直接在 canvas 上画东西呀。或者用 SVG (另一种 DOM )。

jQuery 本身只是一种 query api 而已,跟 vue 也没有什么可比性。vue 和 jQ 本来就可以一起用的,没必要分得一清二楚。
moqiao
2018-03-15 13:54:32 +08:00
一个面向数据,一个面向 DOM。
而且明显面向数据简单的多,解放双手。
moqiao
2018-03-15 13:55:23 +08:00
而且你这种 parent().parent().parent() 的用法,在 jquery 中也是个很不好的方式,代码可读性太差。
crist
2018-03-15 14:05:09 +08:00
简而言之:JQuery 是万能的。
youxiachai
2018-03-15 14:18:09 +08:00
jQuery 就是不如 vue, 你打我啊....

其实..人家项目小,用 jQuery...速度快.好上线..何必强迫人家去学习新方法呢..

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

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

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

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

© 2021 V2EX