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 等框架,你必须得在脑子里建模,图形不参与运算,只用来展示。
13831 次点击
所在节点    程序员
138 条回复
1010011010
2018-03-15 11:54:05 +08:00
搞反了
按钮的 disabled 属性 决定它是不是灰色,也决定它能不能被操作;而不是因为它是灰色所以不能操作
jeremaihloo
2018-03-15 11:56:16 +08:00
jquery 怎么做单元测试?我不太懂?
gs139
2018-03-15 11:56:18 +08:00
@lmqdlr 见 19 楼,把颜色写在 css 里,jquery 只添加或判断 dom 是否有某个 class。至于性能,jquery 能保证只修改这一个 dom,vue 还得再虚拟 dom 里模拟一遍,还说不准谁比谁快呢。
gs139
2018-03-15 11:58:23 +08:00
@jeremaihloo 对 ui 操作部分做单元测试?你确定有比按键精灵更合适的吗?
binux
2018-03-15 11:58:51 +08:00
@gs139 那后天设计不但要改颜色,还要将按钮设置为无效,并且在旁边加一行小字怎么办?
otakustay
2018-03-15 12:00:35 +08:00
天然地可视化逻辑哈哈哈…… Vue 不就是给了你 data 做成天然可视化的功能吗
xiaojie668329
2018-03-15 12:01:26 +08:00
你熟悉 jquery,自己偏好操作 dom,所以觉得在这些方面 vue 不如 jquery。你说的那些 vue 都能做到而且并不复杂性能也许更好,你非要说不能操作 dom 所以它不好。人家设计思想本来就尽量不要操作 dom。
weifding
2018-03-15 12:04:47 +08:00
vue 要渲染,jquery 操作是渲染好的 ui,这没得比啊。只能说先后的问题。楼主你太认真了。哈哈。
xylophone21
2018-03-15 12:09:36 +08:00
我倒觉得这是优势,避免错误的使用是 feature,不是缺点。
lukunlin
2018-03-15 12:10:43 +08:00
都不了解 vue 的原理,还有 JQ 的分类,就好意思来这里说- - !
vue 是作为 mvvm 的框架提供的,
jquery 只是一个插件提供了很多公用方法,而已,两者不一样好吗~
xianxiaobo
2018-03-15 12:13:45 +08:00
dom 的缺点就是改 dom 的时候,dom 是很有可能修改的,比如改需求。所以不能绑定在 dom 上,绑在 class 上更好。而 class 一般和 css 是有关系的,所以绑在自定义属性上更好。所以后面的这些框架都用属性来绑定数据的。
notreami
2018-03-15 12:19:59 +08:00
所以,我一直强调,除非重客户端,否则用这些框架就是人多太闲。
notreami
2018-03-15 12:22:29 +08:00
作为后端,比较烦得一件事。就是这些前端玩意(包括各类前端组件库),后端渲染居然不支持后端语言( java、C#、python、PHP 等)
coolzjy
2018-03-15 12:31:16 +08:00
Java、C# 不如 纸带 的地方:机器码无法参与编辑,仅仅是用来执行。
duan602728596
2018-03-15 12:35:12 +08:00
数据的不同状态对应不同的样式,
而不是根据样式的状态来判断数据的状态,这是以前没有 mvvm 框架的时候不得不这么做。
数据是核心。
不用 mvvm 框架之前,是在修改数据的同时要修改 dom 的样式,而框架帮你省略了修改 dom 这个步骤。
IvanLi127
2018-03-15 12:39:13 +08:00
你这数据源就不对,没理解 vue。当然,vue 能实现你想要的
gs139
2018-03-15 12:45:05 +08:00
@duan602728596 你以前用 jquery 的时候还用 javascript 自己建一套模型?你这姿势不对啊大哥,用 jQuery 的时候,dom 既是数据,可以理解成可视化的数据库。你没有理解 jquery 的精髓。
des
2018-03-15 12:46:31 +08:00
建议先去了解下前端 mvvm 之类出现的原因再来说这个会比较好
des
2018-03-15 12:49:30 +08:00
就拿 parent().parent().parent() 来说。
如果是结构复杂而且经常要改,你就等着哭吧
gs139
2018-03-15 12:55:39 +08:00
@des “结构复杂,经常要改”,说的就跟 vue 可以一键重构似的。如果前端界面修改很大,不管用哪种框架,都很麻烦,麻烦到一定程度.......直接重写。

前端界犯的一个大错就是老是想模仿后端,前端跟后端不一样的,不管是从技术实现还是现实需求,前端不可能像后端那样一个项目有几年的积累。

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

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

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

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

© 2021 V2EX