首页 > 其他分享 >谷歌发布 AngularJS 1.0,允许扩展HTML语法

谷歌发布 AngularJS 1.0,允许扩展HTML语法

时间:2022-11-28 15:33:41浏览次数:79  
标签:1.0 description DOM image HTML AngularJS scope

谷歌2012年06月15日发布了一个全新的Web模板——AngularJS 1.0。

谷歌发布 AngularJS 1.0,允许扩展HTML语法_html

谷歌称, AngularJS可以让你扩展HTML的语法,以便清晰、简洁地表示应用程序中的组件,并允许将标准的HTML作为你的模板语言。AngularJS可以通过双向数据绑定自动从拥有JavaScript对象(模型)的UI(视图)中同步数据。
AngularJS的核心功能包括:

  • 数据绑定当数据发生变化时,AngularJS会自动从UI中移动数据到模型(model)和后端(back),没有继承类,也没有封装或调用getter/setter方法。模型可以像一个原始数组一样简单,也可以像自定义JavaScript类型一样复杂。

数据绑定可能是AngularJS最酷最实用的特性。它能够帮助你避免书写大量的初始代码从而节约开发时间。一个典型的web应用可能包含了80%的代码用来处理,查询和监听DOM。数据绑定是的代码更少,你可以专注于你的应用。

我们想象一下Model是你的应用中的简单事实。你的Model是你用来读取或者更新的部分。数据绑定指令提供了你的Model投射到view的方法。这些投射可以无缝的,毫不影响的应用到web应用中。

传统来说,当model变化了。 开发人员需要手动处理DOM元素并且将属性反映到这些变化中。这个一个双向的过程。一方面,model变化驱动了DOM中元素变化,另一方面,DOM元素的变化也会影响到Model。这个在用户互动中更加复杂,因为开发人员需要处理和解析这些互动,然后融合到一个model中,并且更新View。这是一个手动的复杂过程,当一个应用非常庞大的时候,将会是一件非常费劲的事情。

这里肯定有更好的解决方案!那就是AngularJS的双向数据绑定,能够同步DOM和Model等等。

这里有一个非常简单的例子,用来演示一个input输入框和<h1>元素的双向绑定:

<!doctype html>
<html ng-app>
<head>
<script src="​​​http://code.angularjs.org/angular-1.0.0rc10.min.js"></script​​​>
</head>
<body>
<div>
<label>Name:</label>
<input type="text" ng-model="yourName" placeholder="Enter a name here">
<hr>
<h1>Hello, {{yourName}}!</h1>
</div>
</body>
</html>

  • HTML作为模板AngularJS允许你使用与HTML规范兼容的、你的应用特有的元素、属性、类的类型来扩展HTML语法。

在AngularJS中,一个模板就是一个HTML文件。但是HTML的内容扩展了,包含了很多帮助你映射model到view的内容。

HTML模板将会被浏览器解析到DOM中。DOM然后成为AngularJS编译器的输入。AngularJS将会遍历DOM模板来生成一些指导,即,directive(指令)。所有的指令都负责针对view来设置数据绑定。

我们要理解AuguarJS并不把模板当做String来操作。输入AngularJS的是DOM而非string。数据绑定是DOM变化,不是字符串的连接或者innerHTML变化。使用DOM作为输入,而不是字符串,是AngularJS区别于其它的框架的最大原因。使用DOM允许你扩展指令词汇并且可以创建你自己的指令,甚至开发可重用的组件。

最大的好处是为设计师和开发者创建了一个紧密的工作流。设计师可以像往常一样开发标签,然后开发者拿过来添加上功能,通过数据绑定将会使得这个过程非常简单。

这里有一个例子,我们使用ng-repeat指令来循环图片数组并且加入img模板,如下:

function AlbumCtrl($scope) {
scope.images = [
{"image":"img/image_01.png", "description":"Image 01 description"},
{"image":"img/image_02.png", "description":"Image 02 description"},
{"image":"img/image_03.png", "description":"Image 03 description"},
{"image":"img/image_04.png", "description":"Image 04 description"},
{"image":"img/image_05.png", "description":"Image 05 description"}
];
}

<div ng-controller="AlbumCtrl">
<ul>
<li ng-repeat="image in images">
<img ng-src="{{image.thumbnail}}" alt="{{image.description}}">
</li>
</ul>
</div>

这里还有一件事值得提一句,AngularJS并不强制你学习一个新的语法或者从你的应用中提出你的模板。

     MVC: 针对客户端应用开发AngularJS吸收了传统的MVC基本原则。MVC或者Model-View-Controll设计模式针对不同的人可能意味不同的东西。AngularJS并不执行传统意义上的MVC,更接近于MVVM(Moodel-View-ViewModel)。

Model

model是应用中的简单数据。一般是简单的javascript对象。这里没有必要继承框架的classes,使用proxy对象封装或者使用特别的setter/getter方法来访问。事实上我们处理vanilla javascript的方法就是一个非常好的特性,这种方法使得我们更少使用应用的原型。

ViewModel

viewmodel是一个用来提供特别数据和方法从而维护指定view的对象。

viewmodel是$scope的对象,只存在于AnguarJS的应用中。$scope只是一个简单的js对象,这个对象使用简单的API来侦测和广播状态变化。

Controller

controller负责设置初始状态和参数化$scope方法用以控制行为。需要指出的controller并不保存状态也不和远程服务互动。

View

view是AngularJS解析后渲染和绑定后生成的HTML 。这个部分帮助你创建web应用的架构。$scope拥有一个针对数据的参考,controller定义行为,view处理布局和互动。

     依赖注入(Dependency Injection,即DI)

AngularJS拥有内建的依赖注入子系统,可以帮助开发人员更容易的开发,理解和测试应用。

DI允许你请求你的依赖,而不是自己找寻它们。比如,我们需要一个东西,DI负责找创建并且提供给我们。

为了而得到核心的AngularJS服务,只需要添加一个简单服务作为参数,AngularJS会侦测并且提供给你:

function EditCtrl($scope, $location, $routeParams) {
// Something clever here...
}

你也可以定义自己的服务并且让它们注入:

angular.
module('MyServiceModule', []).
factory('notify', ['$window', function (win) {
return function (msg) {
win.alert(msg);
};
}]);
function myController(scope, notifyService) {
scope.callNotify = function (msg) {
notifyService(msg);
};
}
myController.$inject = ['$scope', 'notify'];

指令可以用来创建自定义的标签。它们可以用来装饰元素或者操作DOM属性。

这里是一个例子,它监听一个事件并且针对的更新它的$scope ,如下:

myModule.directive('myComponent', function(mySharedService) {
return {
restrict: 'E',
controller: function($scope, $attrs, mySharedService) {
$scope.$on('handleBroadcast', function() {
$scope.message = 'Directive: ' + mySharedService.message;
});
},
replace: true,
template: '<input>'
};
});

然后,你可以使用这个自定义的directive来使用:

<my-component ng-model="message"></my-component>

使用一系列的组件来创建你自己的应用将会让你更方便的添加,删除和更新功能。

  • 易测性:​​JS是一个动态的解析性语言,而不是编译类型的,因此非常的难写测试。AngularJS被开成一个可测试的框架。它甚至包含了点对点的单元测试runner。如果你喜欢这个特性,看看这个项目:​​https://github.com/angular/angular-seed​

项目主页: ​​angularjs.org​

 ​​AngularUI​

​JavaScript Data Binding with AngularJS Part I – Getting Started​

​JavaScript Data Binding with AngularJS Part II – Binding a View to a Controller/ViewModel​

​Writing an AngularJS App with Socket.IO​

​http://www.angularjs.cn/​​ 

​我的web开发最强组合:Play1+angularjs+bootstrap ++ (idea + livereload)​​ 

​现在就开始使用AngularJS的三个重要原因​



标签:1.0,description,DOM,image,HTML,AngularJS,scope
From: https://blog.51cto.com/shanyou/5891369

相关文章

  • https://www.cnblogs.com/liyue3/p/16924616.html
    Android12源码网盘下载路径:“iTOP-3588开发板\01_【1TOP-RK3588开发板】基础资料\03_iTOP-RK3588开发板Android12源码”源码是分卷压缩包,需要全部下载下来放在同......
  • 直播app源码,HTML + jQuery 实现轮播图
    直播app源码,HTML+jQuery实现轮播图一:HTML页面部分1、首先创建可视窗口添加6张图片,添加CSS样式 2、添加左右切换按钮,设置样式 3、添加图片导航器,设置样式,添加悬......
  • html代码大全
    文件类型<HTML></HTML>(放在档案的开头与结尾)文件主题<TITLE></TITLE>(必须放在「文头」区块内)文头<HEAD></HEAD>(描述性资料,像是「主题」)文体<BODY></BODY......
  • HTML基础-表单标签,button按钮,select下拉菜单
    HTML基础-表单标签目标和学习路径1.表单标签1.1input系列标签的基本介绍1.2input系列标签-文本框(拓展)value属性和name属性作用介1.3input系列标签-密码框......
  • HTML基础-列表标签和表格标签
    HTML基础-列表标签和表格标签二、列表标签2.列表的应用场景Ø场景:在网页中按照行展示关联性的内容,如:新闻列表、排行榜、账单等Ø特点:按照行的方式,整齐显示内容Ø......
  • Solon v1.11.0 发布,Hello Java
    一个更现代感的Java应用开发框架:更快、更小、更自由。没有Spring,没有Servlet,没有JavaEE;独立的轻量生态。主框架仅0.1MB。@ControllerpublicclassApp{publ......
  • from psd to html ,building a set of website designs step by step
    FromPSDtoHTML,BuildingaSetofWebsiteDesignsStepbyStep​​CollisTa'eed​​​onJun19th2008with​​371comments​​TutorialDetailsPrograms:HT......
  • 43个PSD to XHTML,CSS教程
    在中国,很多前端开发初学者都会把xHTML+CSS页面制作说成​​DIV+CSS​​​,甚至很多人都还不知道xHTML+​​CSS​​是什么意思,只知道盲目的追求DIV+CSS,但在国外,是没有DIV+CSS......
  • Html5游戏开发
    [url]http://v.youku.com/v_show/id_XNDQ0MTE4OTUy.html[/url][url]​​​http://video.baidu.com/v?ct=301989888&rn=20&pn=0&db=0&s=8&word=html5......
  • Hadoop2.6+Hbase1.0集群搭建
    HBase安装​​http://hbase.apache.org/​​ HBase的安装也有三种模式:单机模式、伪分布模式和完全分布式模式,在这里只介绍完全分布模式。前提是Hadoop集群和Zookeeper已经......