AngularJs每天学习之总体介绍


Posted in Javascript onAugust 07, 2017

这周末在家呆了两天,正好中午闲暇时间继续分享Angularjs相关,今天主要分享Angularjs总体介绍及数据绑定部分内容,下面直接进入主题。

1、基本概念:

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

2、版本

angualrjs1.x:目前比较稳定版本。

angularjs2.x:基于typescript编写,他在1.x基础上改动很大,偏向于移动端的开发,ES6标准编写

angularjs4.x 最新版本

目前版本2.x不是在1.x的基础上升级的,基本上说是颠覆性的,目前开始两个版本来维护,2.x开始把1.x版本基本上重新架构,并优化了大量的东西,并更提倡组件化变成,这方面跟Vue,React类似。

3、核心特性

MVC(或MVVM)设计思想:

       很多人会想Angularjs是前端MVC框架,我认为MVC只是一个设计思想,我认为可以说有MVVM的影子在里面,因为MVVM是在MVC的基础上升级的,加了数据双向绑定功能,不过这只是我个人意见,请大神们指正。

 双向数据绑定:

数据双向绑定不是AngularJs提出的,是很早就有的,有微软的WPF中运用MVVM思想、前端框架Knockoutjs都有数据双向绑定概念。

模块化和依赖注入

模块化和依赖注入是AngularJs的核心内容,也是Angular的亮点。

指令系统

        指令体统也是Angular的核心,指令系统分内置指令和自定义指令,其中我认为自定义指令的功能很强大,能实现很多强大的功能,细节到讲解指令时详细讲解。

4、擅长领域

    1)单页面应用程序Single Page Application(SPA)
    2)CRUD程序

      有可能有些园友有可能对单页面应用不是很理解,简单举一个例子,比如我们传统的通过Iframe框架的属于多页面应用MPA,多页面应用的弊端为多次加载多个页面,单页面应用都通过Html段来加载或者切换方式。这里对MPA,SPA不做过多的介绍,大家可以百度一下就理解。

  AngularJs适合于CRUD的应用系统,不适合于页面频繁交互的应用或者图形化页面及游戏类系统不适合该框架。

5、AngularJs应用构成

   任何一个ng应用都是由控制器、服务、指令、路由、过滤器等模块类型构成,下面要我用一个图表示关系:

AngularJs每天学习之总体介绍

6、模块(module)

      在AngularJS中module是一个核心的存在,包括了很多方面,比如controller, config, service, factory, directive, constant, 等等。

模块的创建方式:angular.module(‘myApp',[]);

模块的使用:在需要的地方(html某个标签上)添加ng-app

使用模块的好处:

     1)保持全局命名空间的清洁;
     2)编写测试代码更容易;
     3)易于在不同的应用程序之间复用代码。
    4)使用声明的方式,让人更加容易理解。

7、在应用中使用AngularJs

1)在应用中使用Angular时首先在页面中引用angular框架的js库代码。

<head>
 <meta charset="UTF-8">
 <title>首页</title>
 <!--引用AngularJs库 -->
 <script type="text/javascript" src="/lib/angular-1.3.0.14/angular.js"></script>
 
</head>

2)在应用Angular范围的html元素上添加ng-app模块,需要添加控制器的话加ng-controller,这个不一定是在body元素上,可以任意元素上,这个就是表明使用Angular的应用边界。

<body ng-app="myapp" ng-controller="myCtrl">
 <!-- 1、表达式绑定 -->
 <h1>{{expression}}</h1>
 <!-- 2、指令绑定-->
 <h2>{{ngmodel}}</h2>
 <input type="text" ng-model="ngmodel">
 <!-- 3、ng-bind绑定-->
 <h3 ng-bind="ngbind"></h3>
 <h3 class="ng-bind:ngbind"></h3>
 <!-- 4、ng-bind-html绑定-->
 <h4 ng-bind-html="htmlbind"></h4>
 <!-- 5、ng-bind-template -->
 <h5 ng-bind-template="{{ngbind}},{{1+1}}"></h5>
</body>

3、添加js代码,并定义模块及控制器等内容

<script>
 //模块定义
 // 第一个参数:应用名称,第二个参数:应用依赖模块
 var app = angular.module('myapp', ['ngSanitize']);
 
 // 控制器定义
 // 第一参数: 控制器名称, 第二个参数: 匿名函数, 传入作用域,并在作用域上添加额外功能
 app.controller('myCtrl', function($scope) {
  $scope.expression = "hello expression";
  $scope.ngbind = "hello ng-bind";
  $scope.htmlbind = "<font color='red'>hello,htmlbind</font>";
  $scope.subCtrl = "hello subCtrl";
 
 });
 
</script>

从以上代码段可以看出怎么定义模块及控制器的方法,并每个参数的意义都写了注释,大家可以看一下。

到时候给大家把源代码分享到GitHub上面,大家可以下载。

今天就给大家分享怎么多的内容吧,下次把数据绑定和控制器相关内容分享给大家,在此感谢大家的支持,并有什么不妥之处欢迎大家指正!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript编程起步(第四课)
Jan 10 Javascript
基于jquery的cookie的用法
Jan 10 Javascript
解析JavaScript中的标签语句
Jun 19 Javascript
js 单击式的下拉菜单效果实例
Aug 13 Javascript
JS控制日期显示的小例子
Nov 23 Javascript
js给网页加上背景音乐及选择音效的方法
Mar 03 Javascript
JQuery报错Uncaught TypeError: Illegal invocation的处理方法
Mar 13 Javascript
jQuery设置指定网页元素宽度和高度的方法
Mar 25 Javascript
jquery使用remove()方法删除指定class子元素
Mar 26 Javascript
简单介绍JavaScript数据类型之隐式类型转换
Dec 28 Javascript
原生JS封装ajax 传json,str,excel文件上传提交表单(推荐)
Jun 21 Javascript
javaScript 连接打印机,打印小票的实例
Dec 29 Javascript
关于webpack2和模块打包的新手指南(小结)
Aug 07 #Javascript
BootStrap Fileinput插件和Bootstrap table表格插件相结合实现文件上传、预览、提交的导入Excel数据操作步骤
Aug 07 #Javascript
ES6新增数据结构WeakSet的用法详解
Aug 07 #Javascript
bootstrap Table插件使用demo
Aug 07 #Javascript
Django+Vue.js搭建前后端分离项目的示例
Aug 07 #Javascript
React进阶学习之组件的解耦之道
Aug 07 #Javascript
详解前端路由实现与react-router使用姿势
Aug 07 #Javascript
You might like
php 表单数据的获取代码
2009/03/10 PHP
PHP与SQL语句常用大全
2016/12/10 PHP
javascript中巧用“闭包”实现程序的暂停执行功能
2007/04/04 Javascript
用Javscript实现表单复选框的全选功能
2007/05/25 Javascript
基于jQuery的动态增删改查表格信息,可左键/右键提示(原创自Zjmainstay)
2012/07/31 Javascript
给Flash加一个超链接(推荐使用透明层)兼容主流浏览器
2013/06/09 Javascript
javascript关于继承的用法汇总
2014/12/20 Javascript
jQuery中replaceAll()方法用法实例
2015/01/16 Javascript
jQuery显示和隐藏 常用的状态判断方法
2015/01/29 Javascript
js实现ifram取父窗口URL地址的方法
2015/02/09 Javascript
jQuery中extend函数详解
2015/07/13 Javascript
JS动态日期时间的获取方法
2015/09/28 Javascript
window.location.hash知识汇总
2015/11/09 Javascript
JS实现对中文字符串进行utf-8的Base64编码的方法(使其与Java编码相同)
2016/06/21 Javascript
Vue.js每天必学之内部响应式原理探究
2016/09/07 Javascript
浅谈VUE单页应用首屏加载速度优化方案
2018/08/28 Javascript
JavaScript闭包相关知识解析
2019/10/19 Javascript
微信小程序服务器日期格式化问题
2020/01/07 Javascript
解决微信小程序scroll-view组件无横向滚动的问题
2020/02/04 Javascript
[04:54]DOTA2 2017国际邀请赛:上届冠军WINGS采访短片
2017/08/09 DOTA
[02:17]快乐加倍!DOTA2食人魔魔法师至宝+迎霜节活动上线
2019/12/22 DOTA
解析Python中的异常处理
2015/04/28 Python
Python自动扫雷实现方法
2015/07/25 Python
Python Socket传输文件示例
2017/01/16 Python
PyQt5实现让QScrollArea支持鼠标拖动的操作方法
2019/06/19 Python
TensorFlow基于MNIST数据集实现车牌识别(初步演示版)
2019/08/05 Python
如何基于Django实现上下文章跳转
2020/09/16 Python
详解Python3.8+PyQt5+pyqt5-tools+Pycharm配置详细教程
2020/11/02 Python
担保书格式及范文
2014/04/01 职场文书
社区平安建设方案
2014/05/25 职场文书
数学教师个人工作总结
2015/02/06 职场文书
荆州古城导游词
2015/02/06 职场文书
社区党建工作总结2015
2015/05/13 职场文书
2019最新校园运动会广播稿!
2019/06/28 职场文书
一个成功的互联网创业项目,必须满足这些要求
2019/08/23 职场文书
php png失真的原因及解决办法
2021/10/24 PHP