通过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的操作和写一些冗余的代码了。

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

  1. Web API 2 入门——使用ASP.NET Web API和Angular.js构建单页应用程序(SPA)(谷歌翻译)

    在这篇文章中 概观 演习 概要 由网络营 下载网络营训练包 在传统的Web应用程序中,客户机(浏览器)通过请求页面启动与服务器的通信.然后,服务器处理请求,并将页面的HTML发送给客户端.在与页面的后 ...

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

    鉴于该篇文章阅读量大,回复的同学也挺多的,特地抽空写了一篇 vue2.0 下的 vuex 使用方法,传送门:使用 Vuex + Vue.js 构建单页应用[新篇] ------------------ ...

  3. 使用 Vuex + Vue.js 构建单页应用【新篇】

    使用 Vuex + Vue.js 构建单页应用[新篇] 在去年的七月六号的时候,发布了一篇 使用 Vuex + Vue.js 构建单页应用 的文章,文章主要是介绍 vuex 的基本使用方法,发现对大部 ...

  4. List多个字段标识过滤 IIS发布.net core mvc web站点 ASP.NET Core 实战:构建带有版本控制的 API 接口 ASP.NET Core 实战:使用 ASP.NET Core Web API 和 Vue.js 搭建前后端分离项目 Using AutoFac

    List多个字段标识过滤 class Program{  public static void Main(string[] args) { List<T> list = new List& ...

  5. angular js 表单验证

    <!doctype html> <html ng-app="myapp"> <head> <meta charset="UTF- ...

  6. ASP.NET Web Api vs Node.js Benchmark

    http://mikaelkoskinen.net/post/asp-net-web-api-vs-node-js-benchmark ASP.NET Web Api vs Node.js Bench ...

  7. require.js实现单页web应用(SPA)

    本文转载自:https://blog.csdn.net/qq_33401924/article/details/53815922 移动端单页应用基本上是做移动端最流行的的方式了,但是对于很多前端来说, ...

  8. 在 ASP.NET Core Web API中使用 Polly 构建弹性容错的微服务

    在 ASP.NET Core Web API中使用 Polly 构建弹性容错的微服务 https://procodeguide.com/programming/polly-in-aspnet-core ...

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

    React作为目前最流行的前端框架之一,其受欢迎程度不容小觑,从这门框架上我们可以学到许多其他前端框架所缺失的东西,也是其创新性所在的地方,比如虚拟DOM.JSX等.那么接下来我们就来学习一下这门框架 ...

随机推荐

  1. JAVA基金会 (三)反射 反思的深度分析

    上一页已经推出反映的一些基本概念,这主要是通过一个例子反映谈的过程,以及样品的实际应用. 这个样例是这种设计思路:从一个属性文件里读取一段字符串,然后,依据该字符串生成相应的类实例对象:这之后另一个增 ...

  2. JAVA: httpclient 详细说明——第四章;

    httpclient 具体解释--第一章. httpclient 具体解释--第二章: httpclient 具体解释--第三章: httpclient 具体解释--第四章: httpclient 具 ...

  3. registerForRemoteNotificationTypes: is not supported in iOS 8.0 and

    注册模式: if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0) { [[UIApplication sharedA ...

  4. Duanxx的C++学习 : 数字转换String

    下面是这两个数字转换String道路.件:sstream string num2str1(unsigned int num) { stringstream ss; ss<<num; ret ...

  5. 使用C++实现功能下载文件

    今天问一个同学C++实现的下载链接下载并保存给定的文件,互联网搜索.看到这样的事情在网上.因此,改变下直接带来,因为他的代码是在VC++,我导入到VS2010中出现点小问题.所以改了下贴了个VS中亲測 ...

  6. requireJS的使用_API-1

    requireJS的使用_API(1) 之前有介绍过requireJS(模块化开发),可以看看 ,但是不详细,所以今天参考官网来详细介绍一下: 1.加载js文件: RequireJS的目标是鼓励代码的 ...

  7. STM32电源管理

     (1)3时钟模式 ①睡眠模式②停止模式③待机模式 1.睡眠模式:Cortex-M3内核(理解为CPU)停止工作,CPU供电1.8V有着,周边任何执行.执行 2.停机模式:全部时钟都停止,CPU电 ...

  8. zoj 3659 并检查集合

    http://acm.zju.edu.cn/onlinejudge/showProblem.do? problemId=4882 现在在牡丹江,明天regional直播比赛,我会在一个月内退休.求祝福 ...

  9. Dos命令将合并两个文本文件的内容

    当生产线的问题,有一个放b.txt的内容被添加到a.txt这需要采取.在考虑这个问题.我的第一感觉是敲代码.阅读b.txt内容,渐进写a.txt.想起昨天在加工处理生产线600M决的方法,我用java ...

  10. Putty是一个专业的SSH连接客户端

    http://www.putty.ws/PuTTY-LinuxVPS Putty是一个专业的SSH连接客户端,当然可以用来连接Linux操作系统的VPS.下文是Putty连接工具的使用方法与详细教程, ...