对Vuejs框架“渐进式”的理解

Vue渐进式-先使用Vue的核心库,再根据你的需要的功能再去逐渐增加加相应的插件

转载自网上的一些答案,文末标注了出处。


在我看来,渐进式代表的含义是:主张最少。
每个框架都不可避免的会有自己的一些特点,从而会对使用者有一定的要求,这些要求就是主张,主张有强有弱,他的强势程度会影响在业务开发中的使用方式。
比如Angular,他两个版本都是强主张的,如果你用它,必须接受一下东西:

  • 必须使用它的模块机制
  • 必须使用他的依赖注入
  • 必须使用它的特殊形式定义组件(这一点每个视图框架都会,难以避免)

所以Angular是带有比较强的排他性的,如果你的应用不是从头开始,而是要不断考虑是否跟其他东西继承,这些主张会带来一些困扰。比如React,他也有一定程度的主张,他的主张主要是函数式编程的理念,比如说,你需要知道什么是副作用,什么是纯函数,如何隔离辅作用。他的侵入性看似没有Angular那么强,主要因为它是软性入侵。
你当然可以只用React的视图层,但几乎没人这么用,为什么呢,因为你用了它,就会觉得其他东西很别扭,于是你要引入Flux、Redux、Mobx之中的一个,于是你除了Redux,还要看saga,于是你要纠结业务开发过程中每个东西有没有副作用,甚至你连这个都可能忍不了:

const getData = () => {
// 如果不存在,就在缓存中创建一个并返回
// 如果存在,就从缓存中拿
}

因为你要纠结他有外部依赖,同样是不加参数调用,连续两次的结果是不一样的,于是不纯,为什么我一直不认同在后台项目中使用React,原因就在这里,我反对的是整个业务应用的函数式倾向,很多人都是看到有很多好用的React组件,就会倾向于把他引入,然后,你知道怎么把自己的业务映射到函数式的那套理念上吗?
函数式编程无副作用,写出来的代码没有bug,这是真理没有错,但是有两个问题需要考虑:
1.JS本身,有太多特征与函数式的主张不适配
2.业务系统里面的实体关系,如何组织业务逻辑,几十年来积累了无数的基于设计模式的场景经验,有太多的东西可以模仿,但是,没有人给你总结那么多如何把你的厚重业务映射到函数式理念的经验,这个地方很考验综合水平的,真的每个人都有能力去做这种映射吗?

函数式编程无bug的根本就在于要把业务逻辑完全都依照这套理念搞好,你看看自己公司做中后台的员工们,他们熟悉的是什么?是基于传统oo设计模式的这套东西,他们认为你拿着你给的组件库就知道了一切,但是可能还要被灌输函数式编程的一整套东西,而且没有人来告诉他们在业务场景下,如何规划业务模型、组织代码、还要要求快速开发,怎么能快起来?
所以我心疼这新人,他们呀的只是组件库,却不得不把业务逻辑的撕开方式也作转换,这个事情没有一两年的时间洗脑,根本洗不到开发业务的程度。
没有好组件库的时候,大家痛点在视图层,有了基于React的组件化,把原先没那么痛的业务逻辑部分搞得也痛起来了,原先大家按照设计模式教的东西,照猫画虎还能继续开发了,学了一套新理念之后,都不知道怎么写代码了,怎么写都怀疑自己不对,可怕。
我宁可支持Angular也不支持React的原因也就在此,Angular至少在业务逻辑这块没有软主张,能够跟OO设计模式那套东西配合得很好。我面对过很多商务场景,都是前端很厚重的东西,不仅仅是管理控制台这种,这类东西里面,业务逻辑的占比要比视图大挺多的,如何组织这些东西,目前几个主流技术栈都没有解决方案,要靠业务架构师去摆平。

现在我要说说为什么我这么支持Vue了,没什么,可能有些方面是不如React,不如Angular,但它是渐进的,没有强主张,你可以在原有大系统的上面,把一两个组件改用它实现,当jQuery用;也可以整个用它全家桶开发,当Angular用;还可以用它的视图,搭配你自己设计的整个下层用。你可以在底层数据逻辑的地方用OO和设计模式的那套理念,也可以函数式,都可以,它只是个轻量视图而已,只做了自己该做的事,没有做不该做的事,仅此而已。

渐进式的含义,我的理解是:没有多做职责之外的事。

Ref:https://www.cnblogs.com/humiao-0626/p/11713660.html


每个框架都不可避免会有自己的一些特点,从而会对使用者有一定的要求,这些要求就是主张,主张有强有弱,它的强势程度会影响在业务开发中的使用方式。使用vue,可以在原有大系统的上面,把一两个组件改用它实现,当jQuery用;也可以整个用它全家桶开发,当Angular用;
还可以用它的视图,搭配你自己设计的整个下层用。你可以在底层数据逻辑的地方用OO和设计模式的那套理念。
也可以函数式,都可以。它只是个轻量视图而已,只做了自己该做的事,没有做不该做的事,仅此而已。不必一开始就用Vue所有的全家桶,根据场景,官方提供了方便的框架供你使用。

举个栗子:

场景1:
如果你的技术团队技术选型比较保守,没有新技术的使用场景,比如让你去维护一个管理后台。管理后台,日常就是提交各种表单了,这部分现有的方案,比如form表单提交或者jquery收集信息ajax提交。这时候你可以把vue 当成一个js库来使用,就用来收集form表单,和表单验证。
场景2:
在场景1中,你尝到了甜头。心中暗爽,还可以这么玩嘞。独乐乐不如众乐乐和大家分享之后,团队开始接受使用vue,小规模推广起来。打怪升级该遇小boss啦,领导说,小伙后台做的越来越有效率了,来承担些常规业务开发,来正规军编制和其他小伙伴一起做新闻列表和新闻详情页吧。
在这个项目中,你跟大胆一点把 整个页面的dom 用Vue 来管理,你发现jquery 没什么用了,列表用v-for来循环,把评论抽成小组件了。 评论交互比较复杂,但是你的关注点把原来jquery dom操作变成了关注数据的变化,用数据驱动DOM的变化
场景3:
经历了场景1\场景2,越来越受大家信赖,领导又找你了。你看新闻项目你做的不错,移动站也得重构了,你做个移动端m站吧,正好微信和App分享出去用到。这时候,你需要在做移动端webapp了。 于是你由去了解 webpack vue-router,你发现前端 可以控制路由了。webpack,可以用于前端开发的工程构建。
场景4:
场景3之后你在技术团队大放异彩,公司越来越器重你。年末领导又来找你了,小伙砸,想不想拿年终奖啊,想的话给我做个新闻直播间吧。需求特别简单:就是滚动播报新闻,用户实时参与评论。有了场景3和之前的经验,发现稍微有点力不从心了,你和后端的接口沟通上越来越频繁,新闻直播间需要大量的数据在组件中共享数据,后来你发现了,vuex 处理数据在组件之间的流动得心应手。
场景5:
年终奖,拿到手了,过年回来升职加薪。带了20人的前端团队,你的精力开始在配合公司其他部门做用户数据增长了。发现场景2中你犯了个错误,虽然整个页面用Vue 管理 开发起来很方便,但是页面白屏时间长,而且类似这样的底层页对seo都不好。开始考虑使用 vue2.0的SSR。为了保障团队高质量的输出,你开始研究如何给 vm写单测…

场景1-5 从最初的只因多看你一眼而用了前端js库,一直到最后的大型项目解决方案。
Ref: https://www.cnblogs.com/gopark/p/10771708.html


Reference

  1. https://www.cnblogs.com/humiao-0626/p/11713660.html
  2. https://www.cnblogs.com/gopark/p/10771708.html
  3. https://www.zhihu.com/question/51907207
  4. http://www.bslxx.com/a/vue/2017/1026/1082.html
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值