提交 88e596dd 编写于 作者: W wizardforcel

2020-06-06 22:34:29

上级 b230b115
......@@ -2,7 +2,7 @@
> 原文: [https://howtodoinjava.com/junit/how-to-add-listner-in-junit-testcases/](https://howtodoinjava.com/junit/how-to-add-listner-in-junit-testcases/)
监听器通常可以帮助听我们感兴趣的事件。 这可能有几个原因。 例如,我们添加了监听器以添加特定的日志,在 Java GUI 编程中处理 UI 事件等。
监听器通常可以帮助听我们感兴趣的事件。 这可能有几个原因。 例如,我们添加了监听器以添加特定的日志,在 Java GUI 编程中处理 UI 事件等。
JUnit 还支持通过`RunListener`类执行测试时添加监听器。 该监听器可用于从改进日志记录到测试特定逻辑的各种目的。
......
# 带有 RxJS 的 Angular HttpClient 可观察的示例
# 带有 RxJS `Observable`的 Angular `HttpClient`示例
> 原文: [https://howtodoinjava.com/angular/rxjs-observable-httpclient/](https://howtodoinjava.com/angular/rxjs-observable-httpclient/)
了解如何使用 Angular`HttpClient`服务从在线 REST API 获取数据,并将其作为`Observable`对象/数组返回。 在发生任何数据事件时,`observable`的订户将做出反应。
了解如何使用 Angular `HttpClient`服务从在线 REST API 获取数据,并将其作为`Observable`对象/数组返回。 在发生任何数据事件时,`observable`的订户将做出反应。
```java
Table of Contents
......@@ -14,11 +14,11 @@ View HTML Template
Demo
```
## HTTPClient 设置
## `HTTPClient`设置
要使用`HTTPClient`服务,您需要执行两个步骤:
1. #### 在根模块中导入 HttpClientModule
1. #### 在根模块中导入`HttpClientModule`
从`@angular/common/http`包中导入`HttpClientModule`模块,并将其条目添加到`@NgModule`的`imports`属性中。
......@@ -43,7 +43,7 @@ Demo
```
2. #### 在服务构造器中注入 HttpClient
2. #### 在服务构造器中注入`HttpClient`
现在,在开始使用它时,在服务代码中注入实际的`HttpClient`服务。
......@@ -62,7 +62,7 @@ Demo
```
## 创建返回 Observable 的服务
## 创建返回`Observable`的服务
我们将使用通过 [REST 模拟服务器](https://howtodoinjava.com/angular/mock-rest-server/)创建的 REST API。 让我们编辑员工服务类别的代码,并从中返回`Observable`
......@@ -89,7 +89,7 @@ export class EmployeeService {
```
上面的代码点击 REST API `"/employees"`并获取`employee`数组。 然后,它返回 employee 数组作为可观察的集合。 任何方法都可以订阅它来侦听此数组上的数据事件。
上面的代码点击 REST API `"/employees"`并获取`employee`数组。 然后,它返回`employee`数组作为可观察的集合。 任何方法都可以订阅它来监听此数组上的数据事件。
仅供参考,`Employee`是用于存储数据的模型类。
......@@ -110,7 +110,7 @@ export class Employee {
```
## 创建订阅了 Observable 的观察者
## 创建订阅了`Observable`的观察者
我们将在组件文件中创建订户。 它将从可观察数组中读取数据并分配给模型属性。 模型属性可用于映射来自 UI 的数据。
......@@ -149,7 +149,7 @@ export class AppComponent {
## 查看 HTML 模板
是时候更新视图 HTML 了,该 HTML 将尽快提供`employee array`数据。
是时候更新视图 HTML 了,该 HTML 将尽快提供`employee`数组数据。
```java
<h1>
......@@ -192,12 +192,11 @@ export class AppComponent {
![Angular HttpClient with RxJS Observable Example](img/ae44f6a8646fdb48d982c081e9870d4a.png)
Angular HttpClient with RxJS Observable Example
带有 RxJS `Observable`的 Angular `HttpClient`示例
将您的评论放在源代码中。
学习愉快!
[源码下载](https://howtodoinjava.com/wp-content/downloads/Angular2 Http Service Example.zip)
\ No newline at end of file
[源码下载](https://howtodoinjava.com/wp-content/downloads/Angular2%20Http%20Service%20Example.zip)
\ No newline at end of file
# AngularJS 教程– HelloWorld 示例
# AngularJS 教程 – HelloWorld 示例
> 原文: [https://howtodoinjava.com/angularjs/angularjs-tutorial-helloworld-example/](https://howtodoinjava.com/angularjs/angularjs-tutorial-helloworld-example/)
......@@ -42,9 +42,9 @@ AngularJS 中的模型和视图比大多数 JavaScript 客户端框架中的模
我们已经知道 AngularJS 是基于 MVC 的结构化框架,因此我们将需要编写许多组件和工具以使您的应用代码结构化并得到良好维护。 让我们简短地学习这些组件。 我们将在下一个教程中详细讨论。
* #### 模
* #### 模
模块是控制器,指令,过滤器,服务和其他配置信息的集合。 所有这一切的主要参与者是`angular.module()`,因为它是进入 Module API(用于配置 Angular 模块的机制)的网关。 它用于注册,创建和检索以前创建的 AngularJS 模块。
模块是控制器,指令,过滤器,服务和其他配置信息的集合。 所有这一切的主要参与者是`angular.module()`,因为它是进入模块 API(用于配置 Angular 模块的机制)的网关。 它用于注册,创建和检索以前创建的 AngularJS 模块。
例如 将以下代码添加到新的 JavaScript 文件中,您可以将其命名为`myAppModule.js`。
......@@ -67,10 +67,10 @@ AngularJS 中的模型和视图比大多数 JavaScript 客户端框架中的模
);
```
* #### 范围
* #### 作用域
在 AngularJS 中,`$scope`是具有可用属性和要使用方法的对象。 请注意,作用域可用于视图和控制器。
在 AngularJS 中创建控制器时,会将$ scope 对象作为参数传递。
在 AngularJS 中创建控制器时,会将`$scope`对象作为参数传递。
```java
var myAppModule = angular.module('MyFilterDemoCtrl', []);
......@@ -104,7 +104,7 @@ AngularJS 中的模型和视图比大多数 JavaScript 客户端框架中的模
</div>
```
* #### 表达
* #### 表达式
视图中使用的范围变量实际上是表达式。 这些表达式用大括号括起来:`{{ expression }}`。 您可以编写简单表达式以及复杂表达式,例如`{{ firstName + " " + lastName }}`或`{{ "id = " + 0 }}`。
......@@ -112,7 +112,7 @@ AngularJS 中的模型和视图比大多数 JavaScript 客户端框架中的模
在 Angular 中,控制器通过在范围内设置初始状态或值以及向范围添加行为来扩展范围。 例如,您可以添加一个对范围内的值求和的函数,以提供总计,以便如果范围后的模型数据发生更改,则总值始终会更改。
您必须使用“ ng-controller”将控制器添加到 HTML 元素,然后在后台将其实现为 JavaScript 代码。
您必须使用“`ng-controller`”将控制器添加到 HTML 元素,然后在后台将其实现为 JavaScript 代码。
```java
<div ng-app="myApp" ng-controller="sumController">
......@@ -179,13 +179,13 @@ AngularJS 中的模型和视图比大多数 JavaScript 客户端框架中的模
![Angular Hello World](img/d9cc78d7109497d9128629ab45c735a5.png)
AngularJS Hello World Application Screen
AngularJS Hello World 应用界面
让我们看一下 HTML 视图和 Angular 控制器 JS 文件的代码,以了解其工作原理。
#### helloWorld.html
#### `helloWorld.html`
```java
<!doctype html>
......@@ -206,7 +206,7 @@ AngularJS Hello World Application Screen
</html>
```
#### app.js
#### `app.js`
```java
var firstApp = angular.module('helloWorldApp', []);
......
......@@ -2,7 +2,7 @@
> 原文: [https://howtodoinjava.com/angularjs/angular-jquery-lite-jqlite-tutorial/](https://howtodoinjava.com/angularjs/angular-jquery-lite-jqlite-tutorial/)
AngularJS 和 jQuery 都是非常强大的 JS 框架。 正如[Angular 介绍](//howtodoinjava.com/angularjs/angularjs-tutorial-helloworld-example/)中所讨论的那样,jQuery 从很长时间以来一直是最引人注目的框架。 AngularJS 增加了 MVC 模式的功能以及许多其他内置服务,但是它确实尊重了 jquery 易于使用的语法( [jquery 选择器](//howtodoinjava.com/scripting/jquery/jquery-selectors/)),并且可以通过简单的函数调用对多个元素进行操作。
AngularJS 和 jQuery 都是非常强大的 JS 框架。 正如 [Angular 介绍](//howtodoinjava.com/angularjs/angularjs-tutorial-helloworld-example/)中所讨论的那样,jQuery 从很长时间以来一直是最引人注目的框架。 AngularJS 增加了 MVC 模式的功能以及许多其他内置服务,但是它确实尊重了 jquery 易于使用的语法([jquery 选择器](//howtodoinjava.com/scripting/jquery/jquery-selectors/)),并且可以通过简单的函数调用对多个元素进行操作。
虽然,可以将 jQuery 库和 angular 一起使用,但建议使用 **jQuery lite** (默认情况下打包在 AngularJS 中)。
......@@ -39,7 +39,7 @@ $scope.clicked = function(event){
## 倾向于使用“Angular 方式”
您会经常听到“仅在指令中进行 DOM 操作”。 这是必须的。 兑现 在前进之前,请尽量避免使用 jQuery。 总是想办法避免使用 jQuery / jqLit​​e 来操作 DOM 对象。
您会经常听到“仅在指令中进行 DOM 操作”。 这是必须的。 在前进之前,请尽量避免使用 jQuery。 总是想办法避免使用 jQuery/jqLit​​e 来操作 DOM 对象。
AngularJS 附带了一整套工具,使这一过程变得非常容易。 使用`ngClass`,我们可以动态更新类; `ngModel`允许双向数据绑定; `ngShow``ngHide`以编程方式显示或隐藏元素; 还有更多–包括我们自己编写的内容。
......@@ -86,7 +86,9 @@ AngularJS 附带了一整套工具,使这一过程变得非常容易。 使用
与以前的版本相比,它非常清晰,易于维护且易于测试,在任何不使用 jQuery 的环境中,它都很容易被破坏。
**参考:**
[https://docs.angularjs.org/api/ng/function/angular.element](https://docs.angularjs.org/api/ng/function/angular.element)
[http://stackoverflow.com/ 问题/ 14994391 / thinking-in-angularjs-如果我有一个 jquery-backgroun](https://stackoverflow.com/questions/14994391/thinking-in-angularjs-if-i-have-a-jquery-backgroun) d
[https://stackoverflow.com/questions/14994391/thinking-in-angularjs-if-i-have-a-jquery-background](https://stackoverflow.com/questions/14994391/thinking-in-angularjs-if-i-have-a-jquery-background)
学习愉快!
\ No newline at end of file
......@@ -2,7 +2,7 @@
> 原文: [https://howtodoinjava.com/angularjs/angularjs-services-built-in-and-custom/](https://howtodoinjava.com/angularjs/angularjs-services-built-in-and-custom/)
正如我们在[Angular 介绍](//howtodoinjava.com/angularjs/angularjs-tutorial-helloworld-example/)中了解到的,服务是**无状态对象和单例对象**,它们为 Web 应用提供功能。 例如,`$http`是用于对 Web 服务器进行 HTTP 调用的核心服务。 简单来说,您可以将 Angular 服务假定为可重用代码的**块,它执行一个或多个相关任务(例如 Java 中带有静态方法的工具类)。 在 AngularJS 中,有几个内置服务–您也可以创建自己的自定义服务。**
正如我们在 [Angular 介绍](//howtodoinjava.com/angularjs/angularjs-tutorial-helloworld-example/)中了解到的,服务是**无状态对象和单例对象**,它们为 Web 应用提供功能。 例如,`$http`是用于对 Web 服务器进行 HTTP 调用的核心服务。 简单来说,您可以将 Angular 服务假定为可重用代码块,它执行一个或多个相关任务(例如 Java 中带有静态方法的工具类)。 在 AngularJS 中,有几个内置服务 – 您也可以创建自己的自定义服务。
```java
Table of Contents
......@@ -25,17 +25,18 @@ module.controller('DemoController', function( $http ){
让我们列出有 Angular 的内置服务。
| 服务名称 | 描述 |
| --- | --- |
| `$anchorScroll` | 提供滚动到`$location.hash()`中指定的页面锚点的功能 |
| `$animate` | 该服务公开了一系列 DOM 工具方法,这些方法提供对动画挂钩的支持。 |
| `$animateCss` | 默认情况下,仅当包含`ngAnimate`时,此服务才会执行动画。 |
| `$cacheFactory` | 构造 Cache 对象,放置和检索键值对并为其提供对其他服务的访问权限的工厂。 |
| `$cacheFactory` | 构造缓存对象,放置和检索键值对并为其提供对其他服务的访问权限的工厂。 |
| `$templateCache` | 首次使用模板时,会将其加载到模板缓存中以便快速检索。 |
| `$compile` | 将 HTML 字符串或 DOM 编译到模板中,并生成模板函数,然后可以使用该函数将范围和模板链接在一起。 |
| `$controller` | 这负责实例化 Angular 控制器组件。 |
| `$document` | 指定对`window.document`元素的 [jQuery 包的](//howtodoinjava.com/scripting/jquery/javascript-dom-objects-vs-jquery-objects/)引用。 |
| `$exceptionHandler` | Angular 表达式中任何未捕获的异常都委托给此服务。 默认实现只是委派给`$log.error`,它将其记录到浏览器控制台中。 |
| `$filter` | 过滤器用于格式化显示给用户的数据。 |
| `$httpParamSerializer` | 默认的`$http` params 序列化程序,将对象转换为字符串。 |
| `$httpParamSerializer` | 默认的`$http`参数序列化程序,将对象转换为字符串。 |
| `$httpParamSerializerJQLike` | 替代`$http`参数序列化器,它遵循 jQuery 的`param()`方法逻辑。 序列化程序还将按字母顺序对参数进行排序。 |
| `$http` | 此服务有助于通过浏览器的`XMLHttpRequest`对象或`JSONP`与远程 HTTP 服务器进行通信。 |
| `$xhrFactory` | 用于创建`XMLHttpRequest`对象的工厂函数。 |
......@@ -65,9 +66,9 @@ module.controller('DemoController', function( $http ){
声明 angularjs 服务的方式主要有两种。 让我们了解两种方式:
#### 使用– module.service('serviceName',function(){})
#### 使用`module.service('serviceName', function(){})`
当您使用`module.service()`**创建服务时,作为第二个参数**传递的 function()的实例成为 AngularJS 注册并随后在需要时注入到其他服务/控制器的服务对象。
当您使用`module.service()`**创建服务时**,作为第二个参数传递的`function()`的实例成为 AngularJS 注册并随后在需要时注入到其他服务/控制器的服务对象。
使用`module.service()`在自定义服务对象中声明方法的语法为:
......@@ -84,9 +85,9 @@ module.service('DemoService', function() {
});
```
#### 使用– module.factory(‘factoryName’,function(){})
#### 使用 – `module.factory('factoryName', function(){})`
当您使用`module.factory()`创建服务时,作为第二个参数传递的 function()的**返回值将成为 AngularJS 注册并稍后在需要时注入到其他服务/控制器的服务对象。**
当您使用`module.factory()`创建服务时,作为第二个参数传递的`function()`**返回值**将成为 AngularJS 注册并稍后在需要时注入到其他服务/控制器的服务对象。
使用`module.factory()`在自定义服务对象中声明方法的语法为:
......@@ -201,8 +202,8 @@ app.controller('LondonController', ['$scope', 'TimeService',
输出将如下所示:
请参阅 [CodePen](https://codepen.io) 上的 Pen [Angular Service 演示–时区示例](https://codepen.io/howtodoinjava/pen/jWxYKB/),作者为 Lokesh( [@howtodoinjava](https://codepen.io/howtodoinjava) )。
请参阅 [CodePen](https://codepen.io) 上的 [Angular 服务演示 – 时区示例](https://codepen.io/howtodoinjava/pen/jWxYKB/),作者为 Lokesh([@howtodoinjava](https://codepen.io/howtodoinjava))。
这就是 **AngularJS Services 入门教程**的全部内容。 将我的问题放在评论部分。
这就是 **AngularJS 服务入门教程**的全部内容。 将我的问题放在评论部分。
学习愉快!
\ No newline at end of file
......@@ -4,7 +4,7 @@
我们知道什么是 MVC? MVC 代表 [**模型-视图-控制器**](https://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller "MVC") 。 简而言之,MVC 是一种设计技术,其中将应用组件分为 3 组,以便可以独立开发它们而无需考虑它们将如何交互。 如果构建正确,则很少有配置代码可以绑定它们,并且可以立即使用。
[**PubSub(发布者订阅者)**](https://en.wikipedia.org/wiki/Publish%E2%80%93subscribe_pattern "pubsub") 模型是设计范式,其中多个订阅者正在听源上的更改事件,并且一旦发生任何更改,便会立即通知监听器。 在用户交互影响屏幕上多个部分的大型系统中,此模式消除了许多硬编码,并提供了设计灵活性。
[**PubSub(发布者订阅者)**](https://en.wikipedia.org/wiki/Publish%E2%80%93subscribe_pattern "pubsub") 模型是设计范式,其中多个订阅者正在听源上的更改事件,并且一旦发生任何更改,便会立即通知监听器。 在用户交互影响屏幕上多个部分的大型系统中,此模式消除了许多硬编码,并提供了设计灵活性。
![PubSub + MVC in JavaScript](img/99dc384aba029061cae775869ac41f18.png)
......
......@@ -134,7 +134,7 @@ PaaS 供应商为应用开发人员提供了开发环境。 在 PaaS 模型中
[Google App Engine](https://cloud.google.com/appengine/docs/java/gettingstarted/introduction) 应用易于创建,易于维护,并且可以随着流量和数据存储需求的变化而轻松扩展。 使用 App Engine,无需维护任何服务器。 您只需上传您的应用即可使用。
通过 App Engine,您可以使用 Servlet 或听端口`8080`的服务器代码轻松部署和运行标准 Java Web 应用。 App Engine 应用会根据传入流量自动扩展。 负载平衡,微服务,授权,SQL 和 noSQL 数据库,内存缓存,流量拆分,日志记录,搜索,版本控制,推出和回滚以及安全扫描均受本机支持,并且可以高度自定义。
通过 App Engine,您可以使用 Servlet 或听端口`8080`的服务器代码轻松部署和运行标准 Java Web 应用。 App Engine 应用会根据传入流量自动扩展。 负载平衡,微服务,授权,SQL 和 noSQL 数据库,内存缓存,流量拆分,日志记录,搜索,版本控制,推出和回滚以及安全扫描均受本机支持,并且可以高度自定义。
要在 App Engine 上运行应用,您需要:
......
......@@ -14,7 +14,7 @@ Log4j 带有多个选项来格式化框架创建的日志文件。 它也可以
**步骤 2)在`log4j-server.properties`文件**中配置套接字服务器日志记录配置
很少有人知道 log4j 具有与功能齐全的[**套接字服务器**](https://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/net/SocketServer.html "Log4j Socket Server")捆绑在一起的功能,该功能可用于听网络连接并记录从各个网络节点和位置发送到服务器的日志事件。
很少有人知道 log4j 具有与功能齐全的[**套接字服务器**](https://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/net/SocketServer.html "Log4j Socket Server")捆绑在一起的功能,该功能可用于听网络连接并记录从各个网络节点和位置发送到服务器的日志事件。
要配置套接字服务器,请在给定的项目根文件夹中创建一个`log4j-server.properties`文件。 此文件配置接收到的日志事件的记录方式和记录位置。
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册