通过Web Api 和 Angular.js 构建单页面的web 程序

在传统的web 应用程序中,浏览器端通过向服务器端发送请求,然后服务器端根据这个请求发送HTML到浏览器,这个响应将会影响整个的页面,比如说:用户通过一个连接导航到一个页面,会发送一个请求到服务器端,接下来服务器将会发送一个新的页面给浏览器。
但是在单页面应用程序中,整个页面只是在浏览器一开始请求的时候才会加载,接下来的请求,下来的交互请求都是通过ajax 来完成的,这就意味着只有部分的页面会更新,并不需要去加载整个的页面,这就减少了对用户操作的响应时间,从而使用户有一个更流畅的体验。但是在传统的web 应用程序中,并不存在这样的架构,但是新兴的技术比如web api ,angular.js 等很容易的去设计和实现单页面的web 应用程序。如图便是单页面程序的原理:

本文将演示如何通过web api 和angular.js 来创建web 应用程序的。

首先打开vs 2013 然后新建一个asp.net 应用程序,注意勾选web api 选项,如图:

在models 文件夹新建一个user类:

1     public class User
2     {
3         public int UserID { get; set; }
4         public string Name { get; set; }
5     }

然后创建一个web api :UserController,本文就演示如何加载和添加数据,相信如果看懂本文的话更新和删除都会做的。

 1     public class UserController : ApiController
 2     {
 3         private static List<User> userList = new List<User>() {
 4                                       new User(){ UserID=1, Name="zhangsan"},
 5                                       new User(){UserID=2, Name="lisi"},
 6                                       new  User (){UserID=3, Name="wangwu"},
 7                                       new User(){ UserID=4,Name="zhaoliu"}
 8         };
 9
10
11         public IEnumerable<User> Get()
12         {
13             return userList;
14         }
15         public void Post(User user)
16         {
17             userList.Add(user);
18         }
19
20     }

接下来我们就需要用anjular.js来创建接口了,首先需要安装angular.js 。angular.js 是一个开源的基于mvc的javascript框架,可以更好的开发和测试web应用程序。我们可以用vs 的包管理工具来安装angualr.js。视图>其他窗口>程序包管理器控制台 输入一下代码 安装angular.js:

成功之后,Scripts 文件夹会有anjular.js 的相关文件。我们知道anjular.js 基于mvc 的 首先我们新建一个controller 在scripts 文件夹命名为appcontroller.js

 1 var appmodule = angular.module(‘app‘, []);//angular是模块化的,所以首先我们需要实例化一个模块
 2
 3 //创建一个controller
 4 appmodule.controller(‘appcontroller‘, function ($scope, $http) {
 5
 6     $scope.UserID = ‘‘;
 7     $scope.Name = ‘‘;
 8     $scope.Users = [];
 9     $scope.Load = function () {
10
11         $http.get("/api/user").success(function (data, status) {
12
13             $scope.Users = data;
14         })
15
16     };
17
18     $scope.AddUser = function () {
19
20         $http.post("/api/user", { userid: $scope.UserID, name: $scope.Name }).success(function (data, status) {
21             $scope.Load();
22         })
23     };
24
25     $scope.Load();
26
27 });

然后视图的代码:

 1 @{
 2     ViewBag.Title = "Home Page";
 3 }
 4
 5 <div ng-app="app">
 6
 7     <div ng-controller="appcontroller">
 8         <table>
 9             <caption>Add User</caption>
10             <tr><td>user ID</td><td>Name</td></tr>
11             <tr>
12                 <td><input type="text" ng-model="UserID"  placeholder="input the user id" /></td>
13                 <td><input type="text" ng-model="Name" placeholder="input the user name" /> </td>
14             </tr>
15             <tr>
16                 <td>
17                     <button ng-click="AddUser()">Add User</button>
18                 </td>
19             </tr>
20         </table>
21
22         <table class="table table-bordered table-hover">
23             <caption>User List</caption>
24             <thead>
25                 <tr>
26                     <th>User ID </th>
27                     <th>Name</th>
28                 </tr>
29             </thead>
30             <tbody>
31
32                 <tr ng-repeat="user in Users">
33                     <td>
34                         {{user.UserID}}
35                     </td>
36                     <td>
37                         {{user.Name}}
38                     </td>
39                 </tr>
40             </tbody>
41         </table>
42     </div>
43 </div>
44 @section scripts{
45     <script src="~/Scripts/angular.js"></script>
46     <script src="~/Scripts/appcontroller.js"></script>
47 }

其中代码中 :

ng-app:表示的是告诉angular.js 哪个dom 的根元素用的这个模块。

ng-controller:是告诉angular.js 哪个dom元素是用过这个controller。

ng-click:表示用户点击的时候会调用哪个函数。

{{}}:这个是数据绑定的语法。

效果如图:

总结:

我也是初步的学习anjular.js。感觉和knockout.js 有点类似。其实学习这些不难,只要掌握它的原理,熟悉它的语法。我相信能很快的上手。anjular.js 是支持双向绑定的,它的好多功能还没有详细的了解,以后还会分享。总之我们掌握了这些就不需要去做有一些dom的操作和写一些冗余的代码了。

时间: 2024-12-11 18:30:54

通过Web Api 和 Angular.js 构建单页面的web 程序的相关文章

【Web API系列教材】1.3 — 实战:用ASP.NET Web API和Angular.js创建单页面应用程序(下)

练习2:创建SPA界面 在本练习中,你将首先创建Geek Quiz的web前端,使用AngularJS专注于单页面应用程序的交互.然后你将使用CSS3来执行丰富的动画和提供一个当从一个问题转换到另一个问题时切换上下文的可视化效果以加强用户体验. 任务1:使用AngularJS来创建SPA界面 在本任务中,你将使用AngularJS来实现Geek Quiz应用程序的客户端.AngularJS是一个开源的JavaScript框架,它能够搭配MVC以加强基于浏览器的应用程序,使其对于开发和测试都更加便

使用 Vuex + Vue.js 构建单页应用

鉴于该篇文章阅读量大,回复的同学也挺多的,特地抽空写了一篇 vue2.0 下的 vuex 使用方法,传送门:使用 Vuex + Vue.js 构建单页应用[新篇] -------------------- 华丽的分割线 -------------------- 原文地址:https://coligo.io/learn-vuex-by-building-notes-app/ 前言:在最近学习 Vue.js 的时候,看到国外一篇讲述了如何使用 Vue.js 和 Vuex 来构建一个简单笔记的单页应用

好程序员web前端分享如何构建单页Web应用

好程序员web前端分享如何构建单页Web应用,首先我们来看一看单页应用是什么?所谓单页应用,指的是在一个页面上集成多种功能,甚至整个系统就只有一个页面,所有的业务功能都是它的子模块,通过特定的方式挂接到主界面上.它是AJAX技术的进一步升华,把AJAX的无刷新机制发挥到极致,因此能造就与桌面程序媲美的流畅用户体验. 其实单页应用我们并不陌生,很多人写过ExtJS的项目,用它实现的系统,很天然的就已经是单页的了,也有人用jQuery或者其他框架实现过类似的东西.用各种JS框架,甚至不用框架,都是可

用AngularJS构建单页应用,根据需求加载JS文件的方法

我们在AngularJS中可以根据网址不同直接切换view,动态加载网页模板,但是控制模板的控制器需要先定义好才可以,不能和网页模板同时加载,这样就造成整个网站的JS都要先加载完成. requireJS是大家第一个想到的东西,但是体积有点大,github上就有个人用它写了Angular的动态加载controller模块,是通过js promise异步编程技术实现的,最后的解决很简单~~ 首先在$routeProvider里面加resolve属性, $routeProvider. when('/p

angular js 表单验证

1 <!doctype html> 2 <html ng-app="myapp"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>Document</title> 6 <style> 7 body{ 8 padding: 50px; 9 font-family: "微软雅黑"; 10 } 11 input{ 12 margi

React构建单页应用方法与实例

React作为目前最流行的前端框架之一,其受欢迎程度不容小觑,从这门框架上我们可以学到许多其他前端框架所缺失的东西,也是其创新性所在的地方,比如虚拟DOM.JSX等.那么接下来我们就来学习一下这门框架是如何构建起一个单页应用的. 前言 首先在学习这门框架前,你需要对以下知识有所了解: 原生JS基础 CSS基础 npm包管理基础 webpack构建项目基础 ES6规范 以上五个知识点也是目前学习其他前端框架所必须了解的前置任务.JS和CSS就不多说了,npm是目前最提倡也是占据主导地位的包管理工具

【Web API系列教程】1.1 — ASP.NET Web API入门

前言 HTTP不仅仅服务于web页面.同一时候也是构建暴露服务和数据的API的强大平台.HTTP有着简单.灵活和无处不在的特点.你能想到的差点儿全部平台都包括有一个HTTP库.所以HTTP服务能够遍及广泛的client,包括浏览器.移动设备和传统桌面应用程序. ASP.NET Web API是一个在.NET框架上构建web API的框架.在本教程中,你将使用ASP.NET Web API来创建一个返回产品列表的web API. 创建Web API项目 在本教程中,你将使用ASP.NET Web

C#开发微信门户及应用(47) - 整合Web API、微信后台管理及前端微信小程序的应用方案

在微信开发中,我一直强调需要建立一个比较统一的Web API接口体系,以便实现数据的集中化,这样我们在常规的Web业务系统,Winform业务系统.微信应用.微信小程序.APP等方面,都可以直接调用基于JSON数据格式的Web API接口,在我之前的几篇随笔中,对这方面都有一定的介绍,本篇继续这个主题,细致深入的阐述如何在接口和源码的基础上整合Web API.微信后台管理及前端微信小程序的应用方案. 1.基于Web API的微信开发框架 首先我们各个业务模块,都应该围绕着Web API进行展开,

Web APi 2.0优点和特点?在Web APi中如何启动Session状态?

前言 曾几何时,微软基于Web服务技术给出最流行的基于XML且以扩展名为.asmx结尾的Web Service,此服务在.NET Framework中风靡一时同时也被.NET业界同仁所青睐,几年后在此基础上又扩展成为了WCF,基于SOAP协议,基于WCF标准需要一些配置上的改变.现如今,大势所趋我们只需要HTTP协议以及更加优美的JSON格式,这时将不得不出现一个更加轻量级的Web服务技术.当然,Web Service和WCF虽然有其局限性但是其仍被许多企业所广泛应用,说明一时半会还不会被淘汰,