通过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的操作和写一些冗余的代码了。
转载于:https://www.cnblogs.com/ListenCode/p/4217147.html
通过Web Api 和 Angular.js 构建单页面的web 程序相关推荐
- 【Web API系列教程】1.3 — 实战:用ASP.NET Web API和Angular.js创建单页面应用程序(上)
前言 在传统的web应用程序中,客户端(浏览器)通过请求页面来启动与服务器的通信.然后服务器处理该请求,并发送HTML页面到客户端.在随后页面上的操作中--例如,用户导航到一个链接或提交一个包含数据的 ...
- 使用 Vuex + Vue.js 构建单页应用 1
鉴于该篇文章阅读量大,回复的同学也挺多的,特地抽空写了一篇 vue2.0 下的 vuex 使用方法,传送门:使用 Vuex + Vue.js 构建单页应用[新篇] ------------------ ...
- 使用Vanilla.js构建单页应用程序(SPA)网站
目录 项目 带有模块的组织代码 以可观察的方式应对变化 支持声明式数据绑定 将幻灯片(Slides)托管和加载为"页面" 使用路由器处理导航 带有CSS3动画的转换时间线 管理&q ...
- 使用 Vuex + Vue.js 构建单页应用
原文地址:https://coligo.io/learn-vuex-by-building-notes-app/ 前言:在最近学习 Vue.js 的时候,看到国外一篇讲述了如何使用 Vue.js 和 ...
- 如何使用Vuex+Vue.js构建单页应用
原文地址:https://coligo.io/learn-vuex-by-building-notes-app/ 前言:在最近学习 Vue.js 的时候,看到国外一篇讲述了如何使用 Vue.js 和 ...
- 面向初学者的带MVC API的Angular Js Table CRUD MSSQL
目录 介绍 Angular Js代码要点 示例截图 第一部分 第二部分(ASP.NET MVC WEB API和数据表) 第三部分(关于Postman发布和测试API) 注意 结论 介绍 本文主要介绍 ...
- 在 ASP.NET Core Web API中使用 Polly 构建弹性容错的微服务
在 ASP.NET Core Web API中使用 Polly 构建弹性容错的微服务 https://procodeguide.com/programming/polly-in-aspnet-core ...
- Vue全家桶 + webpack 构建单页应用初体验
文章指南 主题 承接这上一篇Vue + Webpack 构建模块化开发框架详解,我们知道了如何使用webpack对vue进行打包,从而开始我们的前端模块化开发之路,这一篇在上一篇的基础上讲解 Vu ...
- 【Web API系列教程】1.1 — ASP.NET Web API入门
前言 HTTP不仅仅服务于web页面,同时也是构建暴露服务和数据的API的强大平台.HTTP有着简单.灵活和无处不在的特点.你能想到的几乎所有平台都包含有一个HTTP库,所以HTTP服务可以遍及广泛的 ...
最新文章
- 【刷算法】整数中1出现的次数(从1到n整数中1出现的次数)
- 程序员涨薪必备技能(1-5年必看!!!)
- PAT甲级1154 Vertex Coloring :[C++题解]图论、模拟、结构体存边
- 吴恩达《神经网络与深度学习》精炼笔记(4)-- 浅层神经网络
- VS2012 快捷键 VS RESHARPER 设置
- 最全总结,GitHub Action自动化部署
- 相机翻转设计的华硕旗舰ZenFone 6固件更新:新增“超级夜间模式”
- WebAPI——自动生成帮助文档
- matlab信号与系统论文,基于MATLAB的《信号与系统》课程教学研究
- python动态生成数据库表_ironpython – 如何通过python在Spotfire中动态创建数据表
- android导航栏动画,Android 带Lottie动画的导航栏
- 软件测试面试题和简历模板(面试前准备篇)
- 面向物联网的可重构流式深度卷积神经网络加速器
- 将 C++/WinRT 中的线程切换体验带到 C# 中来(WPF 版本)
- 第7章第30节:四图排版:四张图片交错对齐排列 [PowerPoint精美幻灯片实战教程]
- 无符号数与有符号数比较大小
- 2014 年第六届全国大学生数学竞赛江西赛区赣南师范学院获奖名单(数学专业)
- 【css画圆圈用线连接】
- 音视频入门-10-使用libyuv对YUV数据进行缩放、旋转、镜像、裁剪、混合
- android 人脸变形,人脸形变算法——液化变形
热门文章
- Android OpenGL ES 应用(二) 纹理
- 终端安装解决svn cannot set LC_CTYPE locale的问题
- 重用之前应仔细分析问题---------用错轮子有感
- java 蓝桥杯算法训练 特殊的数字四十
- php什么集成框架比较好,php哪个框架比较好?
- (39)FPGA面试技能提升篇(nandflash接口)
- RTT Nano+STM32F407ZGT6+LAN8720A+LWIP+CubeMX+MDK
- libevent的线程优雅的退出方式
- 【好文链接】从原理上搞懂PID
- mysql安装过程遇到的问题_个人在mysql安装过程中遇见的问题