时隔一年之后重新学习angularJS,感慨良多。
去年刚刚接触web编程的时候,朋友告诉我angularJS很好用,于是在仅仅了解HTML和css开始学习angularJS,困难程度可想而之,而且并不明白其价值,武断的认为通过服务端可以不需要angular之类的工具解决所有问题。一年之后,对js的语法相对熟悉,尝试过自己写一个网站之后,不但非常快速的掌握了angularJS的大致内容,而且明白angular的价值。由此也可以说明只有在大量的实践之后,自身抽象问题的能力才会提高。
angularJS提出了一些概念:模块(module),服务(service),controllor,routeProvider,filter等概念。那么每个概念是什么意思呢?概念之间又有什么关系呢?
module可以理解成一个完整的程序,它有属于自己的controllor,routeProvider,filter,依赖的service和module等。
service可以理解成一个全局的库函数,可以自定义,angularJS可以自动寻找依赖。很多时候通过$http或者封装$http服务向后台请求数据。
controllor可以用来操作数据,由用户自己定义。
routeProvider和django中的urlpattens做了相同的工作,即根据http请求的不同函数向用户展示不同的页面。
filter可以用来筛选一些数据,和字面意思一样。
通常,我们自定义一个自己的模块,通过routeProvider定义每一个请求所对应的页面的模版和controllor,每一个controllor为了减少代码重复,使逻辑更清楚,可以选择性使用service。在需要对数据做过滤的时候使用filter,这样大致构成了一个简单的基于angular的应用。
angular的好处:
对于用户来说,抽象程度很高,实现了数据的双向绑定又屏蔽了繁杂的DOM操作,在页面业务逻辑简单的情况下,开发及其及其简单。
angular的不足:
封装了原生的DOM接口,可能会引起渲染效率的下降。
其余值得思考的问题:
routeProvider所做的工作在服务端完成还是在客户端完成合适?(目前思路是需要测试一定情况下两者效率的差距,如果效率相差不大,我倾向于在客户端完成这项工作)。