angular,vue和react到底学啥?

537 阅读4分钟

最近和一些朋友谈到JS目前三大主流框架,到底该用啥.

小学生才会做选择题,大人当然是全都选.

作为前端汪,归根结底,JS才是基础,才是重中之重.JS牛逼了,啥框架都是手到擒来.

有朋友说了,我没时间啊,前端东西太多,框架也多,我还得回家陪老婆孩子,所以我只有精力注重去学一个. 也有朋友说,我比较懒,下班了玩玩游戏,出门浪一浪,也没太多时间啥都弄.只学一个也不知道哪个最好.

鄙人愚见, 基于各方面考虑,如果条件允许,vue要会用,react要深入,angular随缘.非要选一个,个人认为选择react最好.

为什么会选择react,基于编程的编程范式(编程思路和规范),历史背景,对移动端的支持,全家桶和组件的关系

下面我们来分析一下.

第一,思路规范

⑴ angular, 
    angular无处不在的作用域,无论你是注入,依赖, 挂载.都需要考虑作用域.基于这里,我个人就不太喜欢这种编程方式.
    
    优点:
        官方提供的模板足够丰富,基本上可以囊括所有开发中用到场景,自带了极其丰富的angular指令。
        自定义指令,自定义指令后可以在项目中多次使用。
        模块化比较大胆的引入了Java的一些东西(依赖注入),能够很容易的写出可复用的代码
        背靠谷歌.后台强大.
        基于typescript,编程相对严谨
        生态很大
    
    缺点:
        上手较难,无论什么时候都要考虑作用域,对于JS基本功不扎实的coder不是很友好
        其次,除了会JS,还得去学TS.从以前的angularJs升级成angular之后.所有代码都是用TS来完成.当时的版本升级,
            导致了流失了很多的用户.升级不够顺滑(顺滑可以理解为,我以前学的,还能继续用,升级的也可以用,不强制用户去做改变).
        再次,只要是模板,相对react,多了解析这一步,解析就会耗费时间.
        最后,相对于移动端(这里泛指APP),angular没有支持做APP的框架.谷歌为此专门出了一个框架,flutter.但是flutter和angular的语法又没什么关系,相当于多学了一门语言.
        也有组件,但是还是指令当家
    
    
⑵    vue,
    对初学者最友好的一个框架, 只要你会写HTML.CSS.JS.你就会用vue写页面  
    优点:
        简单易用,.vue文件包含了HTML js CSS  熟悉的配方,熟悉的味道.只要你会写HTML.CSS.JS,你就能很快上手
        模板开发
        官方支持,vue有官方支持,也有生态
        不需要太多ES6以后的语法.但是ES6语法可以使代码更简洁
        数据双向绑定
        
    缺点:
        社区不大,生态也很大,但是不如angular和react.
        很缺乏高阶教程与文档
        APP开发,weex现在还是有很多坑,国内的大厂也只有阿里再用.而且从vue到weex不够顺滑
        模板开发,多解析这一步
        vue 也支持组件化,不过是在 MVVM 上的扩展
        
⑶   react,
    react, 万物皆组件,把所有的组件拼合起来,就是一个页面,
    优点:
        生态够大,社区也很大.
        JSX语法,没有解析这一步
        没有指令,都是基于组件.优点类似乐高积木,需要自己去一个一个找来搭建
        类似写法(class),包括刚出的hook(function写法)
        组件复用性强于vue和angular
        react-native生成的原生应用比较友好. 虽然也有一些坑,
        但是react的生态圈够大,这个组件不行就换个组件.基本上都能解决
        版本升级顺滑,之前引入的fiber特性.和最近新增的hooks.都是很强大的东西.
        而且不是强制用,你一样还可以用class写法.升级版本不影响以前的项目
        组件化,做的彻底而清晰
    
    缺点: 
        上手难度相对较大.官方就一个基础教程,全家桶较多
        比较迟ES6的语法.
        react的深入比较吃基础.对于时间不多的人来说,够用就行吧
        
        

其实自己也感觉分析得不完整,各有各的优点.如果想学一个框架,一招鲜吃遍天下的话,我推荐用react,各方面都很顺滑.

说说个人对未来的趋势吧,当前组件化的概念已经很火热,类似写法也大行其道.感觉未来还是会流行typeScript.因为现在JS已经在慢慢的趋近于严谨的写法.