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 等框架,你必须得在脑子里建模,图形不参与运算,只用来展示。
14920 次点击
所在节点    程序员
138 条回复
gs139
2018-03-15 14:18:48 +08:00
@moqiao dom 本身作为数据,没什么不好,可视化,随时看到所有数据模型的状态。没有什么不妥的地方。

也可以给 dom 专门加一个 class 用来给 jquery 作识别,这样页面改版的时候也不受影响
dddd1919
2018-03-15 14:20:50 +08:00
jQuery 不如原生的地方:页面还得多引用个 js 包
noe132
2018-03-15 14:26:27 +08:00
我觉得你给个 jq 方便好用具体的例子传到 jsfiddle 上,我们来评判一下是不是真的很好用。懂 vue 的同学可以根据你的例子用 vue 写一遍,你也来评判是不是好用。
gs139
2018-03-15 14:28:36 +08:00
@noe132 好,等我吃完饭就把相关的 Demo 传上去,切磋切磋,是骡子是马,牵出来溜溜
ipwx
2018-03-15 14:42:15 +08:00
@noe132 你这么搞对框架不公平的…… 能够放到 jsfiddle 里面的例子,必然短小到用 jQuery 写也无妨的地步,体现不出框架和数据 /视图分离的重要性。框架只有到项目大到一定程度,各种组件化和达到一定规模的团队参与的时候,才有明显优势。
niubee1
2018-03-15 14:47:32 +08:00
所以搞网页前端的对 MVVM 这类的玩意儿了解不能, 杯具
ghostgril
2018-03-15 14:54:58 +08:00
你对 jquery 和 vue 的理解还不透彻啊,你说的完全可以使用 click.capture 解决,建议多看一些文档再来
ghostgril
2018-03-15 14:58:00 +08:00
.parent().parent().parent()这种代码多了就是灾难
crs0910
2018-03-15 14:58:53 +08:00
我就问问 你的 dom 怎么来的
BlockBlockBlock
2018-03-15 15:00:39 +08:00
以前我年轻气盛的时候,遇到题主这样的问题还会做些无意义的争论,现在的话我都是完全看开了。
正是有那么多不知天高地厚的菜逼,才能让那些虚心好学努力进取的孩子脱颖而出。
ragnaroks
2018-03-15 15:07:19 +08:00
我算是知道为什么我上个星期面试的时候前端总工恨不得让我造飞机了
duan602728596
2018-03-15 15:15:25 +08:00
哎,算了算了,这恐怕是前端被黑的最惨的一次了,我还是回去写我的 react 去了……
jjplay
2018-03-15 15:23:49 +08:00
哈哈哈,今天天气不错哦,可以穿 T 恤了~
你说这跟天气有什么关系?
那 Vue 跟 jQuery 又有什么关系?
fcten
2018-03-15 15:29:22 +08:00
民主制不如君主制的地方:不能一个人说了算
leemove
2018-03-15 15:31:38 +08:00
楼主写的 vue 是不是都是
```js
mounted () {
$().a().b().c()
}
```
omph
2018-03-15 15:41:50 +08:00
楼主的问题挺好的
371657110
2018-03-15 15:45:02 +08:00
vue 也能直接判断 dom..
看你会不会用
WilliamLin
2018-03-15 15:57:46 +08:00
@LancerComet 赞成,dom 上的操作也是为了数据,把数据整理好,做好绑定,非常喜欢这种方式。
DOLLOR
2018-03-15 16:11:33 +08:00
过去我写代码的时候还真的是到处都是 parent().nextUntil().find().filter().last().children().not().siblings(),写起来特有成就感,觉得自己的空间思维特强大,不是么?结果维护起来简直持矢一样,各种业务逻辑跟各种数据模型跟 UI 混合起来,改个结构就要折腾半天到吐血。

直到 MV*出来了,告别各种 selector,不用费劲脑子去遍历 dom 结构,让数据驱动 UI,简直爽爆了。就算产品瞎几把乱改乱挪 UI,也不用担心哪个选择器又断了。

人家的框架目的本来就是为了不让 dom 参与运算,减少 UI 操作对编写业务逻辑的干扰。
banricho
2018-03-15 16:18:15 +08:00
emmmmm 用传统 DOM 思想写 MV* 应用就会出现楼主的问题
不是框架的问题,再多写一段时间就清醒了

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

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

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

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

© 2021 V2EX