• Angular与React的一些看法



    Angular - React之争

    Angular和React无疑是目前最受追捧的两个前端框架,谷歌也发现Angular1.x不足的地方,开始开发2.0版本,脸书发现React的组件化和虚拟DOM非常好,也同时投资React Native。

    00.先比较Angular1.x与React

    这两个没什么可比性,Angular着重数据绑定和前端MVC,以及不同模块的依赖注入。React着重于组件化和性能。之前做项目用的Angular,数据绑定很爽,但是作为新手学习曲线确实很陡峭,写个指令不知道scope飞哪里去了,用Angular-UI又要去翻墙查各种声明方式,总之踩了很多坑。某一天看到React,确实有种眼前一亮的感觉,因为时间不多,当时也就没深入了解了。React给人一种小清新的感觉,Virtual DOM的思路比Angular的$digest循环明显好一点,然而Angular火的早,参考的东西很多,这两者各有优劣吧。长期来看React会比Angular更好,毕竟谷歌已经把重点放在Angular2.x上面了,有些放弃1.x的感觉。

    01.再比较Angular2.0与React Native

    笔者走马观花的看了这两个框架,发现两者有很多共同点。比如都选择了ES6的语法,用一个class来声明组件,比如都着眼于组件化,再比如都抽象出渲染模块,能在不同平台复用。而两者不同的地方是:

    Angular2比React Native的语法更优雅,更像是声明式的语法。命令式走向声明式无疑是一门语言进步的标志,好比盖一栋房子,命令式像是找土,找砖窑,一块一块烧,声明式好比打电话给砖厂,“明天XX点送1000块砖过来”,React Native的一些语法相比于Angular2显得更带有命令式的意味,比如getInitialState,这是一个View设置初始状态和初始化数据的API,这相比与Angular2使用class的构造器语法显得有些不优雅了。

    具体的例子比较一下:

    import {Component} from "angular2/core";
    import {bootstrap} from "angular2/platform/browser";
    
    @Component({
        selector:"ez-card",
        properties:["name","country"],
        template : `<div class='ez-card'>
                My name is <b>{{name}}</b>, 
                I am from <b>{{country}}</b>.</div>`
    })
    class EzCard{
        constructor(){
            this.name = "Mike";
            this.country = "Sweden";
        }
    }
    var React = require('react-native');
    var {
      AppRegistry,
      Image,
      ListView,
      StyleSheet,
      Text,
      View,
    } = React;
    
    React.createClass({
      getInitialState: function() {
        return {
          dataSource: new ListView.DataSource({
            rowHasChanged: (row1, row2) => row1 !== row2,
          }),
          loaded: false,
        };
      },
      render : function(){
        return (
          <ListView
            dataSource={this.state.dataSource}
            renderRow={this.renderMovie}
            style={styles.listView}
          />
      } 
      }
    });

    上面两段代码是从一些教程上摘下来的部分片段,纯ES6语法的Angular2看起来明显更清爽一点,而且Angular2看样子是要实现Write Once,Run Anywhere:

    而React的重点是Web应用,React Native注重原生平台的底层调用,Learn Once,Write Anywhere是否会造成冗余的开发也有待考量,但原生接口调用以及组件化的开发方式一定会比目前hybrid app的模式更加靠谱,性能更好,可维护性更高。

    10.总结

    组件化和声明式的开发一定会成为主流,ES6也会慢慢普及,React以及React Native已经获得了不错的声誉,Angular1.x已经功成名就,Angular2蓄势待发,如果Angular2能在短时间范围内实现IOS和安卓的渲染应该会与React Native、现存的很多hybrid app竞争并且得到一席之地的。

  • 相关阅读:
    ARTS 计划第四周
    ARTS 计划第三周周
    计划表的科学设定
    C/C++内存分配
    ARTS 计划第二周周
    jsoncpp 和 libcurl的编译与使用 vs2010
    ARTS 计划第一周
    unix中的v节点和i节点
    百度地图demo
    带有定位当前位置的百度地图web api 前端代码
  • 原文地址:https://www.cnblogs.com/code2life/p/5097515.html
Copyright © 2020-2023  润新知