angularJS简介

近来项目需要用到angularJS开发类CRUD的一个功能,原来对angularJS没有任何了解,借这个机会和大家一起探讨下angularJS,废话不多说了,直接切入正题吧。

什么是angularJS

    AngularJS 是一个为动态WEB应用设计的结构框架。它能让你使用HTML作为模板语言,通过扩展HTML的语法,让你能更清楚、简洁地构建你的应用组件CRUD(增加Create、查询Retrieve、更新Update、删除Delete)。它的创新点在于,利用 数据绑定  依赖注入,它使你不用再写大量的代码了。这些全都是通过浏览器端的Javascript实现,这也使得它能够完美地和任何服务器端技术结合。

    AngularJS是为了克服HTML在构建应用上的不足而设计的。HTML是一门很好的为静态文本展示设计的声明式语言,但要构建WEB应用的话它就显得乏力了。所以我做了一些工作(你也可以觉得是小花招)来让浏览器做我想要的事。

通常,我们是通过以下技术来解决静态网页技术在构建动态应用上的不足:

·         类库 - 类库是一些函数的集合,它能帮助你写WEB应用。起主导作用的是你的代码,由你来决定何时使用类库。类库有:jQuery

·         框架 - 框架是一种特殊的、已经实现了的WEB应用,你只需要对它填充具体的业务逻辑。这里框架是起主导作用的,由它来根据具体的应用逻辑来调用你的代码。框架有:knockoutsproutcore等。

AngularJS使用了不同的方法,它尝试去补足HTML本身在构建应用方面的缺陷。AngularJS通过使用我们称为标识符(directives)的结构,让浏览器能够识别新的语法。例如:

·          (1) 使用双大括号{{}}语法进行数据绑定;

·         (2)使用DOM控制结构来实现迭代或者隐藏DOM片段;

·         (3)支持表单和表单的验证;

·         (4)能将逻辑代码关联到相关的DOM元素上;

·         (5) 能将HTML分组成可重用的组件。

angularJS的好处?

AngularJS通过为开发者呈现一个更高层次的抽象来简化应用的开发。如同其他的抽象技术一样,这也会损失一部分灵活性。换句话说,并不是所有的应用都适合用AngularJS来做。AngularJS主要考虑的是构建CRUD应用。幸运的是,至少90%WEB应用都是CRUD应用。但是要了解什么适合用AngularJS构建,就得了解什么不适合用AngularJS构建。

如游戏,图形界面编辑器,这种DOM操作很频繁也很复杂的应用,和CRUD应用就有很大的不同,它们不适合用AngularJS来构建。像这种情况用一些更轻量、简单的技术如jQuery可能会更好。

下面来看个例子:

下面是一个包含了一个表单的典型CRUD应用。表单值先经过验证,然后用来计算总值,这个总值会被格式化成本地的样式。下面有一些开发者常见的概念,你需要先了解一下:

·         (1)数据模型(data-model)关联到视图(UI)上;

·         (2)写、读、验证用户的输入;

·         (3)根据模型计算新的值;

·         (4)将输出格式本地化。

index.html

 

<!doctype html>
<html ng-app>
    <head>
        <script src="angular.min.js"></script>
        <script src="script.js"></script>
    </head>
    <body>
        <div ng-controller="InvoiceCntl">
            <b>Invoice:</b>
            <br>
            <br>
            <table>
                <tr><td>Quantity</td><td>Cost</td></tr>
                <tr>
                    <td><input type="integer" min="0" ng-model="qty" required ></td>
                    <td><input type="number" ng-model="cost" required ></td>
                </tr>
            </table>
            <b>Total:</b> {{qty * cost | currency}}
        </div>
    </body>
</html>

 

 

  script.js

function InvoiceCntl($scope) {
    $scope.qty = 1;
    $scope.cost = 19.95;
}

 

 运行结果:

function InvoiceCntl($scope){$scope.qty = 1;$scope.cost = 19.95;} 运行效果

Invoice:

Quantity Cost

Total: {{qty * cost | currency}}

 在标签里, 我们用一个'ng-app'标识符标明这是一个AngularJS应用。这个'ng-app`'标符会使AngularJS**自动初始化**(auto initialize)你的应用。 我们用'标签来加载AngularJS脚本: 

通过设置'input' 标签AngularJS会自动对数据进行双向绑定。我们还同时进行了一些简单的数据验证:

Quantity: <</span>input type="integer" min="0" ng-model="qty" required >

Cost: <</span>input type="number" ng-model="cost" required >

这个输入框的widget看起来很普通,但如果认识到以下几点那它就不普通了:

·         当页面加载完后,AngularJS会依照widget里的声明的模型名字(qtycost)生成同名变量。你可以把这些变量认为是MVC设计模式中的M(Model)

·         注意上面widget里的input有着特殊的能力。如果你们没有输入数据或者输入的数据无效,这个input输入框会自动变红。输入框的这种新特性,能让开发者更容易实现CRUD应用里常见的字段验证功能。

终于,我们可以来看一下神秘的双大括号{{}}:

Total: {{qty * cost | currency}}

这个{{表达式}}标记是AngularJS的数据绑定。其中的表达式可以是表达式和过滤器({{ expression | filter }})的组合。AngularJS提供了过滤器来对输入输出数据格式化。

上面的这个例子里,{{}}里的表达式让AngularJS把从输入框中获得的数据相乘,然后把相乘结果格式化成本地货币样式,然后输出到页面上。

值得一提的是,我们既没有调用任何AngularJS的方法,也没有像用框架一样去编写某个具体逻辑,就是完成了上述功能。这个实现的背后是因为浏览器做了比以往生成 静态页面更多的工作,让它能满足动态WEB应用的需要。AngularJS使得动态WEB应用的开发门槛降到不需要类库或者框架的程度。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值