Angular应用中的ng-bootstrap-loading:优雅的页面加载蒙版实现

article/2025/8/13 13:47:22

本文还有配套的精品资源,点击获取 menu-r.4af5f7ec.gif

简介:为了在Angular应用中增强用户体验,在数据加载时显示加载蒙版是必不可少的。"ng-bootstrap-loading"是一个基于Bootstrap框架的库,专门用于实现页面加载效果,尤其适用于处理大量数据和耗时操作。这个库提供了一个 ngbLoading 指令,能够控制加载指示器的显示。开发者可以通过简单的导入和配置,轻松地在他们的Angular应用中使用它。此外,"ng-bootstrap-loading"还支持自定义样式和高级用法,如延迟显示和与RxJS操作符的集成。最终,这有助于开发者构建出更加用户友好的交互性应用。 ng-bootstrap-loading:角度页面的加载蒙版显示功能

1. Angular框架介绍

Angular,作为谷歌的旗舰级前端框架,自2016年1.0版本发布以来,已经成为了构建现代Web应用不可或缺的技术之一。其核心概念包括组件化(Components)、模块化(Modules)、服务(Services)和依赖注入(Dependency Injection),这些都赋予Angular框架强大的应用构建能力。

Angular的架构特点尤为明显,它采用TypeScript作为主要开发语言,结合现代浏览器的特性,可以构建出高性能的单页面应用(SPA)。同时,Angular的响应式编程模型、双向数据绑定和声明式模板等特性,极大地简化了开发者的编码过程。

了解Angular的基础知识后,我们会发现"ng-bootstrap-loading"库能够无缝集成到Angular项目中,为用户提供清晰的交互反馈。我们将在接下来的章节深入探讨"ng-bootstrap-loading"库的特点、使用方法和高级用法。

2. "ng-bootstrap-loading"库特点

2.1 "ng-bootstrap-loading"概述

2.1.1 "ng-bootstrap-loading"库简介

"ng-bootstrap-loading"是一个专为Angular应用设计的加载蒙版库,它利用Angular的依赖注入和指令系统,提供了一种简洁而高效的方式来处理应用中的加载状态。该库核心功能是展示一个覆盖在视图上的蒙版,从而告知用户页面正在加载数据或执行异步操作,提高用户体验。它通常用于数据请求、复杂计算或页面跳转等需要等待的场景。

2.1.2 库的设计初衷和应用场景

设计"ng-bootstrap-loading"的初衷是为了让Angular开发者能够更轻松地管理和展示加载状态,避免重复造轮子。开发者可以在多个组件或页面中重用加载蒙版,而无需每次都手动编写相似的代码。常见应用场景包括表单提交、API数据获取、文件上传等需要等待服务器响应的操作。

2.1.3 库的兼容性和版本更新

"ng-bootstrap-loading"对Angular的版本支持广泛,从Angular早期版本到最新版都有良好的支持。该库遵循Semantic Versioning(语义化版本控制),主要通过npm和yarn进行包管理。库的维护者会定期发布新版本以修复bug、添加新功能以及保持与Angular框架的兼容性。开发者可以通过查看CHANGELOG来了解每个版本的更新详情。

2.2 "ng-bootstrap-loading"的优势

2.2.1 与传统加载蒙版解决方案的对比

传统的加载蒙版解决方案通常需要开发者手动编写大量的CSS和JavaScript代码来实现。相比之下,"ng-bootstrap-loading"库提供的指令和API简化了加载蒙版的配置和使用过程。此外,它集成了多种常用的加载动画效果和配置选项,从而减少开发工作量并提高效率。

2.2.2 轻量化设计和性能优化

"ng-bootstrap-loading"库设计时考虑到了性能因素,它尽可能轻量化以减少对应用性能的影响。该库仅加载必要的资源,并且提供多种优化加载状态展示的选项。比如,可以配置加载蒙版是否全屏显示、背景颜色透明度等,以适应不同的页面布局和设计要求。

2.2.3 社区支持和扩展性分析

作为一款流行的Angular库,"ng-bootstrap-loading"拥有一个活跃的社区,不断有人提出问题、分享解决方案和贡献代码。社区的支持有助于库的持续发展和问题的快速解决。此外,"ng-bootstrap-loading"的设计允许通过编写自定义指令或服务的方式进行扩展,使得开发者能够根据自己的需求对加载蒙版进行个性化定制。

在下一章节中,我们将深入探讨"使用ngbLoading指令显示加载蒙版"的具体细节,使开发者能够更加有效地将"ng-bootstrap-loading"应用到他们的Angular项目中。

3. 使用ngbLoading指令显示加载蒙版

在Web开发中,用户经常需要等待异步操作完成,如数据加载或表单提交。加载蒙版可以提升用户体验,告知用户操作正在进行中,避免用户重复操作。Angular框架中,“ng-bootstrap-loading”库通过ngbLoading指令,实现了加载蒙版的显示与控制。本章将深入探讨如何使用ngbLoading指令,并介绍其高级配置和技巧。

3.1 ngbLoading指令基础使用

ngbLoading指令提供了一个简便的方法来添加和管理加载蒙版。开发者可以通过简单的配置,将加载蒙版集成到Angular应用中。

3.1.1 如何在Angular模块中引入"ng-bootstrap-loading"

要在Angular项目中使用ngbLoading指令,首先要安装ng-bootstrap-loading库。通过npm或yarn安装指令包:

npm install --save ng-bootstrap-loading
# 或者
yarn add ng-bootstrap-loading

接着,在你的Angular模块文件(通常是app.module.ts)中导入 NgbModule 并将其添加到 @NgModule 装饰器的imports数组中:

import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import {汉堡 ng-bootstrap-loading} from 'ng-bootstrap-loading';
import { AppComponent } from './app.component';@NgModule({declarations: [AppComponent],imports: [BrowserModule,汉堡 ng-bootstrap-loading],providers: [],bootstrap: [AppComponent]
})
export class AppModule { }

3.1.2 ngbLoading指令的基本语法

一旦引入了模块,你就可以在组件模板中使用ngbLoading指令了。以下示例展示了如何在按钮点击事件中触发加载蒙版:

<button (click)="showLoading()">加载数据</button>
<ng-template #loadingTemplate><div class="loading">加载中...</div>
</ng-template>

组件的TypeScript代码如下:

import { Component } from '@angular/core';@Component({selector: 'app-root',templateUrl: './app.component.html',styleUrls: ['./app.component.css']
})
export class AppComponent {showLoading() {// 这里调用方法来控制加载模板的显示}
}

3.1.3 ngbLoading的基本配置和事件监听

ngbLoading支持许多配置选项,可以根据需要自定义加载蒙版的行为和样式。比如,通过事件监听来控制加载蒙版的显示和隐藏:

import { Component } from '@angular/core';@Component({selector: 'app-root',templateUrl: './app.component.html',styleUrls: ['./app.component.css']
})
export class AppComponent {isLoading: boolean = false;showLoading() {this.isLoading = true; // 显示加载蒙版}hideLoading() {this.isLoading = false; // 隐藏加载蒙版}
}

在HTML模板中,绑定这些状态变量到ngbLoading指令:

<button (click)="showLoading()">加载数据</button>
<ng-template #loadingTemplate><div class="loading" *ngIf="isLoading">加载中...</div>
</ng-template>

3.1.4 配置加载蒙版的显示内容

开发者可以自定义加载蒙版中的内容。例如,你可以设置加载蒙版为一个旋转的加载图标:

<ng-template #loadingTemplate><div class="spinner"> <!-- 这里可以是一个动画加载图标 --><mat-progress-spinner diameter="50" color="accent"></mat-progress-spinner></div>
</ng-template>

3.1.5 在不同组件间复用加载蒙版

由于ngbLoading指令使用了Angular的依赖注入机制,你可以在不同的组件间复用加载蒙版模板。只需在需要的地方定义和引用相同的模板即可。

3.1.6 结合路由守卫实现页面级加载蒙版

除了在组件中触发加载蒙版外,ngbLoading还允许开发者结合Angular的路由守卫(Route Guards)来实现页面级别的加载状态管理。

3.2 高级配置和进阶技巧

通过理解ngbLoading指令的基本使用之后,下面将探讨其高级配置和进阶技巧。

3.2.1 动态加载模板内容

有时,需要根据应用的当前状态动态地显示不同的加载蒙版内容。使用Angular的 *ngIf 指令或者 ng-template 可以方便地实现这一点。

3.2.2 加载蒙版的条件性显示

可以根据特定的条件来显示或隐藏加载蒙版。比如,基于数据获取的状态或者基于用户权限的验证结果。

3.2.3 加载蒙版与组件生命周期的结合

加载蒙版与组件的生命周期钩子紧密相连,可以在组件的 ngOnInit ngOnChanges ngOnDestroy 等生命周期钩子中触发加载蒙版的显示与隐藏。

本章通过介绍ngbLoading指令的基础使用和高级配置,为读者展示了如何在Angular应用中优雅地显示加载蒙版。下一章节将讨论如何通过自定义加载蒙版样式来增强用户的交互体验。

4. 自定义加载蒙版样式

4.1 蒙版样式的自定义方法

4.1.1 通过CSS类自定义加载蒙版样式

在“ng-bootstrap-loading”库中,可以通过添加自定义CSS类来修改加载蒙版的样式。为了实现这一点,首先需要创建一个新的CSS文件或者在现有的样式表中添加自定义样式。

/* 在style.css中添加自定义样式 */
.custom-loading {background-color: rgba(0, 0, 0, 0.7); /* 深色背景以突出加载动画 */border-radius: 10px; /* 角圆处理,使加载动画更加美观 */color: white; /* 文字颜色设置为白色,与背景形成对比 */
}

然后,在模板中,将这个CSS类应用到 ngbLoading 指令上:

<div [ngbLoading]="isLoading" class="custom-loading"></div>

这段代码将给加载蒙版添加了一个深色背景,圆角边框以及白色文字,通过这样的视觉效果改善用户体验。

4.1.2 使用模板引用变量动态修改样式

如果需要在运行时根据条件动态地改变加载蒙版的样式,可以使用Angular的模板引用变量。下面是如何操作的一个例子:

<div #loadingDiv [ngbLoading]="isLoading" style="background-color: white;"></div><button (click)="changeLoadingStyle(loadingDiv)">Change Loading Style</button>
changeLoadingStyle(element: HTMLElement) {const newStyle = window.getComputedStyle(element);if (newStyle.backgroundColor === 'white') {element.style.backgroundColor = 'grey';} else {element.style.backgroundColor = 'white';}
}

在这个例子中,点击按钮会触发 changeLoadingStyle 函数,该函数会获取当前的背景颜色并交换它。模板引用变量 #loadingDiv 是关键,它使得组件模板中的元素可以作为参数传递给函数。

4.1.3 根据不同状态设置动态样式

有时候,可能需要根据加载蒙版的当前状态改变样式,例如,加载时显示一种样式,加载完成后显示另一种样式。可以通过Angular的 @HostBinding 装饰器来监听 isLoading 状态的变化:

@HostBinding('@.class') get dynamicClass(): string | undefined {return this.isLoading ? 'loading-state' : 'loaded-state';
}

在这里, dynamicClass 是一个基于 isLoading 的getter,它返回不同的CSS类名,从而允许根据加载状态变化动态地切换样式。

4.2 蒙版动画效果增强用户体验

4.2.1 探索ngbLoading动画选项

“ng-bootstrap-loading”库提供的另一个关键特性是加载蒙版动画。为了使用动画,必须在加载蒙版组件上添加对应的动画属性。下面是一个示例:

<div [ngbLoading]="isLoading" @ngbLoading animation="rotate"></div>

这里, animation="rotate" 表示使用内置的旋转动画。 ngbLoading 不仅支持多种内置动画效果,还可以接受自定义动画定义。

4.2.2 自定义加载动画的实现步骤

要实现一个自定义的加载动画,需要使用Angular动画API。首先,在 @angular/animations 包中定义动画序列:

import { animate, style, transition, trigger } from '@angular/animations';export const loadingAnimation = [trigger('loadingState', [transition(':enter', [style({ transform: 'rotate(0deg)' }),animate(500, style({ transform: 'rotate(360deg)' })),]),]),
];

在组件中导入 loadingAnimation

import { loadingAnimation } from './loading.animation';@Component({animations: [loadingAnimation],...
})

然后在模板中应用动画触发器:

<div [ngbLoading]="isLoading" [@loadingState]="isLoading ? 'enter' : 'leave'"></div>

这段代码描述了一个在加载开始时启动旋转动画,加载完成后淡出的动画效果。

4.2.3 动画性能优化建议

动画可以显著提升用户体验,但如果使用不当,也可能成为性能瓶颈。优化动画性能的建议如下:

  • 使用 transform 属性而不是直接改变元素的宽度、高度或者边框半径,因为 transform 属性通常由硬件加速处理,对性能的影响较小。
  • 尽量避免在动画过程中改变布局属性,如 display , position , top , left , bottom , right
  • 避免在动画中使用 opacity transform 结合改变透明度和缩放,因为这两种动画是连贯的,但不可被硬件加速。
  • 使用 requestAnimationFrame ngZone.runOutsideAngular 方法来执行与动画无关的任务。

通过遵循这些最佳实践,开发者可以确保加载蒙版动画既美观又不会对应用程序的性能产生负面影响。

5. "ng-bootstrap-loading"高级用法

"ng-bootstrap-loading" 库不仅提供基本的加载蒙版功能,还具备一些高级特性,使得开发者能以更加动态和优雅的方式来处理复杂的加载状态。本章节将会深入探讨蒙版的动态触发和隐藏机制以及如何将 "ng-bootstrap-loading" 与其他第三方库或API集成,以实现更高级的加载状态管理。

5.1 蒙版的动态触发和隐藏

5.1.1 编程方式控制加载蒙版的显示与隐藏

在许多实际应用场景中,我们可能需要根据特定的逻辑来控制加载蒙版的显示与隐藏。"ng-bootstrap-loading" 允许开发者通过编程方式来控制加载蒙版的展示。可以通过组件的代码逻辑,在适当的时候调用API方法来显示或隐藏加载蒙版。

// 在组件中定义加载状态的控制逻辑
@ViewChild(NgbLoading) loading: NgbLoading;// 显示加载蒙版
this.loading.show();// 隐藏加载蒙版
this.loading.hide();

5.1.2 监听数据获取事件自动控制蒙版

在数据获取过程中,我们往往需要给用户一个直观的反馈。使用 "ng-bootstrap-loading" 时,可以监听数据获取的事件,并通过这些事件自动控制加载蒙版的显示与隐藏。

// 假设有一个函数负责获取数据,并触发相应的事件
getData(): Observable<any> {// 发送HTTP请求return this.http.get('/api/data').pipe(tap(() => this.loading.hide()), // 请求成功后隐藏蒙版catchError(error => {this.loading.hide(); // 处理错误时隐藏蒙版// 返回错误处理逻辑...}));
}

5.1.3 利用ngbLoading管理多个请求的加载状态

在复杂的场景中,可能同时进行多个数据请求,此时我们希望根据所有活跃请求的数量来控制加载蒙版的显示与隐藏。"ng-bootstrap-loading" 可以通过一个全局的加载状态管理器来实现这一功能。

// 在应用的主组件中初始化加载状态管理器
import { LoadingService } from 'ng-bootstrap-loading';constructor(loadingService: LoadingService) {loadingService.create(); // 创建加载状态管理器实例
}// 在请求开始时增加活跃请求计数
loadingService.increment();// 在请求结束时减少活跃请求计数
loadingService.decrement();// 检查是否有活跃的请求,从而决定是否显示加载蒙版
const isLoading = loadingService.isActive();

5.2 集成第三方库与API

5.2.1 将ngbLoading与NProgress等库结合使用

"ng-bootstrap-loading" 可以与流行的第三方进度库如 NProgress 结合使用,以提供更为丰富和流畅的用户体验。例如,可以在启动数据请求时开始 NProgress,请求完成后关闭进度条。

// 结合NProgress和ngbLoading
import { NProgress } from 'nprogress';getData(): Observable<any> {this.loading.show(); // 显示加载蒙版NProgress.start(); // 开始NProgress进度条return this.http.get('/api/data').pipe(tap(() => {this.loading.hide(); // 请求成功后隐藏加载蒙版NProgress.done(); // 完成NProgress进度条}),catchError(error => {this.loading.hide(); // 处理错误时隐藏加载蒙版NProgress.done(); // 错误发生时也完成进度条// 返回错误处理逻辑...}));
}

5.2.2 探讨ngbLoading与HTTP拦截器的协同工作

在Angular应用中,HTTP拦截器是一个强大且灵活的特性,可以用于拦截请求和响应。将 "ng-bootstrap-loading" 与HTTP拦截器结合使用,可以自动地在发送请求时显示加载蒙版,并在请求完成时隐藏。

// HTTP拦截器中管理加载蒙版
import { HttpInterceptor, HttpRequest, HttpHandler, HttpEvent } from '@angular/common/http';
import { Injectable } from '@angular/core';
import { LoadingService } from 'ng-bootstrap-loading';@Injectable()
export class MyInterceptor implements HttpInterceptor {constructor(private loadingService: LoadingService) { }intercept(req: HttpRequest<any>, next: HttpHandler) {this.loadingService.increment(); // 请求开始时增加活跃请求计数return next.handle(req).pipe(tap(() => this.loadingService.decrement()) // 请求成功后减少活跃请求计数);}
}

5.2.3 利用ngbLoading在服务端渲染中实现加载状态同步

对于服务端渲染(SSR)的应用,需要确保加载状态能够跨平台同步。"ng-bootstrap-loading" 设计为可以轻松适应SSR环境,确保在服务端渲染的页面中也能无缝地显示和管理加载蒙版。

// 在服务端渲染环境中使用加载蒙版
import { isPlatformBrowser, isPlatformServer } from '@angular/common';constructor(private loadingService: LoadingService, private plt: PlatformId) {if (isPlatformBrowser(this.plt)) {// 在客户端应用加载蒙版逻辑...} else if (isPlatformServer(this.plt)) {// 在服务端渲染页面时也初始化加载状态管理器this.loadingService.create();}
}

通过以上章节内容,我们可以看到 "ng-bootstrap-loading" 库在Angular应用中提供高级用法的能力,以及如何与其他第三方库进行有效的集成,以实现更加动态和高效的加载状态管理。这些高级特性可以大幅改善应用的用户体验,并提高加载过程中的信息透明度。

6. 项目实践与案例分析

6.1 实战项目介绍与需求分析

6.1.1 选取案例的业务背景和目标

在本章中,我们将通过一个具体的项目案例来深入探讨"ng-bootstrap-loading"在实际开发中的应用。这个案例是一个基于Angular框架构建的在线电子商务平台,主要功能包括商品浏览、购物车、订单处理等。在这个项目中,"ng-bootstrap-loading"不仅用于提升用户体验,还要解决在数据处理和状态管理中可能出现的性能问题。

6.1.2 分析项目中加载蒙版的应用场景

加载蒙版在该项目中的应用主要有三个场景:

  1. 初始化加载 :用户首次访问平台时,整个页面的数据需要从后端获取,这时展示加载蒙版以提示用户。
  2. 数据交互 :用户在使用过程中进行商品搜索或执行其他需要与后端通信的操作时,同样需要加载蒙版。
  3. 组件级别加载状态 :单个组件内部请求数据时,独立显示加载蒙版,避免影响其他界面元素。

6.2 加载蒙版在项目中的集成和应用

6.2.1 配置和优化项目中的加载蒙版

在集成"ng-bootstrap-loading"到项目中时,我们遵循以下步骤:

  1. 安装和引入库 : 首先通过npm安装库到项目中: bash npm install ng-bootstrap-loading --save 然后在Angular模块中导入 NgbLoadingModule

  2. 全局配置加载蒙版 : 在 app.module.ts 中配置全局默认的加载蒙版参数: ```typescript import { NgbLoadingModule, NgbLoadingConfig } from 'ng-bootstrap-loading';

    @NgModule({ imports: [ NgbLoadingModule.forRoot({ template: '

    ', backdrop: true, delay: 200 // 显示延迟时间 }), ], ... }) export class AppModule {} ```

  3. 局部使用加载蒙版 : 在需要加载蒙版的组件中,通过注入 NgbLoadingService 来控制加载状态: ```typescript import { Component } from '@angular/core'; import { NgbLoadingService } from 'ng-bootstrap-loading';

    @Component({ selector: 'app-product-list', templateUrl: './product-list.component.html', styleUrls: ['./product-list.component.css'] }) export class ProductListComponent { constructor(private loadingService: NgbLoadingService) {}

    fetchProducts() { this.loadingService.show(); // 模拟异步操作 setTimeout(() => { this.loadingService.hide(); }, 1000); } } ```

6.2.2 遇到的问题和解决方案

在项目实践过程中,我们遇到了以下问题及解决方案:

  • 问题1 :在页面跳转时,加载蒙版消失过快,导致用户体验不佳。
    • 解决方案 :通过调整 delay 属性的值,将加载蒙版显示的时间延长,确保数据加载完成后再隐藏蒙版。
  • 问题2 :组件级别的加载蒙版在多个请求同时发生时,会导致蒙版覆盖问题。
    • 解决方案 :在服务端实现请求队列机制,确保同一时间只有一个加载蒙版显示。

6.2.3 项目效果展示和用户反馈

通过以上配置和优化,加载蒙版在项目中的表现良好。用户在进行数据密集型操作时,能够清楚地了解应用状态,加载过程对用户体验的影响大大降低。根据用户反馈,界面的流畅性和响应速度有了明显的提升,加载蒙版的使用得到了认可。

6.3 拓展阅读和深入研究

6.3.1 推荐相关的高级教程和阅读材料

为了更深入地理解和掌握加载蒙版技术,可以参考以下资源:

  • 官方文档 ng-bootstrap-loading 的 官方文档 提供最全面的API和使用指南。
  • 高级指南 :阅读《Angular高级编程》中关于状态管理和服务端渲染的章节,进一步优化加载蒙版的使用。

6.3.2 讨论加载蒙版技术的未来发展方向

随着前端技术的不断进步,加载蒙版技术也在不断创新。未来的加载蒙版可能会集成更多的智能感知能力,例如根据用户的网络状况自动调整加载提示的样式,或在加载完成后提供更丰富的交互体验。同时,与AI技术的结合也可能成为加载蒙版的一个发展方向,例如通过机器学习预测页面加载时间,并提前向用户发出提示。

本文还有配套的精品资源,点击获取 menu-r.4af5f7ec.gif

简介:为了在Angular应用中增强用户体验,在数据加载时显示加载蒙版是必不可少的。"ng-bootstrap-loading"是一个基于Bootstrap框架的库,专门用于实现页面加载效果,尤其适用于处理大量数据和耗时操作。这个库提供了一个 ngbLoading 指令,能够控制加载指示器的显示。开发者可以通过简单的导入和配置,轻松地在他们的Angular应用中使用它。此外,"ng-bootstrap-loading"还支持自定义样式和高级用法,如延迟显示和与RxJS操作符的集成。最终,这有助于开发者构建出更加用户友好的交互性应用。

本文还有配套的精品资源,点击获取 menu-r.4af5f7ec.gif


http://www.hkcw.cn/article/dYqkoMeLWa.shtml

相关文章

前端学习+项目问题9

一般字体下载下来是.ttf格式&#xff0c;需要转换才能使用 字体转换网址 http://www.font2web.com//?errorno_file_uploaded https://www.fontsquirrel.com/tools/webfont-generator 转换需要上传字体&#xff0c;转换完成后会自动下载安装包&#xff0c;解压安装包&#…

四、Angular 服务与依赖注入

一、概述 Angular 为了解决数据共享和逻辑复用问题&#xff0c;引入了服务的概念&#xff0c;服务简单理解就是一个带有特性功能的类&#xff0c;Angular 提倡把与视图无关的逻辑抽取到服务中&#xff0c;这样可以让组件类更加精简、高效&#xff0c;组件的工作只管用户体验&am…

源码:Spring常规Bean创建过程

Bean创建过程&#xff1a; 一、版本 5.3.10二、学习内容 Bean创建过程源码三、Bean生命周期 时间轴地址&#xff1a;点击 四、bean创建过程脑图总结 脑图地址&#xff1a;点击 五、源码过程 说明&#xff1a; bean创建入口一般都是通过getBean(xxx);方法进入的&#xf…

用ENSP完成SSH登录实验(设备间登录),学起来学起来!!

最近才用到SSH的登录功能&#xff0c;简单的学习总结。大佬勿喷&#xff01;&#xff01;&#xff01; 用ENSP完成SSH登录实验&#xff08;设备间相互登录&#xff09;&#xff0c;学起来学起来&#xff01;&#xff01; 具体思路&#xff1a; 设备连线&#xff0c;启动。配…

调整图片和表格尺寸的命令:resizebox

\resizebox 是 LaTeX 中的一个命令&#xff0c;用于调整插入的内容&#xff08;如图像、表格、文本等&#xff09;的大小。它的语法如下&#xff1a; \resizebox{<width>}{<height>}{<content>}其中&#xff1a; <width> 和 <height> 分别表示…

Linux练级宝典->动态库和静态库

动静态库的原理 我们知道可执行文件前的4步骤 预编译->编译->汇编->链接 预处理&#xff1a; 完成头文件展开、去注释、宏替换、条件编译等&#xff0c;最终形成xxx.i文件。编译&#xff1a; 完成词法分析、语法分析、语义分析、符号汇总等&#xff0c;检查无误后将…

uniapp在自定义tabbar上动态修改svg图标颜色和字体颜色

需求:在uniapp项目内,自定义tabbar,需要将图标更换成svg格式,可动态修改图标及字体颜色。 效果图如下: 我使用的是uniapp结合uview2的组件使用,代码如下: <u-tabbar :value="currentIndex" @change="tabbarChange" :fixed="true" :a…

三、Angular 路由

一、简介 Angular 的路由服务是一个可选的服务&#xff0c;它用来呈现指定的 URL 所对应的视图。它并不是Angular 核心库的一部分&#xff0c;而是位于 angular/router 包中。像其他 Angular 包一样&#xff0c;路由服务在用户需要时才从此包中导入。 [1]. 创建路由模块 默认…

C语言——字符函数和字符串函数(二)

&#x1f4dd;前言&#xff1a; 上一篇文章C语言——字符函数和字符串函数&#xff08;一&#xff09;对字符函数和字符串函数strlen&#xff0c;strcpy和strncpy&#xff0c;strcat和strncat进行了初步的讲解 这篇文章主要再讲解几个我们常用到的其他字符串函数&#xff08;附…

【C语言字符函数和字符串函数(二)】--strcmp,strstr的使用和模拟实现,strncpy,strncat,strncmp函数的使用,strock,strerror函数的使用

目录 一.strcmp的使用和模拟实现 1.1--strcmp的使用演示 1.2--strcmp的模拟实现 二.strstr的使用和模拟实现 2.1--strstr的使用演示 2.2--strstr的模拟实现 三.strncpy函数的使用 3.1--strncpy的代码演示 3.2--strncpy的模拟实现 3.3--比较strcpy和strncpy函数 四.…

白玉兰奖综艺类别入围名单公布 奖项即将揭晓

第30届上海电视节白玉兰奖入围名单在综艺类别中已经公布,最终获奖结果将在6月27日的“白玉兰绽放”颁奖典礼上揭晓。责任编辑:zhangxiaohua

曝理想汽车计划打造家庭轿车 或对标保时捷Panamera

据多方消息,国内造车新势力领军企业理想汽车正计划进军家庭轿车市场,其首款轿车产品疑似对标知名豪华品牌保时捷的Panamera车型。在最近的一季度财报会上,理想汽车CEO李想透露了公司进入轿车市场的计划。他表示,在现有增程SUV和纯电MPV产品线的市场表现达到预期后,将根据市…

t002-在线装修管理系统的设计与实现

项目视频演示 摘 要 互联网发展至今&#xff0c;无论是其理论还是技术都已经成熟&#xff0c;而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播&#xff0c;搭配信息管理工具可以很好地为人们提供服务。针对信息管理混乱&#xff0c;出错率高&#xff0c;信息…

vue3 各种数据处理

1.对数组去重, 并取出想要的值 用途&#xff1a;获取此数组中共有几个名字 方法&#xff1a;...new Map&#xff0c;map,values() 示例&#xff1a; let aar [{id: 1, name: name1, value: value1},{id: 1, name: name1, value: value2},{id: 2, name: name2, value: value…

广西瓜农因收购价低把西瓜扔进池塘 市场饱和致价格偏低

5月29日,广西扶绥县的瓜农因西瓜滞销和收购价低而面临困境。一些瓜农选择将西瓜扔进池塘或任其烂在地里。山圩镇的一名瓜农表示,今年西瓜的收购价仅为每斤两毛钱,远低于往年水平,预计自己将亏损四五万元,地里有约10万斤西瓜被丢弃。一位西瓜收购商指出,收购价确实较低,这…

德国真会向乌提供金牛座导弹吗 态度摇摆不定

德国总理默茨上任以来,在是否向乌克兰提供“金牛座”远程巡航导弹问题上的态度一直摇摆不定。他在26日参加活动时提到,英国、法国、德国和美国“已不再限制援助乌克兰武器的射程”,这一言论引发了外界关于德国是否已经批准向乌克兰提供“金牛座”导弹的各种猜测。路透社报道…

孙俪唇下痣系因车祸玻璃碴致假性痣“孙俪唇下痣没了”

5月28日,演员孙俪出席时尚芭莎年度派对时,人们注意到她唇下的痣不见了。随后,孙俪工作室发布了一组照片,证实了这一点。两天后,“孙俪唇下痣没了”这一话题登上热搜。早在《甄嬛传》播出期间,孙俪唇下的小黑点就引起了观众的关注。到了《芈月传》和《那年花开月正圆》播出…

17岁学生登顶珠峰保送清华?学校回应 并无此类招生计划

近日,多家媒体报道称北京第八十中学17岁的学生李浩榕成为中国首位从北坡登顶珠峰的青少年,并登上热搜。然而,根据国内媒体报道,河北16岁女孩丁禹琪在2020年也曾从北坡成功登顶珠峰。西藏登山协会证实,在中国业余登山爱好者中,李浩榕是珠峰北坡登顶的最年轻男性,丁禹琪是…

确定男女关系第二天 她就开始借钱...

今年年初,郑先生谈了一个女朋友,期间女方向他借了多笔钱。现在两人分手后,郑先生希望能把钱要回来。郑先生是四川人,今年40岁,离异两年,独自抚养一个孩子。他在杭州从事物流运输工作已有六年。郑先生找到记者是因为和一名女子产生了纠纷。该女子向他借了12万元,承诺每月…

这些“牛奶”不仅浪费钱还没营养 减肥路上的“绊脚石”

早餐奶、核桃奶、巧克力奶,这些“牛奶”你还在喝吗?如果购买的牛奶包装上标有“调制乳”或“含乳饮料”,那么它们可能是减肥路上的绊脚石,不仅浪费钱还缺乏营养。调制乳是以不低于80%的生牛(羊)乳或复原乳为主要原料,添加其他原料或食品添加剂或营养强化剂制成。例如早餐…