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 学习之旅 (1)
Feb 05 Javascript
由JavaScript技术实现的web小游戏(不含网游)
Jun 12 Javascript
Javascript图像处理—为矩阵添加常用方法
Dec 27 Javascript
Javascript排序算法之计数排序的实例
Apr 05 Javascript
关注jquery技巧提高jquery技能(前端开发必学)
Nov 02 Javascript
微信小程序 下拉菜单简单实例
Apr 13 Javascript
ionic3 懒加载
Aug 16 Javascript
JavaScript对象的浅拷贝与深拷贝实例分析
Jul 25 Javascript
详解Vue中CSS样式穿透问题
Sep 12 Javascript
微信小程序获取公众号文章列表及显示文章的示例代码
Mar 10 Javascript
vue中解决微信html5原生ios虚拟键返回不刷新问题
Oct 20 Javascript
vue中watch的用法汇总
Dec 28 Vue.js
关于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
zf框架的zend_cache缓存使用方法(zend框架)
2014/03/14 PHP
PHP删除数组中空值的方法介绍
2014/04/14 PHP
laravel解决迁移文件一次删除创建字段报错的问题
2019/10/24 PHP
2020最新版 PhpStudy V8.1版本下载安装使用详解
2020/10/30 PHP
基于jquery的Repeater实现代码
2010/07/17 Javascript
jquery插件 autoComboBox 下拉框
2010/12/22 Javascript
图片Slider 带左右按钮的js示例
2013/08/30 Javascript
jquery 实现窗口的最大化不论什么情况
2013/09/03 Javascript
Node.js静态文件服务器改进版
2016/01/10 Javascript
JavaScript学习笔记之取数组中最大值和最小值
2016/03/23 Javascript
浅析Ajax语法
2016/12/05 Javascript
bootstrap模态框远程示例代码分享
2017/05/22 Javascript
实例讲解Vue.js中router传参
2018/04/22 Javascript
vue通过滚动行为实现从列表到详情,返回列表原位置的方法
2018/08/31 Javascript
浅谈Vue 性能优化之深挖数组
2018/12/11 Javascript
详解javascript脚本何时会被执行
2021/02/05 Javascript
python使用paramiko模块实现ssh远程登陆上传文件并执行
2014/01/27 Python
Python的时间模块datetime详解
2017/04/17 Python
浅谈Django中的数据库模型类-models.py(一对一的关系)
2018/05/30 Python
python爬虫自动创建文件夹的功能
2018/08/01 Python
Python3 Post登录并且保存cookie登录其他页面的方法
2018/12/28 Python
对Python协程之异步同步的区别详解
2019/02/19 Python
pandas 空数据处理方法详解
2019/11/02 Python
pytorch forward两个参数实例
2020/01/17 Python
利用Python如何实时检测自身内存占用
2020/05/09 Python
python+openCV对视频进行截取的实现
2020/11/27 Python
创建省级文明单位实施方案
2014/02/27 职场文书
学习十八大的心得体会
2014/09/01 职场文书
介绍信怎么写
2015/01/30 职场文书
2015年收银员个人工作总结
2015/04/01 职场文书
吴仁宝观后感
2015/06/09 职场文书
2015年暑期社会实践方案
2015/07/14 职场文书
军训新闻稿范文
2015/07/17 职场文书
新郎父亲婚礼致辞
2015/07/27 职场文书
PL350与SW11的比较
2021/04/22 无线电
Go中使用gjson来操作JSON数据的实现
2022/08/14 Golang