怎么才算学好Vue前端框架?其实Vue.js定义是一个“数据驱动渐进式”框架,学习它的时候,其中很多东西都能让我们眼前一亮,比如说数据双向绑定、组件路由模块化、灵活的指令、全家桶等等。
灵魂拷问一:“Vue2的本质是什么?为什么这么多企业在业务中使用?”
“明知故问,Vue2不就是一个数据驱动渐进式框架吗?数据驱动你不懂?渐进式你不理解?全家桶你不会用?”没错,如果是当年的我内心是这样反击的!可是,实际上,今天我来说另外一种答案,小伙伴们来评判一下,这两个答案有啥区别?
首先,我想说的是,Vue其本质是一个『构造函数』(工厂函数?构造函数?不懂?基础不牢地动山摇啊,小伙伴!)。当我们使用new关键字实例化出来一个Vue对象的时候(构造函数中new这个关键字都干了啥?不知道?赶紧去看看吧,为啥这么多面试题都会问到这个?),其原型、原型链上声明的属性和方法会根据面向对象编程思想(OOP不知道是啥?天啦,赶紧去学习基础吧!~)传入的参数,构建我们需要的对象,我们所有的操作,其本质上来讲就是在操作这个对象的属性改变和方法调用。
为什么我第一个问题要说这个Vue实例对象呢?首先,Vue的功能强大,作者设计思路之新颖全面,很多初学它的人会本能的觉得好像和原生的JavaScript没有多大关系,其实不然,其本质就还是一个工厂构造函数实例化出来的对象,只不过是一个庞大了点的对象,这是n个人智慧结晶的积累。这里面富含了大量的编程思维,还有扎实的理论功底,这也是我们前端工程师技术方向的终极道路:核心架构师,不过成长到这个地步的人,需要的不仅仅是学习,更需要有科研环境的团队氛围。
灵魂拷问二:为什么有了Vue3?Vue3在企业中什么地方该用?什么地方不该用?
在回答这个问题之前,我先说到我们程序员基础课中经常提到的两个关键字:内聚、耦合!这是程序设计的规范,高内聚,低耦合!为什么出现了Vue3?其实从本质上来讲就是为了解决这个问题!那么问题来了,Vue2的内聚哪里低了?耦合哪里高了?当然这里我实在不想提到什么CompositionAPI、OptionsAPI,事实上,我已经提了!事实上,早在Vue3源码公布之前,Vue官方已经透露了代表下一代Vue技术的Vue3将采取的新的接口使用方式。这种新的方式叫做CompositionAPI(组合式API)。而与之相对应的经典API也是我们所熟知的Vue使用方式叫做OptionsAPI(选项式API)或Options-basedAPI(基于选项的API)。
在经典的OptionsAPI中,我们使用一个具有data,methods等「选项」的JS对象来定义一个页面或者组件。这种简单直接的方式,在应用早期阶段,代码和业务逻辑较简单时,非常的友好亲民,这也是Vue学习门槛较低而广受开发者亲昵的的一个因素。
但是,有过开发大型Vue应用的开发者应该心有体会。当页面的逻辑越来越多时,我们的组件将变得冗长复杂。很多本可以复用的逻辑和代码,你很难有一种使用起来非常舒适的方式来复用。比如:在Vue2中,组件逻辑和代码复用最常用的方式是混入mixin,这虽然是一种可行的方式,但是这种方式显然从出生和Vue框架紧密耦合(看到了吧?这是不是高耦合了?反程序设计基础规范了吧!)。当你想要将一个框架无区别的普通JS函数或者对象复用到Vue2开发的组件中时,你发现一切都是那么的不优雅。基于满足在开发大型Vue应用中更优雅地复用已有代码的需求催生下,Vue3CompositionAPI似乎是顺势而为,并且势在必得。
灵魂拷问三:TypeScript很不错,你在项目中使用了多少?你觉得该不该用?
TypeScript其本质上讲核心是为了解决JavaScript编程语言弱类型这个问题而产生的,为了有效的解决程序变量在传来传去的过程中不严谨的问题!程序嘛,肯定要非常严谨才行啊!毕竟,咱们JavaScript语言现在热门啊,是程序语言中的一哥啊!那么,TypeScript是如何解决这个严谨的问题呢?两个方面,官方也是这样讲的:TypeScript本质上是向JavaScript语言添加了「可选的静态类型」和「基于类的面向对象」编程,它相当于是JavaScript的超集。
说实话,TypeScript的官方文档非常非常适合前端开发者进阶学习使用,这个非常有助于我们突破我们的技术壁垒,建议大家一定要细细研读,不同阶段的开发者研读文档的感觉各有千秋,但都大有收获。
最后,来说说项目中使用TS,小兄弟啊!小项目,不复杂的项目,真的可以不用!都这样内卷了,何必呢?!就为了一个最简单的类型约束,show几个新的语法特性,来几个泛型编程,你要知道,为了解析你这个玩意,Node的Webpack会做多少工作?代码增加多少?真的,除非是数据严谨要求极高,项目业务逻辑极其复杂的项目,能不卷就不要卷了!
灵魂拷问四:如果说一个项目,你如何精准的判断得出来你到底该使用Vue2好呢?还是Vue3?还是React?或者是jQuery?甚至是原生JavaScript?
看山是山,看水是水吧!不浓妆艳抹、东施效颦的做作!更不,不懂装懂,自欺欺人的蛮干!技术永远是业务折中的解决方案,这个是真的!既然是折中的解决方案,核心就在于利弊权衡上!如果,这个站点对SEO有强关联并且前后端很难分离,你非要使用什么VueorReact,那就不对了!jQuery基于DOM编程一定是你的最佳选择!
如果是大型复杂项目,具有非常多的业务模块复用逻辑,并且数据通信逻辑复杂,那么你可以使用Vue3orReactHooks,这个没毛病,大量的业务模块被复用,又复用的不一样,再不用这个玩意,团队之间的代码强耦合,那就太难受了!单沟通成本就高的让你疯掉!
原生JavaScript?Ok,如果你是涉及到最新的前沿课题,比如区块链客户端逻辑封装,或者你在大厂的一个框架研究中心,你可以用,小打小闹,还是小心为上!你真以为原生JavaScript很easy?没有真正打通任督二脉的功力,走火入魔是常有的事情!
Vue前端框架我到底学会了吗?没有!我才刚刚开始!千言万语,其实,想跟小伙伴们说的是这样四个字:“打好基础”。怎么样打好基础?汇编原理、网络工程、数据结构、基础算法、开发模式等等,这些大学里看似无用的书中,会有你想要的答案的!