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 相关文章推荐
脚本吧 - 幻宇工作室用到js,超强推荐share.js
Dec 23 Javascript
两种WEB下的模态对话框 (asp.net或js的分别实现)
Dec 02 Javascript
jquery在Chrome下获取图片的长宽问题解决
Mar 20 Javascript
关于jquery input textare 事件绑定及用法学习
Apr 03 Javascript
jQuery获取iframe的document对象的方法
Oct 10 Javascript
javascript字符串循环匹配实例分析
Jul 17 Javascript
以Python代码实例展示kNN算法的实际运用
Oct 26 Javascript
微信开发 消息推送实现代码
Oct 21 Javascript
老生常谈jquery中detach()和remove()的区别
Mar 02 Javascript
利用forever和pm2部署node.js项目过程
May 10 Javascript
JS HTML图片显示Canvas 压缩功能
Jul 21 Javascript
详解vue指令与$nextTick 操作DOM的不同之处
Aug 02 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程序中的常见漏洞进行攻击(上)
2006/10/09 PHP
PHP开发中常见的安全问题详解和解决方法(如Sql注入、CSRF、Xss、CC等)
2014/04/21 PHP
比较简单实用的使用正则三种版本的js去空格处理方法
2007/11/18 Javascript
基于jQuery的获得各种控件Value的方法
2010/11/19 Javascript
IE6/7 and IE8/9/10(IE7模式)依次隐藏具有absolute或relative的父元素和子元素后再显示父元素
2011/07/31 Javascript
一行代码告别document.getElementById
2012/06/01 Javascript
ie8本地图片上传预览示例代码
2014/01/12 Javascript
jQuery验证元素是否为空的两种常用方法
2015/03/17 Javascript
第七章之菜单按钮图标组件
2016/04/25 Javascript
微信小程序实战之运维小项目
2017/01/17 Javascript
BootStrap栅格系统、表单样式与按钮样式源码解析
2017/01/20 Javascript
微信小程序之picker日期和时间选择器
2017/02/09 Javascript
AngularJS ui-router (嵌套路由)实例
2017/03/10 Javascript
Vue2 SSR渲染根据不同页面修改 meta
2017/11/20 Javascript
jsonp跨域获取数据的基础教程
2018/07/01 Javascript
解决vuejs项目里css引用背景图片不能显示的问题
2018/09/13 Javascript
如何制作一个Node命令行图像识别工具
2018/12/12 Javascript
element-ui带输入建议的input框踩坑(输入建议空白以及会闪出上一次的输入建议问题)
2019/01/15 Javascript
koa2 数据api中间件设计模型的实现方法
2020/07/13 Javascript
javascript实现贪吃蛇游戏(娱乐版)
2020/08/17 Javascript
vue中defineProperty和Proxy的区别详解
2020/11/30 Vue.js
Python Selenium 之数据驱动测试的实现
2019/08/01 Python
基于Python批量生成指定尺寸缩略图代码实例
2019/11/20 Python
将tensorflow模型打包成PB文件及PB文件读取方式
2020/01/23 Python
python设置表格边框的具体方法
2020/07/17 Python
如何防止同一个帐户被多人同时登录
2013/08/01 面试题
应届生财务管理求职信
2013/11/06 职场文书
党校学习思想汇报
2014/01/06 职场文书
《猴子种果树》教学反思
2014/04/26 职场文书
2014年四风问题个人对照自查剖析材料
2014/09/15 职场文书
幼儿园大班教师个人工作总结
2015/02/05 职场文书
收银员岗位职责范本
2015/04/07 职场文书
军事博物馆观后感
2015/06/05 职场文书
军训心得体会范文(2016最新篇)
2016/01/11 职场文书
2016年学校爱国卫生月活动总结
2016/04/06 职场文书
Python包argparse模块常用方法
2021/06/04 Python