专栏首页快乐八哥Angular企业级开发(3)-Angular MVC实现

Angular企业级开发(3)-Angular MVC实现

1.MVC介绍

Model-View-Controller

在20世纪80年代为程序语言Smalltalk发明的一种软件架构。MVC模式的目的是实现一种动态的程序设计,使后续对程序的修改和扩展简化,并且使程序某一部分的重复利用成为可能。除此之外,此模式通过对复杂度的简化,使程序结构更加直观。软件系统通过对自身基本部分分离的同时也赋予了各个基本部分应有的功能。专业人员可以通过自身的专长分组:

  • 控制器(Controller)- 负责转发请求,对请求进行处理。
  • 视图(View) - 界面设计人员进行图形界面设计。
  • 模型(Model) - 程序员编写程序应有的功能(实现算法等等)、数据库专家进行数据管理和数据库设计(可以实现具体的功能)。

2.Angular MVC

在AngularJS应用中,MVC设计模式通过JavaScript和HTML来实现。使用HTML定义视图,用JavaScript实现模型和控制器。

2.1Angular MVC中的Views

在AngularJS应用中,视图是使用HTML来创建,HTML可以是一个简单单独的页面,也可以是html代码片段。

一个简单的HTML页面:

<!DOCTYPE html>
<html>
<head>
<title>Hack Hands Angular - Demos</title>
<meta charset="utf-8" />
</head>
<body>
<div id="messageTitle"></div>
<div id="message">Hello World</div>
</body>
</html>

AngularJS应用大多是是SPA(Single Page Application)应用,当前页面只是展示了应用的一部分内容,通过ng-view去加载更多的视图内容。含有ng-view的html文件如下:

<!DOCTYPE html>
<html>
<head>
<title>Hack Hands Angular - Demos</title>
<meta charset="utf-8" />
</head>
<body>
<h1>Hack Hands Angular Demos</h1>
<div ng-view>
<div id="messageTitle"></div>
<div id="message">Hello World</div>
</div>
</body>
</html>

2.2 Angular MVC中的Controllers

应用的控制器,本质上它是一个JavaScript的函数,用于衔接页面模板和逻辑代码,并通过添加对象和行为来增强模板中作用域的功能在AngularJS中,可以在标签上使用ng-controller指令指定,也可以在配置ui-view的情况下,在路由里面指定。

// Code goes here
var hackApp = angular.module("hackApp", []);

var indexController = hackApp.controller("indexController", function($scope) {
  // controller logic goes here
  $scope.message = "Hello Hacking World"
});

2.3 Angular MVC中的Models

Model属于数据层,它即可以表示整个Anglar应用的数据模型对象,也可以只表示某个实体对象

Model数据模型对象依附于作用域,无论是整个模型对象或某个实体对象,都必须被Angular的作用域以属性的方式进行引用,这种引用可以显式或隐式的进行创建。

最后的demo地址:http://plnkr.co/edit/dcTVySJOEdszXvElJXFi?p=preview

3.参考网址

  1. MVC维基百科
  2. https://www.pluralsight.com/blog/software-development/tutorial-angularjs-mvc-implementation
  3. http://www.cnblogs.com/chaojidan/p/4244668.html

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 浅谈ASP.NET客户端回调

    最近同学要做一个项目,需求是:音乐播放器。大致UI如图: ? 点击右边的“X”图标,可以删除当前选定的这首歌。因为现实界面的代码是复制过来的,并且前辈使用的是...

    八哥
  • Vagrant使用

    常用命令 命令说明 vagrant up 运行vm vagrant status 查看当前虚拟机运行状态 vagrant suspend 暂停...

    八哥
  • 使用jQuery的animate方法制作滑动菜单

    周末看Ziv小威的博客《制作滑动条菜单,如何延时处理滑动效果,避免动画卡顿》,参见地址:http://www.cnblogs.com/zivxiaowei/p/...

    八哥
  • leetcode-66-Plus One

    Given a non-empty array of digits representing a non-negative integer, plus one ...

    chenjx85
  • Kafka动态增加Topic的副本

    由于Producer和Consumer都只会与Leader角色的分区副本相连,所以kafka需要以集群的组织形式提供主题下的消息高可用。kafka支持主备复制,...

    py3study
  • 前端代码标准最佳实践:HTML篇

    Web前端代码中,HTML是根本,CSS和JavaScript也是围绕着既有的HTML结构来构建,所以良好的HTML代码结构,除了提高了HTML代码的可读性,可...

    葡萄城控件
  • [转] PHP读取HTTP接口如何处理超时

    原文地址:https://www.jianshu.com/p/446ea7aaea86

    陶士涵
  • 碎片化 | 第五阶段-03-项目研发流程介绍-视频

    如清晰度低,可转PC网页观看高清版本: http://v.qq.com/x/page/b05005xh75v.html 项目流程 ?

    码神联盟
  • 剑圣的苦恼 CDQ分治入门

    剑圣非常在意自己的实力排名,所以剑圣想知道力量, 敏捷, 智力皆在自己之下的英雄有多少个? 你能帮帮他吗?

    ACM算法日常
  • tcp客户端socket

    skylark

扫码关注云+社区

领取腾讯云代金券