AngularJS - 入门小Demo

AngularJS四大特效

MVC模式、模块化设计、自动化双向数据绑定、依赖注入

如果了解了后端开发知识,想必对这些词汇不会陌生,AngularJS融合了后端开发的一些思想,虽然身为前端框架,但与jQuery框架却是完全不相同的东西。

AngularJS分为几个模块,需要使用哪个模块的功能,就直接引入对应的模块,这种模块化设计具备高内聚、低耦合的特点。
官方提供的模块有:ng、ngRoute、ngAnimate
用户也可以自定义模块:angular.module(‘模块名’, [])
这里的ng是引擎engine的缩写,类似于Nginx的Ngin也是engine的缩写(谐音?)

Demo1 - 表达式

在当前目录下新建一个demo-1.html文件,并将angular.min.js文件放置在同一目录下。

<html>
<head>
	<title>AngularJS入门小Demo-1 表达式</title>
	<script src="angular.min.js"></script>
</head>
<body ng-app>
{{100+100}}
</body>
</html>

通过在html中引入angular.min.js,并在body标签中加入ng-app指令,则会对{{}}里的表达式进行计算。双击打开这个html文件,会发现页面显示的是200,如果不加载ng-app指令,页面显示的则是{{100+100}}

Demo2 - 双向绑定

<html>
<head>
	<title>AngularJS入门小Demo-2 双向绑定</title>
	<script src="angular.min.js"></script>
</head>
<body ng-app>
请输入姓名:<input ng-model="name"><br>
请输入姓名:<input ng-model="name"><br>
{{name}}
</body>
</html>

通过ng-model来绑定变量,双击上边的页面文件,在任意一个输入框中输入字符,都会影响到绑定同一变量的标签元素。比起用js或者jQuery来实现这个功能,AngularJS的写法要简单快捷很多。

Demo3 - 初始化指令

<html>
<head>
	<title>AngularJS入门小Demo-3 初始化指令</title>
	<script src="angular.min.js"></script>
</head>
<body ng-app ng-init="name='JOJO'">
请输入姓名:<input ng-model="name"><br>
{{name}}
</body>
</html>

通过ng-init指令来对变量进行初始化,比如上边的html页面,在打开或刷新后,name变量的值会被初始化为JOJO。

Demo4 - 控制器

<html>
<head>
	<title>AngularJS入门小Demo-4 控制器</title>
	<script src="angular.min.js"></script>
	<script>
		//建立模块
		//第一个参数是自定义的模块名,第二个参数是引用的模块名
		var app = angular.module("myApp", []);
		//创建控制器
		app.controller("myController", function($scope){
			
			$scope.add = function() {
				return parseInt($scope.x) + parseInt($scope.y);
			}

		});
	</script>
</head>
<body ng-app="myApp" ng-controller="myController">
第一个数:<input ng-model="x"><br>
第二个数:<input ng-model="y">
结果:{{add()}}

</body>
</html>

自定义一个模块,为模块创建一个控制器,控制器里可以定义一些逻辑来处理绑定的变量。这里的控制器也有个参数$scope,这个参数表示作用域,可以通过该作用域来获取操作变量,它就是视图层和控制层交互数据的桥梁。

更多和 s c o p e 相 关 的 , 可 以 了 解 下 这 篇 文 章 [ 关 于 A n g u l a r J S 学 习 整 理 − − − 浅 谈 scope相关的,可以了解下这篇文章[关于AngularJS学习整理---浅谈 scope[AngularJSscope(作用域) 新手必备!](https://www.cnblogs.com/wlpower/p/6406890.html)。

Demo5 - 事件指令

<html>
<head>
	<title>AngularJS入门小Demo-5 事件指令</title>
	<script src="angular.min.js"></script>
	<script>
		//建立模块
		//第一个参数是自定义的模块名,第二个参数是引用的模块名
		var app = angular.module("myApp", []);
		//创建控制器
		app.controller("myController", function($scope){
			
			$scope.add = function() {
				return $scope.z = parseInt($scope.x) + parseInt($scope.y);
			}

		});
	</script>
</head>
<body ng-app="myApp" ng-controller="myController">
第一个数:<input ng-model="x"><br>
第二个数:<input ng-model="y">
<button ng-click="add()">运算</button><br>
结果:{{z}}

</body>
</html>

ng-click表示事件指令,类似于js里的绑定事件的用法。

Demo6 - 循环数组

<html>
<head>
	<title>AngularJS入门小Demo-6 循环数组</title>
	<script src="angular.min.js"></script>
	<script>
		//建立模块
		//第一个参数是自定义的模块名,第二个参数是引用的模块名
		var app = angular.module("myApp", []);
		//创建控制器
		app.controller("myController", function($scope){
			
			$scope.list = [101, 252, 345, 836];

		});
	</script>
</head>
<body ng-app="myApp" ng-controller="myController">
	<table>
		<tr ng-repeat="x in list">
			<td>{{x}}</td>
		</tr>
	</table>
</body>
</html>

使用ng-repeat来循环数组,类似于foreach的遍历操作。

Demo7 - 循环对象数组(JSON)

<html>
<head>
	<title>AngularJS入门小Demo-7 循环对象数组</title>
	<script src="angular.min.js"></script>
	<script>
		//建立模块
		//第一个参数是自定义的模块名,第二个参数是引用的模块名
		var app = angular.module("myApp", []);
		//创建控制器
		app.controller("myController", function($scope){
			
			$scope.list = [
				{name:'张三', math:99, chinese:88},
				{name:'李四', math:17, chinese:46},
				{name:'赵五', math:60, chinese:60}
			];

		});
	</script>
</head>
<body ng-app="myApp" ng-controller="myController">
	<table>
		<tr>
			<td>姓名</td>
			<td>学科</td>
			<td>分数</td>
		</tr>
		<tr ng-repeat="entity in list">
			<td>{{entity.name}}</td>
			<td>{{entity.math}}</td>
			<td>{{entity.chinese}}</td>
		</tr>
	</table>
</body>
</html>

实际应用中前后端一般通过JSON对象来交互,和上边的demo类似。

Demo8 - 内置服务$http

前端数据一般从后端获得,我们一般使用AngularJS的内置服务$http来获取后端数据,下边的demo需要在容器中运行(比如Tomcat)。

首先建立一个demo-8.html文件,将页面和angular.min.js一起放置到web项目的webapp目录下。

<html>
<head>
	<title>AngularJS入门小Demo-8 内置服务$http</title>
	<script src="angular.min.js"></script>
	<script>
		//建立模块
		//第一个参数是自定义的模块名,第二个参数是引用的模块名
		var app = angular.module("myApp", []);
		//创建控制器
		app.controller("myController", function($scope, $http){
			
			$scope.findList = function() {
			
				$http.get("data.json").success(
					function(response) {
						$scope.list = response;
					}
				);
			}

		});
	</script>
</head>
<body ng-app="myApp" ng-controller="myController" ng-init="findList()">
	<table>
		<tr>
			<td>姓名</td>
			<td>学科</td>
			<td>分数</td>
		</tr>
		<tr ng-repeat="entity in list">
			<td>{{entity.name}}</td>
			<td>{{entity.math}}</td>
			<td>{{entity.chinese}}</td>
		</tr>
	</table>
</body>
</html>

接着在同一目录下,新建一个data.json文件,内容如下:

[
	{"name":"张三", "math":99, "chinese":88},
	{"name":"李四", "math":17, "chinese":46},
	{"name":"赵五", "math":60, "chinese":60}
]

需要注意的是,在.json文件中的数据必须严格遵守JSON的规范,所有key必须使用双引号,value除了数值型以外的类型也必须使用双引号。在Demo7中由于是在js中书写的,所以可以不必遵守严格的JSON格式。另外可以看到,这个$http的用法和AJAX很相似,其实其内部就是封装的AJAX。

本文最后附上所有demo源码,demo-8在里边的web项目里。可以通过mvn tomcat7:run来启动该web项目(或者双击源码里的start.bat来启动项目),接着在浏览器地址栏输入localhost:8080/demo-8.html,即可得到该JSON数据。

项目相关

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是一个简单的 Spring Boot WebSocket 入门 demo: 1. 首先,在 pom.xml 文件中引入 `spring-boot-starter-websocket` 依赖: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-websocket</artifactId> </dependency> ``` 2. 创建一个简单的 WebSocket 处理器: ```java @Component public class WebSocketHandler extends TextWebSocketHandler { private final List<WebSocketSession> sessions = new CopyOnWriteArrayList<>(); @Override public void afterConnectionEstablished(WebSocketSession session) throws Exception { sessions.add(session); session.sendMessage(new TextMessage("连接成功!")); } @Override protected void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception { for (WebSocketSession webSocketSession : sessions) { webSocketSession.sendMessage(new TextMessage("客户端说:" + message.getPayload())); } } @Override public void afterConnectionClosed(WebSocketSession session, CloseStatus status) throws Exception { sessions.remove(session); } } ``` 3. 创建 WebSocket 配置类: ```java @Configuration @EnableWebSocket public class WebSocketConfig implements WebSocketConfigurer { @Autowired private WebSocketHandler webSocketHandler; @Override public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) { registry.addHandler(webSocketHandler, "/ws").setAllowedOrigins("*"); } } ``` 4. 编写一个简单的页面来测试 WebSocket: ```html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>WebSocket</title> </head> <body> <h1>WebSocket Demo</h1> <div> <input type="text" id="input"/> <button onclick="send()">发送</button> </div> <div id="output"></div> <script> var socket = new WebSocket("ws://localhost:8080/ws"); socket.onmessage = function(event) { var output = document.getElementById("output"); output.innerHTML += "<p>" + event.data + "</p>"; }; function send() { var input = document.getElementById("input"); socket.send(input.value); input.value = ""; } </script> </body> </html> ``` 5. 运行程序,访问 http://localhost:8080/index.html,打开浏览器控制台,输入命令 `socket.send("Hello, WebSocket!")`,即可看到页面上显示出 "客户端说:Hello, WebSocket!"。 希望这个 demo 能帮助到你。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值