我的编程空间,编程开发者的网络收藏夹
学习永远不晚

如何使用 AngularJS开发一个大规模的单页应用

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

如何使用 AngularJS开发一个大规模的单页应用

今天就跟大家聊聊有关如何使用 AngularJS开发一个大规模的单页应用,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。


介绍

(SPA)这样一个名字里面蕴含着什么呢? 如果你是经典的Seinfeld电视秀的粉丝,那么你一定知道Donna Chang这个名字。Jerry跟Donna见面,Donna其实不是华人,但是却因在谈论其对中国的固有印象比如在针灸上的兴趣,以及偶然的一次单词发音带上了点儿中文口音,她将自己末尾的名字缩成了Chang Donna 在电话上同George的母亲交谈,(通过引用孔子)给她提了些建议。当George向自己的父母介绍Donna是,George的母亲意识到Donna并不是华人,因此并没有接受Donna的建议.

单页面引用 (SPA), 被定义成一个目的在于提供一种接近桌面应用程序的流畅用户体验单web页面应用程序,或者说网站. 在一个SPA中, 所有必需的代码 – HTML, JavaScript, 以及 CSS – 都是在单页面加载的时候获取,或者相关的资源被动态的加载并按需添加到页面中, 这常常是在响应用户动作的时候发生的. 尽管现代的Web技术(比如那些在HTML5中引入的技术)提供了应用程序中各自独立的逻辑页面相互感知和导航的能力,页面却不会在过程中重新加载任何端点,或者将控制转到另外一个页面. 同单页面应用程序的交互常常设计到同位于后台的web服务器的动态交互.

那么拿这项技术同 ASP.NET 的母版页Master Pages相比呢? 诚然 ASP.NET 的母版页让你可以为自己应用程序里的页面创建一个一直的布局。一个单独的母版页就可以定义好你想要在整个应用程序中的所有页面(或者一组页面)上应用的外观和标准动作. 然后你就可以再来创建你想要展示的内容各自独立页面. 当用户发起对内容页面的请求时,它们会将来自母版页的布局和来自内容页面的内容混合到一起,产生输出.

当你深入研究SPA和ASP.NET母版页实现这两者之间的不同时,你就开始会意识到它们之间相同的地方多于不同的地方——那就是SPA可以看做是一个简单的装着内容页面的外壳页面,就像是一个母版页, 只是SPA中的外壳页面不能像母版页那样根据每一个新的页面请求来重新装载和执行.

也许“单页面应用”是个不幸运的名字(像唐娜`程一样),让你相信这个技术不适合开发需要拓展到企业级,可能 包含上百页面以及数千用户的Web应用。

基于单页面应用程序开发出拥有数百页的内容,包括认证,授权,会话状态等功能,可以支持上千个用户的企业级应用。

AngularJS - 概述 

本文的样例包含的功能有创建/跟新用户账号,创建/更新客户和产品。而且,它还允许用户针对所有信息执行查询,创建和跟新销售订单。为了实现这些功能,该样例将会基于AngularJS来开发。 AngularJS 是一个由Google和AngularJS社区的开发人员维护的开源的Web应用框架。

AngularJS仅需HTML,CSS和JavaScript就可在客户端创建单页面应用。它的目标是是开发和测试更容易,增强MVC Web应用的性能。

这个库读取HTML中包含的其他定制的标签属性;然后服从这个定制的属性的指令,把页面的I/O结合到有标准JavaScript变量生成的模块中。这些JavaScript标准变量的值可以手动设置,或者从静态或动态的JSON数据源中获取。

如何使用 AngularJS开发一个大规模的单页应用

AngularJS使用入门 - 外壳页面,模块和路由
 

你首先要做的一件事情就是讲AngularJS框架下载到你的项目中,你可以从 https://angularjs.org 获得框架. 本文的示例程序是使用MS Visual Studio Web Express 2013 Edition开发的,因此我是使用如下的命令从一个Nuget包安装AngularJS的:

Install-Package AngularJS -Version 1.2.21

Nuget包管理控制台上. 为了保持简单和灵活性,我创建了一个空的 Visual Studio web 应用程序项目,并将Microsoft Web API 2库选进了核心引用. 这个应用程序将使用Web API 2 库来实现 RESTful API 的服务器端请求.

现在当你要使用AngularJS创建一个SPA应用程序是,首先要做的两件事情就是设置一个外壳页面,以及用于获取内容页面的路由表. 开始的时候,外壳页面只需要一个队AngularJS JavaScript库的引用,还有一个ng-view,来告诉AngularJS内容页面需要在外壳页面的那个地方被渲染.

<!DOCTYPE html> <html lang="en"> <head> <title>AngularJS Shell Page example</title> </head> <body>   <div> <ul> <li><a href="#Customers/AddNewCustomer">Add New Customer</a></li> <li><a href="#Customers/CustomerInquiry">Show Customers</a></li> </ul> </div> <!-- ng-view directive to tell AngularJS where to inject content pages --> <div ng-view></div> <script class="lazy" data-src="http://ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.min.js"></script> <script class="lazy" data-src="app.js"></script> </body> </html>

在上面的外壳页面示例中,几个链接呗映射到了AngularJS的路由。div标签上的ng-view指令是一个能将选定路由的被渲染内容页面包含到外壳页面来补充AngularJS的$route服务的指令. 每次当目前的路由变化时,包含的视图也会根据$route服务的配置随之改变. 比如,当用户选择了 "Add New Customer" 链接,AngularJS 就会在ng-view所在的div里面渲染用于添加一个新顾客的内容 . 被渲染的内容是一个HTML片段.

下来的app.js文件同样也被外壳页面引用了。这个文件里的JavaScript将会为应用程序创建AngularJS模块。此外,应用程序所有的路由配置也会在这个文件中定义。你可以把一个AngularJS模块想象成封装你应用程序不同部分的容器。大多数的应用程序都会有一个主方法,用来初始化应用程序的不同部分,并将它们联系起来。AngularJS应用程序却没有一个主方法,而是让模块声明性的指定应用程序如何启动和配置. 本文的示例程序将只会有一个AngularJS模块,虽然应用程序中存在几个明显不同的部分(顾客,产品,订单和用户).

现在,app.js的主要目的就是如下所示,用来设置AngularJS的路由。AngularJS的$routeProvider服务会接受  when() 方法,它将为一个Uri匹配一个模式. 当发现一次匹配时,独立页面的HTML内容会跟随相关内容的控制器文件一同被加载到外壳页面中. 控制器文件就简单的只是一个JavaScript文件,它将获得带有某个特定路由请求内容的引用.

//Define an angular module for our app  var sampleApp = angular.module(&apos;sampleApp&apos;, []);  //Define Routing for the application  sampleApp.config([&apos;$routeProvider&apos;,      function($routeProvider) {          $routeProvider.              when(&apos;/Customers/AddNewCustomer&apos;, {                  templateUrl: &apos;Customers/AddNewCustomer.html&apos;,                  controller: &apos;AddNewCustomerController&apos;              }).              when(&apos;/Customers/CustomerInquiry&apos;, {                  templateUrl: &apos;Customers/CustomerInquiry.html&apos;,                  controller: &apos;CustomerInquiryController&apos;              }).              otherwise({                  redirectTo: &apos;/Customers/AddNewCustomer&apos;              });  }]);
AngularJS 的控制器
 

AngularJS 控制器无非就是一个原生的JavaScript函数,只是被绑定到了一个特定的范围而已。控制器用来将逻辑添加到你的视图。视图就是HTML页面。这些页面只是做简单的数据展示工作,我们会使用双向数据绑定来将数据绑定到这些HTML页面上. 将模型(也就是数据)同数据粘合起来基本山就是控制器的职责了.

<div ng-controller="customerController"> <input ng-model="FirstName" type="text" style="width: 300px" /> <input ng-model="LastName" type="text" style="width: 300px" />         <div> <button class="btn btn-primary btn-large" ng-click="createCustomer()"/>Create</button>

对于上面的AddCustomer模板,ng-controller指令将会引用JavaScript函数customerController,这个控制会执行所有的数据绑定以及针对该视图的JavaScript函数.

function customerController($scope)   {      $scope.FirstName = "William";      $scope.LastName = "Gates";          $scope.createCustomer = function () {                    var customer = $scope.createCustomerObject();          customerService.createCustomer(customer,                           $scope.createCustomerCompleted,                           $scope.createCustomerError);      }  }
开箱即用 - 可扩展性问题
 

当我为本文开发这个实力程序时,首当其冲的两个扩展性问题在应用单页面应用程序时变得明显起来。其实一个开箱即用,AngularJS需要应用程序的外壳页面中所有的JavaScript文件和控制器在启动中伴随应用程序的启动被引入和下载. 对于一个大型的应用程序而言,可能会有上百个JavaScript文件,这样情况看上去就会不怎么理想。我遇到的另外一个问题就是AngularJS的路由表。我找到的所有示例都有针对所有内容的所有路由的硬编码。而我想要的确不是一个在路由表里包含上百项路由记录的方案.

看完上述内容,你们对如何使用 AngularJS开发一个大规模的单页应用有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注编程网行业资讯频道,感谢大家的支持。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

如何使用 AngularJS开发一个大规模的单页应用

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

如何使用Kotlin开发一个Android应用

如何使用Kotlin开发一个Android应用?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。第一步:为AndroidStudio安装Kotlin插件在线安装步骤
2023-05-30

如何使用MongoDB开发一个简单的 CRUD API

如何使用MongoDB开发一个简单的CRUD API在现代的Web应用程序开发中,CRUD(增删改查)操作是非常常见和重要的功能之一。在本文中,我们将介绍如何使用MongoDB数据库开发一个简单的CRUD API,并提供具体的代码示例。Mo
2023-10-22

如何用Go语言开发一个简单的聊天应用

如何用Go语言开发一个简单的聊天应用随着互联网的快速发展,聊天应用成为人们日常生活中不可或缺的一部分。而Go语言作为一种快速、可靠和高效的编程语言,越来越受到开发者的青睐。本文将介绍如何用Go语言开发一个简单的聊天应用。一、项目概述我们将使
如何用Go语言开发一个简单的聊天应用
2023-11-20

使用Kotlin如何实现开发一个Android应用

今天就跟大家聊聊有关使用Kotlin如何实现开发一个Android应用,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。配置项目gradle文件apply plugin: com.and
2023-05-31

从零开始,如何用Go语言开发一个简单的Web应用

从零开始,如何用Go语言开发一个简单的Web应用简介:Go语言是一种开源的编程语言,它具有高效、简洁以及并发编程的优势,因此在Web应用的开发中越来越受到开发者的欢迎。本文将指导读者从零开始,使用Go语言来开发一个简单的Web应用。步骤一:
从零开始,如何用Go语言开发一个简单的Web应用
2023-11-20

如何用Go语言开发一个简单的社交网络应用

如何用Go语言开发一个简单的社交网络应用引言社交网络已经成为人们日常生活中不可或缺的一部分。随着技术的发展,开发一个属于自己的社交网络应用已经变得越来越简单。本文将以Go语言为开发工具,介绍如何快速开发一个简单的社交网络应用。第一步:设计数
如何用Go语言开发一个简单的社交网络应用
2023-11-20

如何用Go语言开发一个简单的即时通讯应用

如何用Go语言开发一个简单的即时通讯应用随着互联网的发展和人们对实时沟通需求的增加,即时通讯应用在我们生活中扮演着越来越重要的角色。Go语言作为一种开源的高性能编程语言,越来越受开发者们的喜爱。本文将介绍如何使用Go语言开发一个简单的即时通
如何用Go语言开发一个简单的即时通讯应用
2023-11-20

如何使用MongoDB开发一个简单的物联网系统

如何使用MongoDB开发一个简单的物联网系统摘要:物联网系统是当前技术领域的热门话题,它将物理设备与互联网连接起来,使得设备之间可以实现数据的交互与共享。本文将介绍如何使用MongoDB开发一个简单的物联网系统,并提供代码示例供读者参考。
2023-10-22

如何使用MongoDB开发一个简单的区块链系统

如何使用MongoDB开发一个简单的区块链系统区块链技术近年来备受关注,因其去中心化、安全性高等特点,被广泛用于加密货币、合约管理等领域。本文将介绍如何使用MongoDB开发一个简单的区块链系统,并提供相应的代码示例。1.安装和配置Mong
2023-10-22

如何使用HBuilderX开发一个简单的微信小程序

这篇文章将为大家详细讲解有关如何使用HBuilderX开发一个简单的微信小程序,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、配置在微信开发者工具的设置中开启,如图:在HBuilderX中新建项目,选择
2023-06-29

如何使用MongoDB开发一个简单的电子商务网站

如何使用MongoDB开发一个简单的电子商务网站作为一种流行的非关系型数据库,MongoDB在电子商务网站的开发中具有很大的优势。它的可伸缩性和灵活性使得它成为构建强大而且易于扩展的电子商务网站的理想选择。本文将向您介绍如何使用MongoD
2023-10-22

如何使用MongoDB开发一个简单的机器学习系统

如何使用MongoDB开发一个简单的机器学习系统随着人工智能和机器学习的发展,越来越多的开发者开始使用MongoDB作为他们的数据库选择。MongoDB是一个流行的NoSQL文档型数据库,它提供了强大的数据管理和查询功能,非常适合用于存储和
2023-10-22

如何使用MongoDB开发一个简单的人脸识别系统

如何使用MongoDB开发一个简单的人脸识别系统人脸识别技术在当今社会中被广泛应用,它可以用于安全控制、人脸支付、人脸门禁等场景。利用MongoDB数据库与人脸识别算法结合,可以开发出一个简单而高效的人脸识别系统。本文将介绍如何使用Mong
2023-10-22

如何使用MongoDB开发一个简单的智能家居系统

如何使用MongoDB开发一个简单的智能家居系统智能家居系统已经成为了现代家庭生活的一部分。借助智能家居系统,我们可以通过手机或者其他设备远程控制家里的各个设备,例如灯光、电器、门锁等等。本文将介绍如何使用MongoDB来开发一个简单的智能
2023-10-22

编程热搜

目录