##angular4.0 入门教程

开源社区上传图片好恼火,建议到我的github上查看原文 点此查看原文

在没有发布angular3.0的情况下,angular4.0发布了,昨天查文档的时候看到官方这段字。 懵逼表情 当时我的表情是这样的。 懵逼表情

网上查了下,原来是因为angular.router(路由)已经到4.0而angular.js的版本才2.X。为了不让开发者在开发在下载后发现2.X的包里有个4.X的路由(router)而引起误会。于是就干脆直接发布了个4.0的整合包,其实内部除了路由(router)升级几乎没什么变化。

网上看了不少angular2的教程,不过个人觉得都写的不太仔细,所以想写个仔细点的,主要是适合我们这种菜鸟入门,呼呼~~~~

首先科普点观念先,为学习angular2的人做基础准备(心里准备):

  • angular2和angular1差异很大,这点要做好心里准备
  • angular2是拥抱es6的,并且推荐的开发语法是typescript。而现在浏览器对es6的支持情况普遍不太好,所以实际开发时需要中间件来把es6的代码转到es5。
  • angular2是模块化的,各个组件是独立的。而每个模块是一个或多个组件的组合 结果演示

上面已经说了,angular官方建议使用typescript进行开发。当然使用js也能开发,不过语法怪异且繁琐。所以我们还是使用typescript开发(跟着官方混准没错)。

在项目之前再复习下上面的观点,目前angular的设计是基于模块(module),然后一个模块可以包含很多组件(component)。每个组件完成自己独立的功能。这样一组装就ok了。好了废话说到这,come on。

##先做一个helloworld

首先我们得建立一个learnangular2文件夹来存我们的项目。

接下来使用npm来安装我们需要的组件,主要需要以下组件(按照下面的顺序依次敲命令就行了):

npm init
npm install @angular/core --save
npm install @angular/common --save
npm install @angular/compiler --save
npm install @angular/router --save
npm install @angular/platform-browser --save
npm install @angular/platform-browser-dynamic --save
npm install @angular/platform-browser-dynamic --save
npm install rxjs --save
npm install systemjs --save
npm install zone.js --save
npm install core-js --save
npm install typescript --save

命令敲完了,让我简单BB下上面的命令:

npm init  //这个不用解释了吧,初始化一个nodejs的包管理器,一路next 默认配置就好
npm install @angular/core --save   //这个是必备的,从文件名也能看出来是核心模块
npm install @angular/common --save  //这个是组件模块,上面也介绍了,angular是模块化的,模块里又包含组件,这个就是用来提供定义组件的模块
npm install @angular/compiler --save  //编译器,angular组件使用的
npm install @angular/router --save  //路由模块,提供给组件里使用的
npm install @angular/platform-browser --save  //用于给浏览器提供渲染等一些服务的模块,这里是静态渲染AOT
npm install @angular/platform-browser-dynamic --save //用于给浏览器提供渲染等一些服务的模块,这里是动态渲染JIT,不过它依赖与上面那个AOT模块
npm install zone.js --save  //感觉像js的aop实现,angular/core中被引用
npm install rxjs --save   //js观察者模式的实现,angular/core中被引用
npm install systemjs --save  //SystemJS是一个通用的动态模块加载器,这里用来加载es6模块
npm install core-js --save  //一个补丁包(polyfill)用来让不支持es6的浏览器支持es6, 其实就是把es6代码转为es5
npm install typescript --save   //typescript编译器,用于把typescript转换为es6代码

好了,上面就是angular的开发中几乎是必须要使用的工具了。可是你安装完后并不能直接着手开发,因为这些组件工作起来还得需要配置,主要需要配置的是typescript和system.js,暂时不解释下面配置项的含义,直接列出配置文件:

//filename: tsconfig.json
//typescript默认配置文件,在使用tsc命令编译*.ts文件时,将会自动使用运行命令目录下的tsconfig.json配置文件
{"compilerOptions": {"target": "es5","module": "commonjs","moduleResolution": "node","sourceMap": true,"emitDecoratorMetadata": true,"experimentalDecorators": true,"lib": [ "es2015", "dom" ],"noImplicitAny": true,"suppressImplicitAnyIndexErrors": true}
}
//filename: system.config.js
//sytemjs的配置文件,配置systemjs加载时候的属性
System.config({paths: {'npm:':'/node_modules/','dist:':'/dist/src/'},map : {'@angular/core': 'npm:@angular/core/bundles/core.umd.js','@angular/common': 'npm:@angular/common/bundles/common.umd.js','@angular/compiler': 'npm:@angular/compiler/bundles/compiler.umd.js','@angular/platform-browser': 'npm:@angular/platform-browser/bundles/platform-browser.umd.js','@angular/platform-browser-dynamic': 'npm:@angular/platform-browser-dynamic/bundles/platform-browser-dynamic.umd.js','@angular/router': 'npm:@angular/router/bundles/router.umd.js','@angular/router': 'npm:@angular/router/bundles/router.umd.js','rxjs':'npm:rxjs'},packages: {'src': {defaultExtension: 'js'},'dist': {defaultExtension: 'js'},'node_modules': {defaultExtension: 'js'}}
});

ok,配置文件已经被我们搞定了,终于可以开始编码了。 首先我们得添加主页文件,文件代码如下: index.html,主页中应该要引入corejs, zonejs, systemjs, system.config.js

<!-- filename: index.html -->
<!DOCTYPE html>
<html>
<head><base href="/" /><title>learnAngular</title>
</head>
<body><hello-world></hello-world>
<hello-world></hello-world>
</body><script src="node_modules/core-js/client/shim.min.js"></script><script src="node_modules/zone.js/dist/zone.js"></script><script src="node_modules/systemjs/dist/system.src.js"></script><script src="system.config.js"></script><script>System.import('dist/bootstrap.js').catch(function(err){ console.error(err); });</script>
</html>

看的清楚点的同学可能会发现,这个页面除了引用框架包外还引入了两个文件,第一个是system.config.js,这是systemjs的配置文件。 第二个是了bootstrap.js,而目前这个文件还不存在,所以我们得添加这个js。不过别忘了我们开发语言是typescript而不是jsvascrip 所以这里添加的应该是bootstrap.ts, 编译后才会是bootstrap.js

//filename: bootstrap.ts
//这里是通过system.config.js中的map中定义的@angular/platform-browser-dynamic的值是@angular/platform-browser-dynamic/bundles/platform-browser-dynamic.umd.js
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
//这里可以看到这个dist:这个东西是在system.config.js中paths里面定义的,结合定义的组合起来就是/dist/main.module,再加上我们在packages中定义了在dist文件夹下默认后缀为.js所以就找到文件了
import { MainModule } from 'dist:main.module';platformBrowserDynamic().bootstrapModule(MainModule);

这个文件是用来启动angular主模块的。 源码中可以看到bootstrap.ts中引入了其他的JS,但是我们页面中也没加载。那么引入的js是怎么自动加载的呢?就是通过systemjs这个模块加载器去加载啦。

接下来我们在根目录下创建一个src目录,用来保存我们开发的源码 先添加bootstrap中的主模块,(再说一遍angular是基于模块的哟)

//filename: main.module.ts
import { NgModule }      from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { AppComponent } from 'dist:app.component';@NgModule({//主模块需要依赖的模块列表imports:      [ BrowserModule ],//主模块需要使用的component, angular中组件和模块就是在这里进行关联的declarations: [ AppComponent ],exports:      [ AppComponent ],//主模块启动后第一个启动的组件bootstrap:    [ AppComponent ]
})
export class MainModule { }

好的,主模块写完了,可以看到主模块中在declarations配置项中引用了AppComponent

最后再添加AppComponent组件,在angular中,具体的业务逻辑是写在组件中的

//filename: app.component.ts
import { Component } from '@angular/core';
//定义了一个组件,在主页的body中使用<hello-world></hello-world>进行访问
@Component({selector: 'hello-world',template: `<h1>Hello {{name}}</h1>`
})
export class AppComponent { name = 'Angular'; }

最后,我们再在根目录下添加一个dist文件夹,用来保存编译后的文件

好了,当文件添加完毕后,我们的目录看起来应该像这样: 目录清单 没问题的话,我们在根目录(learnangular2)中使用 tsc --rootDir . --outDir dist 把当前目录下的所有ts编译到dist目录下 命令来编译目录下的所有ts文件(这里子目录也会被编译哟)。 注意:如果在编译过程中有类始于 Cannot find module ....之类的错误,可以先选择无视。

编译完成后使用浏览器打开(请注意这里打开应该使用网页服务器而不是右键打开)。打开后看起来应该是这样的。 结果演示 一个hello angular就被搭建起来了,是不是很简单?

##再说说路由的事

angular2中升级了很多angular1的东西,比如内置路由可以嵌套了,模块可以懒加载了。 我们先把我们的项目简单修改下,为我们的项目增加登陆组件,在打开页面时,让用户第先登录。

不过在这之前,得给大家介绍几个知识点方便后面的理解: 1.Templates angular中的template,基本上它和html还是没什么差距,不过去掉了script标签,因为这个标签在模版中是不安全的。另外,一些语义化标签在模版中也是不推荐使用的,比如html,body,base,meta。等标签。 模版插值和angular1相同,在模版中使用双花括号{{表达式}},如:

	<h3>{{title}}<img src="{{heroImageUrl}}" style="height:30px"></h3>

2.annotation angular2 中的依赖配置现在全部依赖于注解,比如刚开始的@componnent注解,@ngModule注解,这些元信息表述了angular将会如何处理这个类,关于注解在官方文档是这样描述的: 结果演示 不过得给大家说明除了上面一系列的注解angular会自动注入外,标明@injectable()这个注解的类也会自动注入: 结果演示 可以这么说,上面的@component, @ngModule 等注解是 @injectable 的子类

OK, 现在我们在根目录再增加一个子目录,longin.component,这里放登录相关的组件,既然是组件,我们则需要下面几个文件: login.component.ts //登录组件定义 login.html //登录页面 login.service.ts //登录使用的service

老规矩,我们贴上这几个文件的代码:

//filename: login.component.tsimport { Component } from '@angular/core';
import { LoginService } from 'dist:login/login.service';@Component({templateUrl: '/src/login.component/login.html', //声明登录模版路径providers:  [ LoginService ]	//声明需要提供的类
})
export class LoginComponent {//在构造器中声明我们需要注入的类constructor(service: LoginService) {this.service = service;}public login = function(username, password) {if(this.service.login(username, password)) {alert('成功')} else {alert('登录错误')}}
}

上面的组件中,引入了LoginService, 在构造函数中,我们申明了一个service: LoginService参数,它告诉angular,在初始化的时候给我提供一个LoginService的实例,我们又把实例赋值给this.service方便以后访问

//filename: login.html<div> 注意input中的#un写法,这表示声明input元素的一个引用变量(可以认为就是个dom元素的引用变量),可以在这个模版中任意地方使用,比如提交按钮中,我们使用了 un.value 这些写法来获得他们的值, 还有登录按钮事件的写法(click),和标准写法on-click没有任何区别
<div>
<div><div><label>username:</label><input #un type="input" name="username"></div><div><label>password:</label><input #pd type="input" name="username"></div><div><input type="button" name="login" (click)="login(un.value, pd.value)" value="提交"></div>
</div>
//filename: login.service.tsimport { Injectable } from '@angular/core';//angular会对此注解提供注入,也就是如果你这个service需要其他的东西,有这个标记的话angular就会自动注入进来啦
@Injectable()
export class LoginService {public login(username:string, password:string):boolean   {console.log('login:' + username + password);if('mrzhang' === username && '123456' == password){return true;}return false;}
}

好了,新文件添加完毕,不过我们还得改造下老的文件,因为还没添加路由呢.我们改造下main.module

//filename: main.module.ts
import { NgModule }      from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { RouterModule, Routes } from '@angular/router';import { AppComponent } from 'dist:app.component';
import { LoginComponent } from 'dist:login.component/login.component';//注意这里的路由声明
const appRoutes: Routes = [{ path: 'login', component: LoginComponent },{ path: 'index', component: LoginComponent },{ path: '**', component: LoginComponent }
];//将声明的路由添加到模块中
@NgModule({imports:      [ BrowserModule , RouterModule.forRoot(appRoutes, {userHash:true})],declarations: [ AppComponent, LoginComponent],//这里我们还使用到了登录模块exports:      [ AppComponent ],bootstrap:    [ AppComponent ]
})
export class MainModule { }

上面声明的路由中包含login和index两个路径,不过处理这两个路径的组件都是LoginComponent,所以实际上没任何区别,请注意最后一个路由,它的路径是**,它的意思是匹配其他没被定义的路由。

最后修改下helloword组件的模版,在helloword模版中增加两个导航按钮

<button routerLink="index">首页</button>
<button routerLink="login">登录</button><br>
<router-outlet></router-outlet>

导航按钮中,使用了routerLink指令来用于跳转URL

ok.,修改完毕后看起来应该像下面这个样子

//filename: app.component.ts
import { Component } from '@angular/core';@Component({selector: 'hello-world',template: `<h1>Hello {{name}}</h1><br><button routerLink="index">首页</button>//routerLink 点击跳转链接<button routerLink="login">登录</button><br><router-outlet></router-outlet>`//相当于angular1 ui-router中的 <ui-view>标签
})
export class AppComponent { name = 'Angular'; }

由于新增加了一系列文件,现在目录看起来是这样的: 结果演示 好了,命令行再运行tsc --rootDir . --outDir dist编译下吧.打开浏览器看成果吧,现在可以验证登录了 结果演示

##最后模块异步加载 angular2中原生就支持异步模块加载,现在我们再增加一个用户管理模块,有两个页面,一个添加用户,一个用户列表。 首先我们在src下创建文件夹user,用来存放user模块的文件。user模块下有两个组件,一个是添加用户组件,一个用户列表组件。另外有一个user主模块文件。 所以user文件夹下应该有以下几个文件: user.module.ts user.add.component.ts user.add.html user.list.component.ts user.list.html 首先写主模块

import { NgModule }      from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { RouterModule, Routes } from '@angular/router';
import { FormsModule } from '@angular/forms';import { UserListComponent } from 'dist:user/user.list.component';
import { UserAddComponent } from 'dist:user/user.add.component';const appRoutes: Routes = [{ path: '', redirectTo: 'list', pathMatch: 'full'},{ path: 'list', component: UserListComponent },{ path: 'add', component: UserAddComponent },
];@NgModule({imports:      [ FormsModule, RouterModule.forChild(appRoutes, {useHash:true})],declarations: [ UserListComponent, UserAddComponent]
})
export class UserModule { }

在user的主模块中我们注册了三个路由,这很好理解,模块中引入了两个组件UserListComponent和UserAddComponent,它们分别处理list和add访问路径, 值得注意的是其中有一个路由的path为空。它的意思是当访问的路径为空时,重新定向到list路由。

好的,接下来我们来看user.add.component

import { Component } from '@angular/core';
import { Router} from '@angular/router';@Component({templateUrl: '/src/user/user.add.html',
})
export class UserAddComponent {public add = function(username, password) {this.router.navigate(['/user/list', this.user]);}constructor(private router:Router) {this.user = this.user || {};}
}

在用用户添加组件中,我们提供了一个add方法用于页面上的添加按钮响应事件,还提供了一个构造函数,在构造函数中我们初始化了user这个对象. 在这里还使用了路由提供的js跳转方法 navigate([uri, param]), 它的参数是个数组,第一个是要跳往的URI,第二个是跳转时传递的参数.

值得一提的是,add函数中使用的this.router大家可能发现好像没有定义,其实它是在构造函数中的参数定义的:

constructor(private router:Router) {
}
//相当于
constructor(router:Router) {this.router = router;
}
//这两个构造函数唯一的差距只是少了个private

什么是构造函数? 简单的理解就是当UserAddComponent这个组件在内存中初始化时,第一执行的就是构造函数。也就是这个函数无论如何将会是第一个调用的,

ok,在看看user.list.component.ts,其实这个组件很简单,只是简单的展示了下怎么接收参数:

import { Component } from '@angular/core';
import { Router, ActivatedRoute, Params } from '@angular/router';@Component({templateUrl: '/src/user/user.list.html',
})
export class UserListComponent {public user = '';constructor(route:ActivatedRoute) {this.user = route.snapshot.params['name'];}
}

angular2中提供了一个最简单的参数接收方式,就是使用route.snapshot.params来接收你的参数,关于更多的参数信息参照下图

结果演示

不过个人觉得最好的还是route.snapshot.params,因为它最简单. 好的,最后是两个组件分别对应的HTML

filename: user.add.html
<div><button routerLink="/user/add">添加用户</button><button routerLink="/user/list">用户列表</button></div>
<div>这里时用户添加页面</div>
<form  ><div><label>username:</label><input [(ngModel)]="user.name" type="text" name="a"></div><div><label>password:</label><input [(ngModel)]="user.pw" type="text" name="b"></div><div><label>submit:</label><input on-click='add()' type="button" name="" value="提交"></div>
</form>
<div>username:{{user.name}}, pw:{{user.pw}}</div>

这个页面中,我们使用了双向绑定,在angular2中[]这样的绑定是用于绑定输入,()这样的是用于绑定输出,所以双向绑定就是[()]再结合ngModel指令啦, 值得一提的是,这里提交按钮的事件我们并没有采用(click)='add()'而是采用的标准写法喔on-click='add()'

filename: user.list.html
<div><button routerLink="/user/add">添加用户</button><button routerLink="/user/list">用户列表</button></div>
<div>这里是用户列表页面</div>
<div>你刚刚添加了一个用户 {{user}}</div>

好了,最后一步,我们得在我们原来的主路由中添加一个路径,当登录成功后跳转到我们user模块中的路径中。

//filename: main.module.ts
import { NgModule }      from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { RouterModule, Routes } from '@angular/router';import { AppComponent } from 'dist:app.component';
import { LoginComponent } from 'dist:login.component/login.component';const appRoutes: Routes = [{ path: '', redirectTo: 'login', pathMatch: 'full'},{ path: 'login', component: LoginComponent },{ path: 'index', component: LoginComponent },{ path: 'user', loadChildren: 'dist:/user/user.module#UserModule' },
];@NgModule({imports:      [ BrowserModule ,  RouterModule.forRoot(appRoutes, {useHash:true})],declarations: [ AppComponent, LoginComponent],exports:      [ AppComponent ],bootstrap:    [ AppComponent ]
})
export class MainModule { }

在上面我们可以看到,当用户访问user路径时,load一个子模块(loadChildren),子模块的字符串采用#号分割,第一部分为模块定义的路径,第二部分为模块的定义名称。 这样,当我们访问user路径时,angular就会去加载user模块了,user模块加载成功后,由于没有指定要访问的path,所以第一个就会打开定义为''的那个path 现在我们的文件目录应该是这样: 结果演示 好的,现在可以添加用户了,试试吧 ... 点击这里下载源码learnangular

##写在最后面 前面的例子我们演示了angular2中的模块定义,组件定义,路由定义,路由懒加载,以及路由的参数传递。可以看出来的是angular现在确实是越来越复杂了,也越来越工程化了。个人觉得还是可以学习和尝试的。

转载于:https://my.oschina.net/u/3441779/blog/884385

查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. 菜鸟教程中的面试题总结

    前端开发面试题分类 编程技术本文收集总结了一些前端面试题&#xff0c;初学者阅后也要用心钻研其中的原理&#xff0c;重要知识需要系统学习、透彻学习&#xff0c;形成自己的知识链。万不可投机取巧&#xff0c;临时抱佛脚只求面试侥幸混过关是错误的&#xff01;也是不可能的…...

    2024/4/21 5:36:05
  2. 做了双眼皮肿的图片

    ...

    2024/4/26 19:38:49
  3. Java 按单词或字符颠倒逆序字符串(使用reverser()方法、stack堆栈方法)

    注意:reverse()方法快,但是不能按照单词进行颠倒逆序。import java.util.*; import java.text.Format; import static java.lang.System.*;public class t6 {public static void main(String[] args) {// TODO Auto-generated method stubScanner cin = new Scanner(System.i…...

    2024/4/19 23:08:16
  4. angular directive简介

    小白第一次学习angularjs&#xff0c;入门看了两天的菜鸟教程&#xff0c;但还是很多都不太懂&#xff0c;刚好公司代码中用了很多自定义命令&#xff0c;这几天又转战看了一下directive相关的知识&#xff0c;里面还是有很多挺复杂的东西&#xff0c;网上的东西都介绍得很乱&a…...

    2024/4/20 19:20:50
  5. 华西医院能做双眼皮修复手术吗

    ...

    2024/4/20 19:20:50
  6. 大连双眼皮手术修复

    ...

    2024/4/21 5:36:03
  7. angularjs切换路由,清除localstorage本地存储

    angularjs切换路由时&#xff0c;清除localstorage本地存储 this.$rootScope.$on($stateChangeStart, function() {localStorage.removeItem(存储名称); });...

    2024/4/21 5:36:02
  8. 双眼皮可以做几次

    ...

    2024/4/21 5:36:01
  9. angularJS路由详解

    angular路由&#xff1a; 1.ng-route 讲解 路由功能是由 routeProvider服务 和 ng-view 搭配实现&#xff0c;ng-view相当于提供了页面模板的挂载点&#xff0c;当切换URL进行跳转时&#xff0c;不同的页面模板会放在ng-view所在的位置; 然后通过 routeProvider 配置路由的映射…...

    2024/5/5 4:57:28
  10. (精华)2020年8月6日 Angular 路由的使用

    Angular 中的路由 一、 Angular 创建一个默认带路由的项目 命令创建项目 ng new ng-demo --skip-install 创建需要的组件 ng g component components/home ng g component components/news ng g component components/newscontent找到 app-routing.module.ts 配置路由 引入…...

    2024/5/5 2:33:55
  11. AngularJS 1.x版本 大致内容记录

    简单介绍 AngularJS诞生于2009年&#xff0c;后为Google所收购。 通过新的属性和表达式扩展了 HTML&#xff0c;可以构建一个单一页面应用程序&#xff0c;易学易上手。 适合表单多,模块多的项目,hybrid app,但不适合高并发的项目&#xff08;dirty checking 的机制&#xf…...

    2024/4/21 5:35:58
  12. 全切双眼皮两眼不一样

    ...

    2024/4/21 5:35:57
  13. Angular RouteReuseStrategy 路由复用策略

    Angular 路由复用策略&#xff1a; 对于单页面应用来说&#xff0c;每次路由切换&#xff0c;都会销毁前面的组件&#xff0c;路由离退时组件状态也一并被删除&#xff0c;重新加载相应路由对应的组件&#xff0c;在绝大多数的场景下&#xff0c;这样的处理都是合理的&a…...

    2024/4/21 5:35:57
  14. JSONP跨域访问数据传输

    JSON(JavaScript Object Notation)和JSONP(JSON with Padding)虽然只有一个字母的差别&#xff0c;但其实他们根本不是一回事儿 JSON是一种数据交换格式&#xff0c;而JSONP是一种依靠开发人员的聪明才智创造出的一种非官方跨域数据交互协议。我们拿最近比较火的谍战片来打个比…...

    2024/4/21 5:35:55
  15. 9 作用域(Scope)

    作用域(Scope) 是一个存储应用数据模型的对象为 表达式 提供了一个执行上下文作用域的层级结构对应于 DOM 树结构作用域可以监听 表达式 的变化并传播事件 作用域特点 作用域提供了 $watch 方法监听数据模型的变化作用域提供了 $apply 方法把不是由Angular触发的数据模型的改…...

    2024/4/21 5:35:54
  16. AngularJS_简介、特性及基本使用_及其工作原理

    转自&#xff1a;angularJS 的工作原理 转自&#xff1a;通过<script>标签引入到 HTML 中&#xff0c;那么此时 Angular 就做为一个普通的 DOM 节点等待浏览器解析 当浏览器解析到这个节点时&#xff0c;发现它是一个 js 文件&#xff0c;那么浏览器会停止解析剩余的 DOM…...

    2024/4/20 8:18:20
  17. 做完双眼皮第四天图片

    ...

    2024/4/20 5:58:50
  18. 前后端交互指南

    作为刚接触前端的不久的童鞋&#xff0c;大家都会兴奋于CSS和JS所带来漂亮界面&#xff0c;然而&#xff0c;前端工程师除了UI重构外&#xff0c;还有非常重要的职责在正确的区域渲染出服务端的数据。毕竟&#xff0c;我们要构建一个大的web应用&#xff0c;必然不是普普通通的…...

    2024/4/21 5:35:52
  19. Angular 缓存用父子路由 IOS下点击下一个选项导致的页面错乱

    现象&#xff1a; 为了子页面返回父页面不刷新&#xff0c;需要用到子路由&#xff0c;如果没有表单&#xff0c;完全是没问题的&#xff0c;当父页面有表单输入&#xff0c;子页面中也有表单输入时&#xff0c;点击键盘的下一项会把父页面显示出来&#xff0c;如下图&#xff…...

    2024/4/27 6:13:02
  20. Angular4.0路由导航简单介绍

    准备工作&#xff1a; 1.在控制台上用 ng new routerDemo --routing,新建一个具有路由功能的augular项目 2.在控制台上用 ng g component (组件名字) ,建立两个组件&#xff0c;home组件和detail组件 有兴趣的朋友可以点击获取demo展示页面以及demo的源代码地址 demo页面展…...

    2024/4/21 5:35:49

最新文章

  1. C++入门系列-类对象模型this指针

    &#x1f308;个人主页&#xff1a;羽晨同学 &#x1f4ab;个人格言:“成为自己未来的主人~” 类对象模型 如何计算类对象的大小 class A { public:void printA(){cout << _a << endl;} private:char _a; }; 算算看&#xff0c;这个类的大小是多少 我们知道…...

    2024/5/5 4:57:18
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言&#xff0c;在此感激不尽。 权重和梯度的更新公式如下&#xff1a; w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/3/20 10:50:27
  3. 基于FPGA轻松玩转AI

    启动人工智能应用从来没有像现在这样容易&#xff01;受益于像Xilinx Zynq UltraScale MPSoC 这样的FPGA&#xff0c;AI现在也可以离线使用或在边缘部署、使用.可用于开发和部署用于实时推理的机器学习应用&#xff0c;因此将AI集成到应用中变得轻而易举。图像检测或分类、模式…...

    2024/5/4 23:31:12
  4. 【Locust分布式压力测试】

    Locust分布式压力测试 https://docs.locust.io/en/stable/running-distributed.html Distributed load generation A single process running Locust can simulate a reasonably high throughput. For a simple test plan and small payloads it can make more than a thousan…...

    2024/5/4 16:36:43
  5. javaWeb网上零食销售系统

    1 绪 论 目前&#xff0c;我国的网民数量已经达到7.31亿人&#xff0c;随着互联网购物和互联网支付的普及&#xff0c;使得人类的经济活动进入了一个崭新的时代。淘宝&#xff0c;京东等网络消费平台功能的日益完善&#xff0c;使得人们足不出户就可以得到自己想要的东西。如今…...

    2024/5/3 10:08:04
  6. 【外汇早评】美通胀数据走低,美元调整

    原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...

    2024/5/4 23:54:56
  7. 【原油贵金属周评】原油多头拥挤,价格调整

    原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...

    2024/5/4 23:54:56
  8. 【外汇周评】靓丽非农不及疲软通胀影响

    原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...

    2024/5/4 23:54:56
  9. 【原油贵金属早评】库存继续增加,油价收跌

    原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...

    2024/5/4 23:55:17
  10. 【外汇早评】日本央行会议纪要不改日元强势

    原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...

    2024/5/4 23:54:56
  11. 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响

    原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...

    2024/5/4 23:55:05
  12. 【外汇早评】美欲与伊朗重谈协议

    原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...

    2024/5/4 23:54:56
  13. 【原油贵金属早评】波动率飙升,市场情绪动荡

    原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...

    2024/5/4 23:55:16
  14. 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试

    原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...

    2024/5/4 23:54:56
  15. 【原油贵金属早评】市场情绪继续恶化,黄金上破

    原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...

    2024/5/4 18:20:48
  16. 【外汇早评】美伊僵持,风险情绪继续升温

    原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...

    2024/5/4 23:54:56
  17. 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势

    原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...

    2024/5/4 23:55:17
  18. 氧生福地 玩美北湖(上)——为时光守候两千年

    原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...

    2024/5/4 23:55:06
  19. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

    原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...

    2024/5/4 23:54:56
  20. 氧生福地 玩美北湖(下)——奔跑吧骚年!

    原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...

    2024/5/4 23:55:06
  21. 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!

    原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...

    2024/5/4 2:59:34
  22. 「发现」铁皮石斛仙草之神奇功效用于医用面膜

    原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...

    2024/5/4 23:55:16
  23. 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者

    原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...

    2024/5/4 23:54:58
  24. 广州械字号面膜生产厂家OEM/ODM4项须知!

    原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...

    2024/5/4 23:55:01
  25. 械字号医用眼膜缓解用眼过度到底有无作用?

    原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...

    2024/5/4 23:54:56
  26. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  27. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; 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
  28. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  29. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  30. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  31. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  32. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  33. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  34. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  35. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  36. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  37. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  38. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  39. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  40. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  41. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  42. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  43. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  44. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  45. 如何在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