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 等框架,你必须得在脑子里建模,图形不参与运算,只用来展示。
13790 次点击
所在节点    程序员
138 条回复
gs139
2018-03-15 11:32:11 +08:00
我也不知道怎么表达了,总之,取一个 dom 的状态:比如边框形式、背景色......等属性。用 jquery 的话,直接从 dom 上取就行,用 vue 必须得在 json 数组元素里增加这些属性来记录边框形式、背景色等状态,然后再在代码逻辑里取这些属性。
gs139
2018-03-15 11:33:45 +08:00
dom 本身参与运算,这不是落后,却恰恰是先进的理念,最直观的表达数据的状态,这是我用 jquery 感觉最爽的地方。
cuqk
2018-03-15 11:33:45 +08:00
点击过后,用 vue 给按钮一个 class,就可以了。
murmur
2018-03-15 11:36:38 +08:00
vue 里你依然可以用原始的 dom 操作 不要把锅甩给 vue
你就算不知道 vue 可以用$ref 给个 id 然后 getElementById 会吧
你如果把握不好 vue 的生命周期 setTimeout 会吧
拿到原始元素了 你想怎么玩怎么玩
zjwshisb
2018-03-15 11:36:59 +08:00
vue 的设计思路跟 jquery 根本就不一样吧
LancerComet
2018-03-15 11:37:14 +08:00
视图是视图对象上的模型的反映,说到底是在操作数据.
codermagefox
2018-03-15 11:38:18 +08:00
'简而言之,jquery 计算页面逻辑就像图形数据库,图形本身是参与运算的,而 vue 等框架,你必须得在脑子里建模,图形不参与运算,只用来展示。'
这是缺点?蛤?
mokeyjay
2018-03-15 11:38:44 +08:00
那你两者一起用不就不好,虽然不怎么优雅,但又不是不能用
思路完全不同的两者有什么可比性?
learnshare
2018-03-15 11:38:46 +08:00
你想的完全错了
MV* 的核心理念是数据模型,UI 只是呈现数据和接收点击、输入等操作的地方

你讲的按钮变成灰色,这个状态应该对应数据中某个按钮的数据变成 disabled = true
UI 上的一切东西都是在呈现数据模型的某个状态,一切数据操作都针对数据模型

UI ?可以当做一张静态图像,不存在也没问题( server-side-render 就是这个概念)
SourceMan
2018-03-15 11:39:46 +08:00
const buttons = [{
data: 100, // 按钮数值
disable: true //用来控制按钮是否可点击
},{
data: 200,
disable: false
}{
data: 300,
disable: true
}]

Vue 这类框架的好处就是数据驱动 UI,你并不需要太关心和操作 UI,数据变更自然会带动 UI 的变更
gs139
2018-03-15 11:40:31 +08:00
@cuqk 如果还需要判断哪个按钮有这个 class,哪个按钮没有 calss 呢?在 vue 里就得给生成这些按钮的数组元素加个属性,用来标记是否被点击。如果有 n 种状态,可能得加 n 种标记。而 jquery 是不需要这样的,直接从 dom 里取状态就行。
picone
2018-03-15 11:42:33 +08:00
gs139
2018-03-15 11:42:45 +08:00
@SourceMan 对,我就是这个意思,vue 必须得在 json 数组里建模,而 jquery 直接在 dom 上建模了,在 dom 上建模是天然的数据可视化,这是优点不是缺点
gs139
2018-03-15 11:43:22 +08:00
jquery 直接操作 dom 是天然的数据可视化。
chairuosen
2018-03-15 11:44:23 +08:00
所以本质到底是颜色是灰色所以不能点击,还是状态是 disabled 所以不能点击?
你这么写代码,后人维护你代码看到一堆 if a 是蓝的 b 是红的,就 xxxx,if c 是黄的,ooooo。WTF ?
bryanly
2018-03-15 11:45:32 +08:00
总感觉在争面向过程和面向对象哪个好
gs139
2018-03-15 11:46:41 +08:00
jquery 这种 ui 直接参与运算,不是缺点,恰恰是优点,把抽象的逻辑直接可视化了。让数据眼睛看得见、手摸的着,这不正是我们追求的吗?连思维导图都不用画了。
binux
2018-03-15 11:50:00 +08:00
明天设计把灰色改成深灰,你要怎么办?
gs139
2018-03-15 11:51:43 +08:00
@binux 灰色还是深灰,直接写在样式表里定义 class,jquery 计算的时候判断有没有这个 class 就行了。
lmqdlr
2018-03-15 11:52:05 +08:00
你这完全没有考虑性能和后期的维护,取 dom 判断颜色和从内存中取数据判断那个性能更好?后期颜色变了呢,需要修改多个地方的颜色值,用 vue.js 只需要修改一处

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

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

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

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

© 2021 V2EX