AngularJS是谷歌开发维护的前端MVC框架,克服了HTML在构建应用上的不足,从而降低了开发的成本。

在学习AngularJS之前,有必要和之前学过的jQuery进行对比。jQuery是javascript的一个类库(一系列函数的集合),而AngularJS是javascript的一个框架(一系列类库的集合)。还有一点重要的区别是,jQuery是以DOM操作为核心,而AngularJS则是以数据和逻辑为核心,这是它们本质上的区别,类似的框架还有BackBone、KnockoutJS、Vue、React。

AngularJS有着诸多特性,最为核心的是:模块化、双向数据绑定、语义化标签、依赖注入等等,这些我在后面的学习中也会,做相应的记录。

那么在深入学习AngularJS之前,有必要来了解一下MVC模式的概念,以及它在AngularJS中的体现。

什么是MVC?

MVC其实就是一种开发模式,有模型(model)、视图(view)、控制器(controller)3部分构成,采用这种方式为合理组织代码提供了方便,降低了代码间的耦合度,功能结构清晰可见。

  • Model:一般用来处理数据,包括读取和设置数据,一般指的是操作数据库。
  • View:一般用来展示数据,就是放数据,比如通过HTML来展示。
  • Controller:因为一个模块里面可能有多个视图和模型,控制器就起到了连接模型和视图的作用。

下面引用网上的一张图片,清晰的说明了各部分的关系和作用。

在AngularJS中的体现

模块化是AngularJS的重要特性之一,所谓模块化,就是构建应用时,是以模块的方式进行组织的,就类比搭积木。

一、首先定义应用,采用ng-app属性指定一个应用,表示此标签内所包裹的内容都属于APP的一部分。

<html ng-app="App" lang="en">

二、定义模块

AngularJS提供了一个全局对象angular,在此全局对象下提供了很多属性和方法,其中的angular.module()方法用来定义一个模块

//第一参数表示模块的名称,第二个参数表示此模块依赖的其它模块
var app = angular.module('app',[]);

其实应用就是一个很大的模块。

三、定义控制器

控制器作为模型和视图的桥梁,只要我们定义好了控制器,就相当于定义好了模型和视图。

app.controller('StudentController',['$scope',function($scope){
//定义模型,这个$scope对象就相当于用来获取数据的。
$scope.students = [
{name:'周杰伦',sex:'男',age:39}
];
}]);

控制器定义好了,但是要讲模型上的数据展示到视图上,就需要将控制器关联到视图上,通过为HTML标签添加ng-controller属性并赋值相应的控制器名称,就确定了关联关系。

<table ng-controller='StudentController'>
<tr><th>姓名</th><th>性别</th><th>年龄</th></tr>
<tr ng-repeat="student in students">
<td>{{student.name}}</td>
<td>{{student.sex}}</td>
<td>{{student.age}}</td>
</tr>
</table>

以上就是MVC模式在AngularJS中的体现了。

AngularJS学习之MVC模式的更多相关文章

  1. AngularJS中的MVC模式

    MVC根据逻辑关系,把前端项目的代码分为三个层次 model:模型,就是业务数据,前端项目中就是JS变量. view:视图,就是业务数据在用户面前的展现,前端项目中就是HTML. controller ...

  2. iOS学习之MVC模式

    Modal 模型对象: 模型对象封装了应用程序的数据,并定义操控和处理该数据的逻辑和运算.例如,模型对象可能是表示商品数据 list.用户在视图层中所进行的创建或修改数据的操作,通过控制器对象传达出去 ...

  3. 二十八、带给我们一种新的编码思路——EFW框架CS系统开发中的MVC模式探讨

    回<[开源]EFW框架系列文章索引>        EFW框架源代码下载V1.3:http://pan.baidu.com/s/1c0dADO0 EFW框架实例源代码下载:http://p ...

  4. Extjs MVC模式开发,循序渐进(一)

    本文讲述extjs mvc的Helloworld,tabPanel,event,页面布局layout等内容. 本页包含:MVC模式案例(一)~MVC模式案例(六),从搭建extjs mvc到点击按钮生 ...

  5. AngularJS学习之数据绑定

    既然AngularJS是以数据作为驱动的MVC框架,在上一篇文章中,也介绍了AngularJS如何实现MVC模式的,所有模型里面的数据,都必须经过控制器,才能展示到视图中. 什么是数据绑定 首先来回忆 ...

  6. AngularJS学习笔记(1)——MVC模式的清单列表效果

    MVC模式的清单列表效果 使用WebStorm新建todo.html并链入bootstrap.css.bootstrap-theme.css.angular.js.要链入的相关css和js文件预先准备 ...

  7. ABP 教程文档 1-1 手把手引进门之 AngularJs, ASP.NET MVC, Web API 和 EntityFramework(官方教程翻译版 版本3.2.5)含学习资料

    本文是ABP官方文档翻译版,翻译基于 3.2.5 版本 转载请注明出处:http://www.cnblogs.com/yabu007/  谢谢 官方文档分四部分 一. 教程文档 二.ABP 框架 三. ...

  8. ASP.Net MVC开发基础学习笔记:一、走向MVC模式

    一.ASP.Net的两种开发模式 1.1 ASP.Net WebForm的开发模式 (1)处理流程 在传统的WebForm模式下,我们请求一个例如http://www.aspnetmvc.com/bl ...

  9. ASP.Net MVC开发基础学习笔记(1):走向MVC模式

    一.ASP.Net的两种开发模式 1.1 ASP.Net WebForm的开发模式 (1)处理流程 在传统的WebForm模式下,我们请求一个例如http://www.aspnetmvc.com/bl ...

随机推荐

  1. 使用vue封装一个tab栏切换的左侧导航栏的公共组件

     首先看最终效果图: 1.compent文件夹里添加tab文件夹,里面创建index.vue index.js index.css index.vue内的template部份代码如下:(最新更正:代码 ...

  2. ajax与websocket的区别以及websocket常用使用方式

    笔者近期在公司的项目中渐渐的接触了一些比较高级的业务逻辑处理,其中比较有意思的地方就是前端接受后台给与的推送问题. 一般前端与后端的交互主要是使用ajax进行异步操作调用交互,比较有趣的是这种交互方式 ...

  3. LR--用栈实现移进--归约分析(demo)

    1.考虑文法 \(E->E+E\) \(E->E*E\) \(E->id\) 2.最右推导 不难看出,这个文法是而二义的,所以有多个最右推导 3.移进归约 用一个栈存文法符号,用输入 ...

  4. mysql数据库的系统操作基本操作

    本文主要总结并记录一下简单且常用的mysql 在cmd 窗口中操作的基本命令 命令停止mysql 数据库服务 1.(cmd)命令行 启动:net start mysql 停止:net stop mys ...

  5. 分享:Unity3D模型跟随鼠标移动功能的小脚本 (屏幕坐标和三维空间坐标转换)

    using UnityEngine; using System.Collections; public class ModelsPosChange : MonoBehaviour { RaycastH ...

  6. 用函数指针将字符串 ”hello world“ 输出为 "world hello”

    /************************************************************************* > File Name: 指针数组2.c & ...

  7. 【树形DP】洛谷1122_最大子树和

    又是一道树形DP的入门题,思想非常简单  然而我最开始还是存了两个状态[传送门] 题目描述 小明对数学饱有兴趣,并且是个勤奋好学的学生,总是在课后留在教室向老师请教一些问题.一天他早晨骑车去上课,路上 ...

  8. 003.2---asyncio模块(上)

    asyncio(上) asyncio 的几个概念 event_loop(事件循环):程序开启一个无线的循环,程序员会把一些函数(协程)注册到事件循环上,当满足事件发生的时候,调用相应的协程函数. co ...

  9. GD32F20x系列使用问题总结

    GD单片机近几年越来越火了,既有他自身相比与ST的价格优势,也有支持国货的信仰加成.然而一个新的东西,或者说一个相对较新的东西,在使用的友好性和资料的完整性方面还有很长的路要走. 现将个人使用过程中碰 ...

  10. python2.7入门---XML解析

        首先我们先来考虑,什么是XML?XML 指可扩展标记语言(eXtensible Markup Language).XML 被设计用来传输和存储数据.XML是一套定义语义标记的规则,这些标记将文 ...