当前位置:首页>正文

Angular到底适合做什么类型的项目 angularjs一些问题

2023-04-19 17:15:18 互联网 未知

Angular到底适合做什么类型的项目

Angular.js

首先Angular的背后是Google(难道这就是官网被墙的原因?),所以社区基础是不用担心的,整个生态也已经是非常的完整了,从最基本的Tutorial到StackOverflow的问题数到框架本身的剖析都有非常非常多,所以从这个角度看起来Angular应该算是上手比较容易的。
不过Angular目前的问题看起来也很明显
1. 性能
同样是TODOMVC的Sample,Angular完全载入用了1.1s(WebPagetest - Visual Comparison)。目前用到的基于Angular的就是Kibana,不得不说,确实挺慢的。。
2. Angular 2.0
Angular的2.0几乎是一个推翻重做的框架,估计不会有1.X的upgrade方案。所以如果现在新开始的项目采用Angular的话,会是一个很尴尬的时机。同样,如此大的改动似乎也反面印证了1.X并不是那么好。

React.js
React很大的特点就是“轻”,再加上VDOM这个很好的idea让React非常非常快(在上面那个测试里面0.3s左右就载入完毕)。另外React和Angular一个很大的不同就是React采用的是one-way data flow。
React的缺点嘛,大概就是现在还太新了很难说将来有没有大的API变化,目前在大的稳定的项目上采用React的,也就只知道有Yahoo的Email。所以现在很少有批评React的声音。也许不是真的就没有坑,而是那些坑还没有被踩出来而已。
还有就是React本身只是一个V而已,所以如果是大型项目想要一套完整的框架的话,也许还需要引入Flux和routing相关的东西。

总结
Angular是真正的大而全的framework,有自己一套思路,基本follow这个思路往里面填代码就OK。
React是一个简短有力的library,只负责解决某个单一的“痛点”。

angularjs一些问题

其实这俩种方法在使用的时候,并没有什么不同
区别主要是在于后期线上优化js代码的时候,js的压缩器会将一些局部变量做缩写,比如
app.controller(MyCtrl , function($scope , $filter){
$scope.name = $filter(...)(xxxx)
})

===> 会压缩为
app.controller(MyCtrl , function(a , b){
a.name = b(...)(xxxx)
})

这样,压缩后的代码里,angular无法识别a和b这俩个server,就会报错了
而使用了第二种方法来写,就不会出现这种错误
app.controller(MyCtrl , [$scope,$filter,function($scope , $filter){
$scope.name = $filter(...)(xxxx)
}])

===> 会压缩为
app.controller(MyCtrl , [$scope,$filter,function(a , b){
a.name = b(...)(xxxx)
}])

这个执行起来就不会有错

-----------------

主要是因为angular在执行controller的方法的时候,需要知道这个controller的依赖参数
如果是用第一种方法来写,则参数名是不能随便写的,因为angular通过解析function的源码来取到依赖参数名
比如app.controller(ctrl , function($scope , $filter){}) 通过解析这个代码,就会知道这个ctrl会依赖 $scope 和 $filter 这俩个服务,如果把这俩个名字写错了,那就无法执行了

第二种方法相当于手动声明了依赖参数和队列顺序,angular就不需要解析源码里面的参数
app.controller(ctrl , [$scope , $filter , function($scope , $filter){}])
这样写,相当于手动声明依赖参数

新手上手angularjs,请问适合做什么项目

新手学习的话,不太适合直接做项目,可以先从一些简单的组件开始。比如说,下拉框,checkbox,导航条,tab,grid等等。基本上做完这几个,你对angularjs的理解就可以去做项目了。