关于AngularJS 1.x 从Flex程序员角度谈谈我的一些看法(一)

用AngularJS开发了2个很小的项目,多少积累了点经验,这里稍微谈下我一个Flex程序员的角度对它的看法。

你可能会有疑问什么是AngularJS?为什么我们要用它?它有什么用

1:它是google开发的一套前台MVC开发框架,这个框架的健康度很好,社区完善,资料也好找

2:一般说到JS框架,我们第一个想到的就是JQuery。AngularJs其实和它的前驱者JQuery做着差不多的事情,都是对html元素进行动态操作。

两者最大不同之处在于理念,JQuery是操作Dom对象的一套强大工具,通过标示符一层层操作html元素对象。

而AngularJS它是不建议直接在业务逻辑中操作html元素的,而是通过model的双向绑定,业务逻辑直接操作model上的属性,model修改后自动update与其绑定的html元素来达到目的。有点像Flex里binding,Flex曾经有个挺火的MVC框架也推崇这个纯model控制的理念,名字叫什么来着我给忘了,好像叫什么Carigom3,这个理念很好,但是实际运用当中并不好用。

我们来举个栗子,例如我们要动态禁用一个button

在JQuery中就是

<button id="myButton">JQuery Button</button>
$(‘#myButton‘).attr(‘disabled‘,‘disabled‘);

不实用JQuery我们一样可以用原生的JS对dom进行操作,JQuery只不过对这些原生API进行了封装,是我们操作起来更加便捷。

在AngularJs中就是

<button ng-disabled="model.disabled">AngularJs Button</button>
$scope.model = {};$scope.model.disabled = true;

其实这2种对html元素的操作理念在Flex中都已经提供了原生的支持,需要根据实际情况灵活的结合应用。

在Flex中的栗子我就不举了,相信各位程序员应该都深有体会。其实搞了半天AngularJs这个理念也是再炒冷饭,谁是原版谁是山寨不用去纠结,我想给大家提供的观点就是AngularJs这个理念和Flex中常用的方式非常相似,但是它也存在着弊端,一是我们学习起来会相对比较容易,另外也要注意一些甜蜜陷阱(后续文章会补充)。

这里从AngularJs官网(已被墙),截几张图过来看看它的运作模式,它的原理,大家就一目了然了。

先看,绿色的div里面声明了一个ng-controller = InvoiceController 意思就是浏览器加载到这个div的时候告诉浏览器,这个div里面的东西归我angularjs管了逻辑写在一个叫InvoiceController 的js类里,您老就别操心了,交给我来托管。

再看蓝色部分,好于是Angularjs就给这个div开辟了块独立的空间,我们称之为scope,里面维护了一个InvoiceController 的实例,于是你对controller里model一些属性进行的操作,Angularjs都会实时的监测到它们的改动并且通知与之绑定的html元素,进行相应的update,原理估计就是timer了。

本文结束,下篇讲讲Angularjs其它一些功能吧,依赖注入啥的。

最后感叹下,Flex这么好的东西为什么会走下坡路呢。

时间: 2024-08-29 06:07:04

关于AngularJS 1.x 从Flex程序员角度谈谈我的一些看法(一)的相关文章

关于AngularJS 1.x 从Flex程序员角度谈谈我的一些看法(二)

再来看看关于Angularjs其它一些特性 1.依赖注入这个是老概念了,Angularjs通过参数的形式把实例传递到调用的模块中去,例如下图 灰色的Service 实例就作为一个参数传递到业务逻辑Controller中去的,从而分层,这种方式在Flex Parsley中也是非常常见的,只不过Flex中常用是先用config文件来定义注入关系. Angularjs中又n种注入声明的方法,controller filter directive factory config run.前三个分别用于An

从程序员角度对帧速的解释

帧速是计算机图形学中必须接触的概念,是衡量算法或显卡优劣的重要指标,强调的是计算能力. 官方定义的帧速:动态画面每秒钟展现的帧数,用于衡量视频信号传输的速度,单位为帧/秒(fps). 程序员角度就是下面的代码,大体意思就是一秒钟内执行了多少次大循环,这里的CaculateFrameRate() 方法更像是一个哨兵,每渲染一次,就调用一次这样的代码. /** 计算帧速 */ void CameraRove::CaculateFrameRate(){    static float framesPe

一个bug引发的血案——从程序员角度看罗一笑事件

我这人有个毛病一直改不掉,不过好像也没怎么试过去改,那就是自命清高.这应该是文青的一大特点,总觉得跟文化这么高雅的东西挂钩怎么都低俗不了. 在做公众号这件事情上,自命清高就体现在不谈热点.去年一年火的事情不少--阿尔法狗大战李世乭.王宝强事件,以及川普当选美国总统.为什么不谈呢?首先是因为大家都在谈,我也跟着凑上去有种蹭热点的嫌疑,而且更有种人云亦云的庸俗感.其次是因为有一贯关注的主题,平时工作已经够忙的了,闲下来的时间还是要分配给它们. 到了新的一年,我要洗心革命,要跟人民群众靠拢,不能再做一

菜鸟程序员对学习编程语言的小小看法

本人是属于半路出家的程序员,严格来说还在学习怎么当一个程序员才对.所以身边会有那么些情况跟我差不多的朋友(想转行,学一技之长的)会问程序员这条路是否适合他们,不过这东西因人而异,所以我也只能总结一下自己的情况,把自己的经历告诉他们,让他们自己判断而已. 本文主要表达本人对是否适合转行当程序员的一些看法,希望能给某些在犹豫学不学习编程,该学什么语言的小伙伴提供一些参考. 首先判断一下是否合适 天生我才必有用.每个人都有自己擅长的领域和不擅长的领域,如果说学习编程是为了兴趣爱好,只是一种业余爱好的话

关于“中文编程”是解决中国程序员编程效率的银弹的看法

讨论题目: 有人认为,“中文编程”是解决中国程序员编程效率的秘密武器,请问它是一个“银弹”么? 银弹被比喻为具有极端有效性的解决方法,作为杀手锏 .最强杀招.王牌等的代称.IBM大型机之父佛瑞德·布鲁克斯(Frederick P. Brooks, Jr.)在1986年发表的一篇关于软件工程的经典论文,便以<没有银弹:软件工程的本质性与附属性工作>(No Silver Bullet — Essence and Accidents of Software Engineering)为标题.其中的“银

第1次作业:这是一个不想当程序员的未来程序员

前言:这是一个不想当程序员的未来程序员对于计算机专业的某某看法.... 1.结缘计算机 问题1.1:你为什么选择计算机专业?你认为你的条件如何?和这些博主比呢? 对于这个问题,其实计算机专业并不是我的第一志愿,而是第三志愿,我第一二志愿分别是会计和金融,不过现在看来其实我的兴趣也不在这几个方面,有句话说得好,三分靠高考,七分靠志愿.志愿填的好,将来烦恼会少很多.经过两年的学习,我发现当初我就不应该考虑就业前景而填报专业,而是应该结合自己的兴趣爱好来,即使这份兴趣爱好所对应的专业将来并不好找到工作

比尔&#183;盖茨写的最古老程序曝光:BAT程序员膜拜 #精选程序人生

比尔·盖茨31岁,就成为世界首富.很多人好奇,作为世界第一大PC系统的创始人,抛弃世界首富的头衔,单单从程序员角度来讨论,比尔盖茨的代码水平如何? 其实,比尔·盖茨对写代码有一种狂热的喜好.上高中的时候,为了获得源代码,比尔·盖茨曾经去翻垃圾桶. 据了解,在 1978 年的 Microsoft BASIC 源代码 6502 中,比尔·盖茨实现了 FOR 和 GOSUB 的所有 BASIC 语句,函数,运算符,表达式评估,堆栈管理,内存管理器,数组和字符串库. 昨日,编程网站 w3cschool

程序员 30 岁前,该如何规划自己的职业发展?

有读者问我职业规划这个话题,姑且今天好好谈谈,因为我一直认为这个话题对职场工作人士非常重要,今天我就来聊聊程序员的职业规划. 1.为什么职业规划很重要? 在回答这个问题之前,我得先给大家解释下为什么职业规划很重要,我就简单的举个例子,我想大部分人职业生涯的初期,跳槽.换工作大都是为了薪资,哪个方向赚的多,我去干哪个,哪家公司给开的价高,福利待遇好,那我就去那家公司.所以,为什么很多 IT 人频繁的跳槽,我不认为为了钱工作这是错误的价值观,毕竟工作就是为了赚钱养家,过的更好嘛,但是等你经历之后,你

具有jQuery背景的程序员如何转换为AngularJS思考模式(译)

最近一直在研究angularjs,最大的感受就是它和之前的jQuery以及基于jQuery的各种库设计理念完全不同,如果不能认识到这点而对于之前做jQuery开发的程序员,去直接学习angularjs的话,很可能学了很久还不知道这个东西能用来干什么以及怎么使用,怎么和UI进行结合等问题,在stackoverflow上找到一篇关于这方面的文章,阅读之后颇有收获,在此基础上将它译成中文,以求抛砖引玉大家一同学习. 原问题:假如我熟悉利用jQuery去开发客户端应用,那么我怎么上手angularjs,