AngularJS VS Angular(转)
---恢复内容开始---
原文链接:https://zhuanlan.zhihu.com/p/27696268
这篇是在知乎上看到的, 原文链接附上。觉得很不错, 就自己抄过来了。
AngularJS最大版本号只有1.x, 2.x/4.x的版本号都是针对于全新的框架Angular。但是也不能说Angular 和 AngularJS 一点关系都没有。
提一下AngularJS 的特性:双向数据绑定,MVC,指令,服务,过滤器,模块化,脏检查机制,依赖注入,scope,路由,表单校验等等。
看下AngularJS 到 Angular的过程中,哪些概念被留下来, 哪些被提剔除了(所谓的取其精华,去其糟粕)。
提出的部分:
- ng-controller指令:控制器主要是业务逻辑的控制部分
- $scope概念:很轻大有很复杂(我一直没弄懂)
- 数据的双向绑定:数据双向流通可能导致数据的震荡(所以会有最多检查10次的限制,10次之后还不稳定就会报错)
保留/改善的部分:
- 路由嵌套:AngularJS自带的路由系统是不能嵌套路由的, 到了Angular中可以随意嵌套
- 过滤器(Filter)变成管道(Pipe),概念的变化
- 依赖注入机制:直接在构造器中注入,还有分层依赖注入的概念
- 指令写法:
- ng-click-> (click)
- [属性]href="{{}}" 可以写成[href]
- [(ngModel)] 代替以前的ng-model
- *ngFor 代替ng-repeat,不适用于对象,适用于任何有Symbol.iterator属性的数据结构(能用for...of来访问) ,比如数据,集合等
- *ngIf 代替ng-if,去掉ng-show,ng-hide
- 对移动端的支持
- 模板,数据绑定,服务,模块,脏检查机制等
新增的部分:
- 组件化:Angular的核心所在
- Typescript作为默认的开发语言
- ZoneJS 监听所有(有可能导致数据变化)的异步事件
- 支持服务端渲染
Angular Cli
Angular团队为开发者提供了一个开箱即用(out of the box)的脚手架工具:Angular Cli.我们再也不用担心在项目初始化时,要搭建配置一系列的工具,比如webpack,karma,tslint,protractor等。
操作很简单,只要运行如下命令行就搞定了。
具体的语法教程可参考这里。
安装之后,文件目录如下:
my-dream-appe2e // 端到端测试app.e2e-spec.tsapp.po.tstsconfig.e2e.jsonnode_modules/... // npm包src/... // 源码angular-cli.json // 配置项.editorconfig // 编辑器配置.gitignore // git忽略文件配置karma.conf.js // karma配置package.json // npm配置protractor.conf.js // 测试配置项README.md // 项目说明tsconfig.json // ts编辑器的配置tslint.json // tslint配置项
我们需要关注的是src文件夹,这里存放我们所有的源代码,开发的时候基本都在src中。
srcapp // 代码的主要文件夹app.component.css // 根组件样式app.component.html // 根组件模版app.component.spec.ts// 根组件测试app.component.ts // 根组件脚本app.module.ts // 根模块assets // 静态资源.gitkeep // 保存空文件夹environments // 环境配置 environment.prod.tsenvironment.tsfavicon.ico // 图标index.html // 页面主入口main.ts // 脚本主入口polyfills.ts // 兼容浏览器styles.css // 全局css样式test.ts // 单元测试主入口
模块
Angular很重要的概念之一仍然是模块。Angular整个框架就是由很多个模块组成的,而不同的模块需要从不同的地方导入。打开package.json文件,可以看到依赖的angular包可能是这样的:
"@angular/common": "^2.3.1", "@angular/compiler": "^2.3.1", "@angular/core": "^2.3.1", "@angular/forms": "^2.3.1", "@angular/http": "^2.3.1", "@angular/platform-browser": "^2.3.1", "@angular/platform-browser-dynamic": "^2.3.1", "@angular/router": "^3.3.1",
来简单看下这些angular包中包含了哪些常用的模块(至少目前为止,我觉得常用的)。
- @angular/core:这里包含了很多常用的模块
- NgModule:模块定义装饰器
- Component:组件定义装饰器
- Directive:指令定义装饰器
- Pipe :管道定义装饰器
- PipeTransform:管道接口
- Injectable:服务定义装饰器
- ElmentRef:元素引用
- ViewChild:获取子元素
- Render:渲染
- Input:接受参数输入
- Output:事件输出
- EventEmitter:触发自定义事件
- @angular/common
- CommonModule:通用模块,包含内置指令ngIf,ngFor
- @angular/forms
- FormsModule:定义模版驱动表单
- ReactiveFormsModule:定义响应式表单
- FormGroup, FormArray, FormControl, FormBuilder:响应式表单元素
- Validators:表单校验
- @angular/http
- HttpModule:http请求模块
- @angular/router
- RouterModule 路由模块
- Routes 路由数据结构
- @angular/platform-browser
- platformBrowser:AoT编译
- BrowserModule:浏览器支持,注意该模块导入了CommonModule,然后导出去,所以引用了这个模块也就引用了CommonModule
- @angular/platform-browser-dynamic
- platformBrowserDynamic:JIT编译
以上模块都是Angular框架中的自带模块,而我们开发的完整单元也是模块。一个应用中至少要有一个模块,也就是根模块。 一些共享的功能属性我们可以抽象出来,成为共享模块。然后就是一些特性模块了。
模块的组成由组件,服务,指令,管道等等组成,这些概念会在下面讲到。定义模块的语法如下:
@NgModuel({declarations: [], // 用到的组件,指令,管道providers: [], // 依赖注入服务 imports: [], // 导入需要的模块exports: [], // 导出的模块,跨模块交流entryComponents: [] // 需提前编译好的模块bootstrap: [] // 设置根组件 }) export class AppModule { }
所有用到的组件,指令,管道,模块都需要事先在模块中声明好,才能在具体组件中使用。服务可以在模块,组件,指令中的providers声明,也可以直接在运行时提供(参见Trotyl Yu的例子)。
一般情况下,在根模块的bootstrap中设置启动的根组件即可,但也可以动态处理(参见Trotyl Yu的例子)。
那如何启动根模块呢?
在入口脚本中,也就是Angular Cli项目中的main.ts中,启动如下:
// 导入需要模块 import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';// 根模块 import { AppModule } from './app/app.module';// 编译启动模块 platformBrowserDynamic().bootstrapModule(AppModule);
至此,我们对模块有所了解,也知道了模块的定义。
组件
自从采用组件化的React大火之后,目前市面上炙手可热的框架全都采用了组件化的理念,Angular当然也不能落后了。可以说,组件化是Angular的核心理念。按Angular在中国的布道者的话来说,就是:
Angular的核心概念是组件,模块化机制NgModule是为组件化服务的,实际上所有其它机制都是围绕组件化而来的。只有从组件化这个角度才能把握Angular的精神内核。
组件通常都是由模版和业务逻辑组成,看一下如何用Angular写一个很简单的组件:
// hello.component.ts import { Component } from '@angular/core';@Component({ selector: 'hello',template: '<p> {{greeting}} </p>',styles: [`p { color: red;}`] }) export class HelloComponent{private greeting: string;constructor(){this.greeting = 'Hello, Angular2!';} }// 使用 <hello></hello>// 渲染结果 <hello><p> Hello, Angular2! </p> </hello>
定义类HelloComponent的时候,加上装饰器@Component(Typescript语法),告诉Angular这个类是组件类。里面的数据称之为元数据(metadata),selector属性说明了该组件对外的使用标记,template就是组件的模版,styles是组件的样式。而HelloComponent中定义的就是该组件的业务逻辑了。
如果模版内容太多,可以单独写在一个html文件中,用templateUrl属性引入;同理,样式文件用styleUrls引入。
组件生命周期
正如其他框架的组件,Angular的组件也是有生命周期这个概念。在不同的阶段不同的场景下,可以调用不同的生命周期函数钩子(hook)。
- constructor:构造器函数,一般用于注入服务
- ngOnChanges:检测到输入数据变化,首次触发发生在ngOnInit前。注意对象的属性发生变化时监听不到
- ngOnInit:组件初始化,通常会设置一些初始值
- ngDoCheck:手动触发更新检查
- ngAfterContentInit:内容初始化到组件之后
- ngAfterContentChecked:内容变更检测之后
- ngAfterViewInit:视图 初始化之后
- ngAfterViewChecked:视图发生变化检测之后,这个可以用来保证用户视图的及时更新
- ngOnDestroy:组件注销时的清理工作,通常用于移除事件监听,退订可观察对象等
具体说明可以参考这里。
组件通信
可以想像得到,组件化的页面结构最终会形成一颗组件树。盗一张Vue的图:
不可避免,我们需要考虑父子组件之间的参数传递问题。Anuglar提供的通信方式有如下几种:
- 父组件到子组件:父组件用属性绑定将值传入,子组件通过@Input来接收。
// 父组件 import { Component } from '@angular/core'; @Component({selector: 'hero-parent',template: `<h2> heroes </h2><hero-child *ngFor="let hero of heroes"[hero]="hero" ></hero-child>` }) export class HeroParentComponent {heroes = [{name: 'John'}, {name: 'Lily'}]; }// 子组件 import { Component, Input } from '@angular/core';import { Hero } from './hero';@Component({selector: 'hero-child',template: `<h3>{{hero.name}}</h3> ` }) export class HeroChildComponent {@Input() hero: Hero; }
- 子组件到父组件:子组件自定义事件用@Output传出,父组件用事件绑定获取。
// 子组件 import { Component, EventEmitter, Output } from '@angular/core';@Component({selector: 'my-voter',template: `<h4>{{name}}</h4><button (click)="vote(true)">Agree</button> ` }) export class VoterComponent { @Output() onVoted = new EventEmitter<boolean>(); vote(agreed: boolean) {this.onVoted.emit(agreed); } }// 父组件 import { Component } from '@angular/core';@Component({selector: 'vote-taker',template: `<h2>Should mankind colonize the Universe?</h2><h3>Agree: {{agreed}}, Disagree: {{disagreed}}</h3><my-voter *ngFor="let voter of voters"[name]="voter"(onVoted)="onVoted($event)"></my-voter>` }) export class VoteTakerComponent {agreed = 0;disagreed = 0;voters = ['Mr. IQ', 'Ms. Universe', 'Bombasto'];onVoted(agreed: boolean) {agreed ? this.agreed++ : this.disagreed++;} }
- 子组件引用:在父组件模版中添加对子组件的引用,即可通过该子组件去访问子组件的方法。
<h3>Countdown to Liftoff (via local variable)</h3> <button (click)="timer.start()">Start</button> <button (click)="timer.stop()">Stop</button> <div class="seconds">{{timer.seconds}}</div> <countdown-timer #timer></countdown-timer>
- @ViewChild():类似的,也可以在脚本中用@ViewChild()来获取子组件
import { AfterViewInit, ViewChild } from '@angular/core'; import { Component } from '@angular/core'; import { CountdownTimerComponent } from './countdown-timer.component';@Component({selector: 'countdown-parent-vc',template: `<h3>Countdown to Liftoff (via ViewChild)</h3><button (click)="start()">Start</button><button (click)="stop()">Stop</button><div class="seconds">{{ seconds() }}</div><countdown-timer></countdown-timer>` }) export class CountdownViewChildParentComponent implements AfterViewInit {@ViewChild(CountdownTimerComponent)private timerComponent: CountdownTimerComponent;seconds() { return 0; }ngAfterViewInit() { setTimeout(() => this.seconds = () => this.timerComponent.seconds, 0);}start() { this.timerComponent.start(); }stop() { this.timerComponent.stop(); } }
- 将数据保存在服务中
- @ngrx/store:参见【译】手把手教你用ngrx管理Angular状态
模板与数据绑定
模版说白了就是html的内容,常规的html基本都是静态内容,而模版结合了框架中的新语法使得html动态化。来看看Angular中的模版有什么便利的语法:
- 插值绑定:双花括号{{}}
我们可以看到上一节组件例子中的{{greeting}}就是插值绑定。不仅可以获取变量的值,还可以直接写表达式。
- 属性(Property)绑定
<input [value]='myData'>
还有其他的,比如样式绑定:
<div [ngClass]="{special: isSpecial}"></div>
注意点:property和attribute不一样,想要绑定attribute,你需要写成property。比如:
<tr><td colspan="{{1 + 1}}">Three-Four</td></tr>
你将会得到如下错误信息:
Template parse errors:
Can't bind to 'colspan' since it isn't a known native property
你需要改写成这样:
<tr><td [attr.colspan]="1 + 1">One-Two</td></tr> // 或者 <tr><td attr.colspan="{{1 + 1}}">One-Two</td></tr>
- 事件绑定
<input (keyup)='handle($event)' >
可以是原生的事件:click,change,keydown,mousemove等,也可以是自定义事件,也可以是指令事件,比如ngSubmit。
- 双向绑定
<input [(ngModel)] = 'data'> // 双向绑定的背后其实是单向绑定和事件触发,等价于下面 <input [ngModel]="data" (ngModelChange)="data=$event">
注意点:使用ngModel,需要引入FormsModule模块。
还有些内置的指令:
- 模版引用变量(# / ref-)
可以在元素上用#或者ref-前缀来标记这个元素,然后在其他地方引用。
<input #fax placeholder="fax number"> ( <input ref-fax placeholder="fax number"> ) <button (click)="callFax(fax.value)">Fax</button>
- *ngIf:控制内容的有无
<div *ngIf="show"> Can you see this? </div>
如果还有else部分,可以如下操作:
<div *ngIf="show; else elseBlock"> Can you see this? </div> <ng-template #elseBlock> else block </ng-template>
- *ngFor:循环
<div *ngFor="let hero of heroes; let i=index> {{i}}: {{hero.name}}</div>
具体的模版语法可以参考这里。
路由
一个模块有了多个组件之后,需要用路由来配置哪个url呈现哪个组件。
首先,我们需要在入口页面的index.html中配置根路径:
... <head> <base href="/"> ... </head> ...
然后创建一个路由模块:
import { NgModule } from '@angular/core'; import { RouterModule, Routes } from '@angular/router';...// 路由配置 const appRoutes: Routes = [{ path: 'home', component: HomeComponent },{ path: 'heroes', component: HeroesComponent },{ path: '', redirectTo: '/home', pathMatch: 'full' },{ path: '**', component: PageNotFoundComponent } ];@NgModule({imports: [RouterModule.forRoot(appRoutes)],exports: [RouterModule] }) export class AppRoutingModule {}
在主模块中导入配置好的路由模块:
import { NgModule } from '@angular/core'; import { BrowserModule } from '@angular/platform-browser'; import { FormsModule } from '@angular/forms';...@NgModule({imports: [BrowserModule,FormsModule,AppRoutingModule],declarations: [AppComponent,HomeComponent,HeroesComponent,PageNotFoundComponent],bootstrap: [ AppComponent ] }) export class AppModule { }
而在页面中需要一个容器<router-outlet></router-outlet>去承载:
import { Component } from '@angular/core';@Component({selector: 'my-app',template: `<h1>Angular Router</h1><nav><a routerLink="/home" routerLinkActive="active">Home</a><a routerLink="/heroes" routerLinkActive="active">Heroes</a></nav><router-outlet></router-outlet>` }) export class AppComponent { }
上面代码中的routerLink定义了用户点击后的路由跳转,routerLinkActive定义该路由激活时的样式类。
路由上还可以带上一些索引参数:
{ path: 'heroes/:id', component: HeroesComponent },
获取的方式:
import { ActivatedRoute, Params } from '@angular/router';... export class a {constructor( private route: ActivatedRoute ) {}// 路由参数this.route.params }
当模块很多,路由也很多的时候,我们可以使用模块懒加载的方式。懒加载的方式也很简单,在配置路由的时候修改如下即可:
const routes: Routes = [{ // 默认转到订单管理path: '',redirectTo: '/order',pathMatch: 'full'},{path: 'order',loadChildren: './order/order.module#OrderModule'},{path: 'warehouse',loadChildren: './warehouse/warehouse.module#WarehouseModule' },{path: 'statistics/sales',component: SalesComponent} ];// 在子模块中用RouterModule.forChild import { NgModule } from '@angular/core'; import { RouterModule } from '@angular/router'; import { OrderComponent } from './order.component';const orderRoutes = [{path:'',component: OrderComponent} ];@NgModule({imports: [RouterModule.forChild(orderRoutes)],exports: [RouterModule] })export class OrderRoutingModule { }
服务依赖注入
服务是什么概念?可以简单地认为它是一个功能模块,重要在于它是单例对象,并且可以注入到其他的地方使用。
依赖注入是来自后端的概念,其实就是自动创建一个实例,省去每次需要手动创建的麻烦。
在Angular中定义一个服务很简单,主要在类之前加上@Injectable装饰器的功能。这是最常见的依赖注入方式useClass,其他具体参见这里。
import { Injectable } from '@angular/core'; @Injectable() export class Service {counter: number = 0;getData(){return this.counter++;} }
然后在模块的providers中声明:
import { Service } from './service'; ...@NgModule({imports: [...],declarations: [...],providers: [ Service ], // 注入服务 bootstrap: [...] }) export class AppModule { }
使用的时候需要在构造器中建立关联:
import { Component } from '@angular/core'; import { Service } from './service'; ...@Component({selector: 'my-app',templateUrl: './app.component.html',styleUrls: ['./app.component.css'] }) export class AppComponent {constructor(public service: Service) {// this.service被成功注入// 相当于 this.service = new Service(); // 然后可以调用服务this.service.getData();} }
由于该服务是在模块中注入,所以该模块中的所有组件使用这个服务时,使用的都是同一个实例。
除了在模块中声明,还可以在组件中声明。假设AppComponent下还有组件HomeComponent,此时我们在AppComponent中注入这个服务:
import { Component } from '@angular/core'; import { Service } from './service'; ...@Component({selector: 'my-app',templateUrl: './app.component.html',styleUrls: ['./app.component.css'],providers: [ Service ], // 注入服务 }) export class AppComponent {constructor(public service: Service) {// this.service被成功注入// 相当于 this.service = new Service(); // 然后可以调用服务this.service.getData();} }
由于该服务是在模块中注入,所以该模块中的所有组件使用这个服务时,使用的都是同一个实例。
除了在模块中声明,还可以在组件中声明。假设AppComponent下还有组件HomeComponent,此时我们在AppComponent中注入这个服务:
import { Component } from '@angular/core'; import { Service } from './service'; ...@Component({selector: 'my-app',templateUrl: './app.component.html',styleUrls: ['./app.component.css'],providers: [ Service ], // 注入服务 }) export class AppComponent {constructor(public service: Service) {// this.service被成功注入// 相当于 this.service = new Service(); // 然后可以调用服务this.service.getData();} }
如果HomeComponent也使用了这个服务,那它使用的将是同一个实例。这个可以从Service中的数据变化来看出。
Angular还有个分层依赖注入的概念,也就是说,你可以为任一组件创建自己独立的服务。就像上面的例子,如果想要HomeComponent不和它的父组件同使用一个服务实例的话,只要在该组件中重新注入即可:
... @Component({selector: 'home',templateUrl: './home.component.html',styleUrls: ['./home.component.css'],providers: [ Service ], // 重新注入服务 }) export class HomeComponent {... }
对于前后端的接口,通常会写成服务。下面说下请求后端数据这块应该怎么写。在模块这节中提过,http有专门的HttpModule模块处理请求。首先要在模块中导入HttpModule,然后引入http服务,调用相应的请求方法即可。
import { Injectable } from '@angular/core'; import { Http } from '@angular/http';import 'rxjs/add/operator/toPromise';@Injectable() export class HttpService {constructor(private http: Http) {}getFromServer():any {return this.http.get(`/data`).toPromise().then(res => res.json()).catch();} }
由于请求返回的对象是个可观察对象,可以转成Promise对象处理。这里需要用到RxJS的toPromise操作符,然后用then去处理返回成功结果,catch处理失败情况。这样就搞定了后端数据的请求了。
RxJS又是另外一个比较高深的话题了,有机会深入学习一下再聊。
指令
Angular的指令概念跟AngularJS的指令差不多,最重要的区别在于Angular中的组件继承指令,算是特殊的指令。我们看下用指令的方式去写组件的简单例子:
import { Directive,Input,ElementRef } from '@angular/core';@Directive({selector: 'hello' }) export class HelloDirective { @Input() name: string;constructor(private el: ElementRef) {}public ngOnInit(): void {this.el.nativeElement.innerText = `hello ${this.name}!`;} }// 使用组件指令 <hello name="Yecao"></hello>// 渲染结果 <hello> hello, Yecao! </hello>
不要忘记在使用前先在模块中声明哦,我觉得这是Angular最烦人的一点。
除此之外,还有属性指令和结构指令,属性指令只改变元素的样式或者行为。要写成属性指令,需要在selector属性中用[]包裹起来。来看简单地例子:
import { Directive, ElementRef, Renderer2 } from '@angular/core'; @Directive({ selector: '[highLight]' }) export class HighLightDirective { constructor(private el: ElementRef, private renderer2: Renderer2) { } ngAfterViewInit() { this.renderer2.addClass(this.el.nativeElement, 'highlight'); } }// 使用属性指令 <p highLight> 这一段会高亮显示 </p>
结构指令就是模板中提到的*ngIf,ngFor等指令,它修改了DOM结构。举个例子,重写ngIf:
import { Directive, Input, ViewContainerRef, TemplateRef } from '@angular/core'; @Directive({ selector: '[myIf]' }) export class MyIfDirective { constructor(private templateRef: TemplateRef<any>, private viewContainer: ViewContainerRef) { } @Input() set appMyIf(condition: boolean) { if (condition) { this.viewContainer.createEmbeddedView(this.templateRef); } else { this.viewContainer.clear(); } } } // 使用结构指令 <p *myIf="false"> 这一段不会显示 </p>
管道(过滤器)
管道其实就是过滤器,就是叫法不一致而已。主要用于格式化源数据,而不改变源数据。定义和使用的方式也很简单:
import { Pipe, PipeTransform } from '@angular/core'; /** 订单取消状态:默认为ALL表示全部,CANCEL表示已取消,NOTCANCEL表示正常 */ @Pipe({ name: 'cancelStatus' }) export class CancelStatusPipe implements PipeTransform {transform(status:string, blank: boolean):string {const map = {"ALL": "全部", "NOTCANCEL": "正常","CANCEL": "已取消","": "暂无", }return blank? '特殊情况': map[status];} }
使用前记得在模块的declarations声明,或者导到共享模块,在共享模块中导出去。使用如下:
{{ "ALL" | cancelStatus }} // 全部 {{ "ALL" | cancelStatus: true }} // 特殊情况
Angular内置了一些管道:
// 日期 DatePipe {{ expression | date:"MM/dd/yy" }} // 数字 DecimalPipe,digitInfo的组成 {minIntegerDigits}.{minFractionDigits}-{maxfractionDigits} // minIntegerDigits:整数部分保留最小的位数,默认值为1. // minFractionDigits:小数部分保留最小的位数,默认值为0. // maxFractionDigits:小数部分保留最大的位数,默认值为3. {{ expression | number[:digitInfo] }}// 大写 {{ expression | uppercase }}// 小写 {{ expression | lowercase }}
参考资料
- Angular官网(英文)
- Angular Cli
- Angular官网(中文)
- 官网英雄展示板例子
- 英文视频教程
- Angular2一小时快速入门
- 大漠穷秋 Angular2 0视频教程
- angularjs 1 和 2区别,这才是Angular2的灵魂!
- Redux你的Angular 2应用--ngRx使用体验
- Angular 4 指令快速入门
本文首发于野草园,转载请注明出处。不当之处,欢迎批评指正!
转载于:https://www.cnblogs.com/wanff/p/8797537.html
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
相关文章
- AngularJS知识概括
AngularJS知识概括AngularJS简介AngularJS使用数据绑定与依赖注入MVC与MVMM作用域、控制器、模块表达式和指令过滤器服务(Service)provider(供应商)ngRoute 模块H5本地存储技术AngularJS简介 AngularJS是什么: Google开源的前端JS结构化框架动态展示页面数据, 并与…...
2024/5/2 1:06:31 - angular学习是有好处
Angular是框架的一种,不学也能开发前端。学backbone或者ember也能开发前端。没有js的mvc,就光弄个jquery,也能开发前端。那 到底要不要学?个人觉得就是要看发展趋势。angular是否简化的前端开发,是否符合未来前端的开发…...
2024/5/2 0:57:03 - Angular的依赖注入
你好,我是徐晓东,笔名燕云长风。大漠穷秋于 2019-03-16 21:22 赠此笔名。 寓意:结合李白著名的边塞诗《关山月》取【燕云长风】—— 长风几万里,吹度玉门关。 依赖注入 什么是依赖性注入?依赖性注入其实是一种设计模式…...
2024/5/2 6:18:05 - angular promise请求_如何用 Angular 创建一个图标库
灵活 可摇树优化的 SVG 图标库创建指南原文链接medium.com原作者:Kevin Kreuzermedium.com译者:知乎用户www.zhihu.com现在,几乎每一个 SPA 应用中都会使用到 icons。常规来说,开发人员会使用 UI 框架所提供的 icons,比如使用 Materia…...
2024/5/2 0:40:54 - 知乎高赞:前端模块化的十年征程
作者:外婆的https://zhuanlan.zhihu.com/p/265632724前言夫以铜为镜,可以正衣冠;以史为镜,可以知兴替 ——《旧唐书魏徵传》也许在谈论具体的内容之前,我们需要谈论一下关键词的定义。 什么是"模块"…...
2024/4/21 2:25:04 - angular $q promise详解
前言 通过本文,你大概能清楚angular promise是个啥,$q又是个啥,以及怎么用它。这里咱们先灌输下promise的思想。 下面写的全是废话,一些看着高逼格其实没什么大作用的概念,想知道$q究竟是什么,怎么去用&…...
2024/5/1 21:54:57 - 如何优雅的使用 Angular 表单验证
随便说说,这一节可以跳过 去年参加 ngChine 2018 杭州开发者大会的时候记得有人问我: Worktile 是什么时候开始使用 Angular 的,我说是今年(2018年) 3 月份开始在新模块中使用最新的 Angular 6,他说是不是有…...
2024/5/1 23:22:04 - Angular Day6 表单 + 模块
零零碎碎看了两天ng的表单部分,其实还是没有特别理解,所以趁着休息按照网上的教学视频自己写几个例子加深理解~ 举一个例子,这个是模板驱动表单的例子 模板驱动表单 例子: html部分: 姓名: <input ty…...
2024/4/21 2:25:01 - 前端框架选型续 分享下使用 Backbone、Vue、Angular、React 的经验
上周,知乎上有几篇关于 Angular 和 Vue 对比的文章。本来想着的是,这些文章倒是可以指导下新手,作一些技术选型。可遗憾的是,开始的文章失去了一些偏颇,后面的文章则开始了一些攻击性行为。慢慢的,整个知乎…...
2024/4/21 2:25:01 - Angular--AOT和JIT编译
概览 众所周知, angular应用在可执行之前, angular应用中的组件和模板必须被转化为可以被浏览器识别的javascript代码, 而这种转化正是通过angualr自身的编译器所执行的. angular提供了两种编译方式, 即AOT(预编译)和JIT(即使编译), 其中JIT为默认的编译方式 AOT即 Ahead of ti…...
2024/5/2 4:42:51 - 浅谈Angular Cli Schematics
写在前面 Schematics 是前端开发工作流工具,例如:创建一个组件、变更配置项至当前项目。并且不限制任何语言环境;虽然如此,但 Schematics 目前依然只能依赖 Angular Cli 来运行相应的命令行。 本文是在重构 ng-alain schematics 时…...
2024/5/1 21:43:10 - 解密Angular WebWorker Renderer
本文主要介绍Angular中的黑科技之WebWorker Renderer,使用Worker线程渲染如何渲染页面?从源码的角度切入,带领带大家看个究竟。 先来做个对比 开发框架版本:Angular 4.x 项目地址:angular-webworker-renderer-demo 对比…...
2024/5/2 5:07:51 - angular基础( 1.2 -- 2.0版本 )
教程推荐位置:http://www.angularjs.net.cn/tutorial/ 本人是比较倾向《angular权威教程》和angular手册结合的方式学习。 调试工具极力推荐:ng-inspector 1、数据绑定 angular数据绑定的两个方式:(1)ng-bind指令&…...
2024/5/1 21:43:55 - 知乎|推荐10个大学生需要收藏的良心网站
1:万千合集站 http://www.hejizhan.com/html/search/ 万千合集站是一个高质量论文,文档搜索网站,是一个非常适合大学生的一个网站。 它支持各种不同学科论文,文档搜索,包括:数学建模,电气工程…...
2024/5/1 22:33:48 - 前端框架:Angular React 和 Vue的比较
前端这几年的技术发展很快,细分下来,主要可以分成四个方面: 1.开发语言技术,主要是ES6&7,coffeescript,typescript等; 2.开发框架,如Angular,React,Vue.jsÿ…...
2024/5/2 1:43:15 - 使用Angular6+Bootstrap写的博客生成器
起源 我是工作两年才开始写博客的。 之前也产生过写博客的想法,但是为什么没有做呢?主要是觉得自己技术积累的还比较少,没什么可写的。有时候产生了一些想法或者做的一些事情,就直接记在笔记上了,记完之后觉得反正也…...
2024/4/21 2:24:53 - Angular页面传参办法
作者:Ye Huang链接:https://www.zhihu.com/question/33565135/answer/69651500来源:知乎著作权归作者所有,转载请联系作者获得授权。1. 基于ui-router的页面跳转传参(1) 在AngularJS的app.js中用ui-router定义路由,比如…...
2024/5/2 4:12:36 - 关于angular与vue的选择
mv*框架知乎上关于vue与angular的优劣辩论非常火热,总的来说,大型项目推荐使用angular,中小型项目推荐使用vue。细的分析会涉及方方面面,一时难以分出优劣,客观来说,vue门槛低、入手容易,但是高…...
2024/5/2 1:19:04 - 前端学习总结(二十三)——前端框架天下三分:Angular React 和 Vue的比较
前端这几年的技术发展很快,细分下来,主要可以分成四个方面: 1.开发语言技术,主要是ES6&7,coffeescript,typescript等; 2.开发框架,如Angular,React,Vue.js…...
2024/5/2 6:43:50 - 【荐】Angular官方代码风格指南
本文为笔者对Angular官网风格指南的整理版本,删除/增加了部分内容。另外,原文对每个规范都作出了原因的解释,个别还有示例,需要的请点击查看原文。 原链接:英文文档 / 中文文档 单一职责 单一…...
2024/4/20 20:25:12
最新文章
- 安装“STM32F4 Discovery Board Programming with Embedded Coder”MATLAB获取硬件支持包失败
安装“STM32F4 Discovery Board Programming with Embedded Coder”MATLAB获取硬件支持包失败 -完美解决方法 显示请续订您的软件维护服务,解决办法 根据知乎的文章 MATLAB获取硬件支持包失败,显示请续订您的软件维护服务,解决办法ÿ…...
2024/5/2 6:45:34 - 梯度消失和梯度爆炸的一些处理方法
在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言,在此感激不尽。 权重和梯度的更新公式如下: w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...
2024/3/20 10:50:27 - node.js常用指令
1、node:启动 Node.js REPL(交互式解释器)。 node 2、node [文件名]:执行指定的 JavaScript 文件。 node app.js 3、npm init:初始化一个新的 Node.js 项目,生成 package.json 文件。 此命令会创建一个…...
2024/5/2 2:43:01 - BetterZip for Mac2024最新mac解压缩软件
作为一名软件专家,对于市面上各类软件都有较为深入的了解,下面介绍的是一款适用于Mac系统的解压缩软件——BetterZip,将从其功能特点、使用方法、用户体验及适用人群等方面进行详细介绍。 BetterZip5-安装包绿色版下载如下: htt…...
2024/5/1 13:49:16 - 【外汇早评】美通胀数据走低,美元调整
原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...
2024/5/1 17:30:59 - 【原油贵金属周评】原油多头拥挤,价格调整
原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...
2024/4/30 18:14:14 - 【外汇周评】靓丽非农不及疲软通胀影响
原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...
2024/4/29 2:29:43 - 【原油贵金属早评】库存继续增加,油价收跌
原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...
2024/4/30 18:21:48 - 【外汇早评】日本央行会议纪要不改日元强势
原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...
2024/4/27 17:58:04 - 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响
原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...
2024/4/27 14:22:49 - 【外汇早评】美欲与伊朗重谈协议
原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...
2024/4/28 1:28:33 - 【原油贵金属早评】波动率飙升,市场情绪动荡
原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...
2024/4/30 9:43:09 - 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试
原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...
2024/4/27 17:59:30 - 【原油贵金属早评】市场情绪继续恶化,黄金上破
原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...
2024/4/25 18:39:16 - 【外汇早评】美伊僵持,风险情绪继续升温
原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...
2024/4/28 1:34:08 - 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势
原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...
2024/4/26 19:03:37 - 氧生福地 玩美北湖(上)——为时光守候两千年
原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...
2024/4/29 20:46:55 - 氧生福地 玩美北湖(中)——永春梯田里的美与鲜
原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...
2024/4/30 22:21:04 - 氧生福地 玩美北湖(下)——奔跑吧骚年!
原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...
2024/5/1 4:32:01 - 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!
原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...
2024/4/27 23:24:42 - 「发现」铁皮石斛仙草之神奇功效用于医用面膜
原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...
2024/4/28 5:48:52 - 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者
原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...
2024/4/30 9:42:22 - 广州械字号面膜生产厂家OEM/ODM4项须知!
原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...
2024/4/30 9:43:22 - 械字号医用眼膜缓解用眼过度到底有无作用?
原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...
2024/4/30 9:42:49 - 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...
解析如下:1、长按电脑电源键直至关机,然后再按一次电源健重启电脑,按F8健进入安全模式2、安全模式下进入Windows系统桌面后,按住“winR”打开运行窗口,输入“services.msc”打开服务设置3、在服务界面,选中…...
2022/11/19 21:17:18 - 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。
%读入6幅图像(每一幅图像的大小是564*564) f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...
2022/11/19 21:17:16 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...
win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面,在等待界面中我们需要等待操作结束才能关机,虽然这比较麻烦,但是对系统进行配置和升级…...
2022/11/19 21:17:15 - 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...
有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows,请勿关闭计算机”的提示,要过很久才能进入系统,有的用户甚至几个小时也无法进入,下面就教大家这个问题的解决方法。第一种方法:我们首先在左下角的“开始…...
2022/11/19 21:17:14 - win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...
置信有很多用户都跟小编一样遇到过这样的问题,电脑时发现开机屏幕显现“正在配置Windows Update,请勿关机”(如下图所示),而且还需求等大约5分钟才干进入系统。这是怎样回事呢?一切都是正常操作的,为什么开时机呈现“正…...
2022/11/19 21:17:13 - 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...
Win7系统开机启动时总是出现“配置Windows请勿关机”的提示,没过几秒后电脑自动重启,每次开机都这样无法进入系统,此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一:开机按下F8,在出现的Windows高级启动选…...
2022/11/19 21:17:12 - 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...
有不少windows10系统用户反映说碰到这样一个情况,就是电脑提示正在准备windows请勿关闭计算机,碰到这样的问题该怎么解决呢,现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法:1、2、依次…...
2022/11/19 21:17:11 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...
今天和大家分享一下win7系统重装了Win7旗舰版系统后,每次关机的时候桌面上都会显示一个“配置Windows Update的界面,提示请勿关闭计算机”,每次停留好几分钟才能正常关机,导致什么情况引起的呢?出现配置Windows Update…...
2022/11/19 21:17:10 - 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...
只能是等着,别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚,只能是考虑备份数据后重装系统了。解决来方案一:管理员运行cmd:net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...
2022/11/19 21:17:09 - 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?
原标题:电脑提示“配置Windows Update请勿关闭计算机”怎么办?win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢?一般的方…...
2022/11/19 21:17:08 - 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...
关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!关机提示 windows7 正在配…...
2022/11/19 21:17:05 - 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...
钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...
2022/11/19 21:17:05 - 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...
前几天班里有位学生电脑(windows 7系统)出问题了,具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面,长时间没反应,无法进入系统。这个问题原来帮其他同学也解决过,网上搜了不少资料&#x…...
2022/11/19 21:17:04 - 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...
本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法,并在最后教给你1种保护系统安全的好方法,一起来看看!电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中,添加了1个新功能在“磁…...
2022/11/19 21:17:03 - 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...
许多用户在长期不使用电脑的时候,开启电脑发现电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机。。.这要怎么办呢?下面小编就带着大家一起看看吧!如果能够正常进入系统,建议您暂时移…...
2022/11/19 21:17:02 - 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...
配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!配置windows update失败 还原更改 请勿关闭计算机&#x…...
2022/11/19 21:17:01 - 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...
不知道大家有没有遇到过这样的一个问题,就是我们的win7系统在关机的时候,总是喜欢显示“准备配置windows,请勿关机”这样的一个页面,没有什么大碍,但是如果一直等着的话就要两个小时甚至更久都关不了机,非常…...
2022/11/19 21:17:00 - 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...
当电脑出现正在准备配置windows请勿关闭计算机时,一般是您正对windows进行升级,但是这个要是长时间没有反应,我们不能再傻等下去了。可能是电脑出了别的问题了,来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...
2022/11/19 21:16:59 - 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...
我们使用电脑的过程中有时会遇到这种情况,当我们打开电脑之后,发现一直停留在一个界面:“配置Windows Update失败,还原更改请勿关闭计算机”,等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢࿰…...
2022/11/19 21:16:58 - 如何在iPhone上关闭“请勿打扰”
Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...
2022/11/19 21:16:57