[译]AngularJS 1.3.0 开发者指南(一) -- 介绍 (转)

http://www.cnblogs.com/lzj0616/p/6440563.html

[译]AngularJS 1.3.0 开发者指南(一) -- 介绍

Angular是什么 ?

AngularJS是一款针对动态web应用的结构框架. 它可以让像使用模板语言使用HTML, 并且可以扩展HTML的语法来明确简洁的表示应用组件. Angular的数据绑定机制和依赖注入机制排除了许多原本你不得不写的代码. 它作用于浏览端, 使得它成为任何服务端技术的良好伙伴.

Angular是为了弥补HTML在构建应用上的不足而设计的. 对于静态文档来说, HTML是很不错的声明式语言, 但是要构建web应用, 它却有些乏力. 所以我不得不做一些工作来让浏览器做我想要的事.

通常, 我们通过以下方式解决动态应用与静态网页之前的不匹配:

  • 库 --- 一个函数集合, 我们用它来编写我们的web应用. 我们自己编码作为主体, 然后我们在合适的时机调用库, 例如jQuery.
  • 框架 --- web应用的一种特定实现, 我们可以在它上面编码实现具体的逻辑. 在这里, 框架起主导作用, 它可以在应用的具体逻辑中调用你的代码, 例如: durandal, ember等.

Angular采用了另一种方式. 它试图通过创建新的HTML结构来弥补HMTL在构建应用上的不足. Angular通过我们称之为指令的结构, 使浏览器可以解析新的语法. 包括:

  • 通过{{}}通过数据绑定
  • 通过DOM控制结构实现迭代或隐藏DOM片段
  • 支持表单和表单验证
  • 能将代码关联到DOM元素上
  • 将HTML组成为可重用的组件

完整的客户端解决方案

在构建Web应用程序客户端的总体工程中, Angular不在只是其中的一小部分. 它可以处理你曾经手写的所有DOM和AJAX粘合代码, 并且把它们放到一个定义好的结构中. 这使得Angular在构建CRUD应用时有些"固执", 但是, 它也试图确保它的"固执"只是你简单改变的一个开始. Angular提供了以下可灵活变动的功能:

  • 构建一个CRUD应用所需要的一切包括: data-binding(数据绑定机制), basic templating directives(基础模板指令), form validation(表单验证), routing(路由), deep-linking(深度链接), reusable components(可重用组件), dependency injection(依赖注入).
  • 测试方面: unit-testing(单元测试), end-to-end testing(端到端测试), mocks, test harnesses(模拟和测试工具).
  • 具体目录布局和测试脚本的种子应用作为起点.

Angular的可爱之处

对开发人员来说, Angular通过提供更高层次的抽象来简化应用程序的开发. 像其他抽象一样, 这带来了灵活性的成本. 换句话说, 不是每个应用都适合使用Angular. Angular主要是考虑用来构建CRUD应用. 幸运的是, 多数web应用都是CRUD应用. 为了弄懂Angular擅长什么, 我们就得先弄清楚什么样的应用不适合使用Angular.

动画和GUI编辑器都是具有密集和复杂DOM操作的应用. 这种应用与CRUD应用是不同的, 它们不太适合使用Angular. 它们更适合使用低层次抽象的库, 例如jQuery.

Angular之禅

Angular建立在这样的信念之上: 在创建用界面和组装软件方法声明式语言要优于命令式语言, 而命令式语言更擅长表达业务逻辑.

  • 从应用逻辑中分离DOM操作, 这可以改善代码的可测试性.
  • 将测试与编码同等对待, 测试的难度一定程度上取决于代码的结构化.
  • 前后端(客户端与服务端)分离, 前后端开发同步进行, 有利于前后端代码的重用.
  • 框架在整个构建应用的过程中指导开发者, 从UI设计到编写业务逻辑, 到测试.
  • 化整为零, 化繁为简.

Argular会将你从以下苦海中解救出来:

  • 注册回调函数: 注册回调函数会降低代码的可读性, 使代码变得零散. 应该移除像回调函数这样的通用代码. 这样会大幅减少(因JavaScript的不足)你不得不写的JavaScript代码, 从而使你的应用更加清晰.
  • 编程实现HTML DOM操作: 操作DOM是AJAX应用的基础内容, 但是这往往是繁琐并且易错的. 通过声明的方式, 描述UI是怎样随着应用的状态变化而发生改变的, 你将从低级的DOM操作中解脱出来. 大多数Angular应用不需要通过编辑来实现DOM操作, 除非你这样做, 当然也是可以的.
  • 在UI页面中读写数据: CRUD操作占据了大多数AJAX应用的任务. 从服务端读取到的数据流封装成一个内部对象传送到HTML表单中, 用户修改了表单内容后, 将对表单进行验证, 显示验证错误信息, 返回一个内部模型发送回服务端, 这个过程产生了许多重复代码. 而Angular消除了几乎所有的重复代码, 使得代码只描述应用的总体流程, 而不是实现细节.
  • 写大量的初始化代码: 通过你需要编写许多基础性的代码才能实现一个基本的AJAX的"Hello World"应用. 使用Angular, 你将可以很容易的通过使用服务化来初始你的应用, 而这些服务就会像Guice的依赖注入一样自动注入到你的应用当中. 你就可以很快的开始开发你的功能. 并且你还可以全程控制自动化测试的初始化过程.
时间: 2024-12-11 11:52:21

[译]AngularJS 1.3.0 开发者指南(一) -- 介绍 (转)的相关文章

GOOGLE PROTOBUF开发者指南

ProtoBuf开发者指南 译者: gashero 目录 1   概览 1.1   什么是protocol buffer 1.2   他们如何工作 1.3   为什么不用XML? 1.4   听起来像是为我的解决方案,如何开始? 1.5   一点历史 2   语言指导 2.1   定义一个消息类型 2.2   值类型 2.3   可选字段与缺省值 2.4   枚举 2.5   使用其他消息类型 2.6   嵌套类型 2.7   更新一个数据类型 2.8   扩展 2.9   包 2.10   定

Protocol Buffers(Protobuf)开发者指南---概览

Protocol Buffers(Protobuf)开发者指南---概览 欢迎来到protocol buffers的开发者指南文档,protocol buffers是一个与编程语言无关‘.系统平台无关.可扩展的结构化数据序列化/反序列化工具,适用于通讯协议,数据存储等场合. ps:为了方便拼写,下文的protobuf就是指protocol buffers. 本文档的面向读者是:希望使用protobuf的 Java.C++.Python的开发者.此概览将向您介绍如何开始使用protobuf,然后您

走进小作坊(十四)----web2.0策略指南

    这两年互联网热炒的"互联网思维"这个词,在读罢<web2.0策略指南>这本书之后,得出结论:国内的互联网思维名词,乃是web2.0理念的变种.要说新意嘛,掀起了近几年互联网投资.上市的热潮,投资人与互联网创业者都成了光鲜亮丽的风景.等等,这种熟悉的感觉像极了2000年互联网泡沫前的场景.那次风潮过后,真正迎来了互联网的繁荣,金融危机和互联网泡沫类似人类会有感冒发烧,首先是身体出了问题,免疫系统才会出现强烈反应,社会或者互联网的发展规律也类似,所以这股热潮泡沫中还是潜

Android开发者指南(9) —— ProGuard

转: 前言 本章内容为开发者指南(Dev Guide)/Developing/Tools/ProGuard,本章内容为"混淆器",版本为Android3.0 r1,翻译来自:"Jim",欢迎与他交流:"[email protected]",再次感谢"Jim" !期待你一起参与翻译Android的相关资料,联系我[email protected]. 声明 欢迎转载,但请保留文章原始出处:) 博客园:http://www.cnbl

【译】Android 7.0 for Developers

译者注: 译者:aroundme 原文地址:https://developer.android.com/about/versions/nougat/android-7.0.html 主要是介绍Android 7.0提供新特性. 翻译的动机主要是为了适配Android 7.0,提前踩点.防止大坑. 就翻译来看,除去一些可有可无的更新之外,关注点主要是集中在四点: * 通知栏一系列更新 * 对于应用后台优化(或者说限制) * WebView持续性更新(混合开发需要注意) * 对于GPU的优化,优化3

ProtoBuf开发者指南

目录 1   概览 1.1   什么是protocol buffer 1.2   他们如何工作 1.3   为什么不用XML? 1.4   听起来像是为我的解决方案,如何开始? 1.5   一点历史 2   语言指导 2.1   定义一个消息类型 2.2   值类型 2.3   可选字段与缺省值 2.4   枚举 2.5   使用其他消息类型 2.6   嵌套类型 2.7   更新一个数据类型 2.8   扩展 2.9   包 2.10   定义服务 2.11   选项 2.12   生成你的类

(译)IOS block编程指南 1 介绍

Introduction(介绍) Block objects are a C-level syntactic and runtime feature. They are similar to standard C functions, but in addition to executable code they may also contain variable bindings to automatic (stack) or managed (heap) memory. A block ca

dubbo开发者指南

开发者指南 参与 流程 任务 版本管理 源码构建 框架设计 整体设计 模块分包 依赖关系 调用链 暴露服务时序 引用服务时序 领域模型 基本原则 扩展点加载 扩展点配置 扩展点自动包装 扩展点自动装配 扩展点自适应 扩展点自动激活 实现细节 初始化过程细节 远程调用细节 远程通讯细节 SPI参考手册 协议扩展 调用拦截扩展 引用监听扩展 暴露监听扩展 集群扩展 路由扩展 负载均衡扩展 合并结果扩展 注册中心扩展 监控中心扩展 扩展点加载扩展 动态代理扩展 编译器扩展 消息派发扩展 线程池扩展 序

libusb 开发者指南-牛胜超(转)

源:libusb 开发者指南 libusb Developers Guidelibusb 开发者指南 原作者:Johannes Erdfelt翻译者:牛胜超 Table of Contents目录 Preface序言 I. Introduction            引言   1. Overview      概述   2. Current OS support      流行的操作系统支持 II. API                         应用程序接口   3. Device