Angular2、4入门基础知识(小的概念)
1. 使用引用符来格式化HTML代码。
- @Component({
- selector: 'app-heroes',
- templateUrl: './heroes.component.html',
- styleUrls: ['./heroes.component.css']
- })
2. 数据双向绑定方式。
在使用表单输入绑定数据之前,我们需要引入表单模块FormsModule
包至我们的Angular模块中。引入包的方法是,直接添加需要的包至NgModel
的imports
数组中。
- import { BrowserModule } from '@angular/platform-browser';
- import { NgModule } from '@angular/core';
- import { FormsModule } from '@angular/forms';
- import { AppComponent } from './app.component';
- import { HeroesComponent } from './heroes/heroes.component';
- @NgModule({
- declarations: [
- AppComponent,
- HeroesComponent
- ],
- imports: [
- BrowserModule,
- FormsModule
- ],
- providers: [],
- bootstrap: [AppComponent]
- })
- export class AppModule { }
表单中写法:
- <input [(ngModel)]="hero.name" placeholder="name">
3.使用自定义对象数组
- const HEROES: Hero[] = [
- {id: 11, name: 'Mr.Nice'},
- {id: 12, name: 'Narco'},
- {id: 13, name: 'Bombasto'},
- {id: 14, name: 'Celeritas'},
- {id: 15, name: 'Magneta'},
- {id: 16, name: 'RubberMan'},
- {id: 17, name: 'Dynama'},
- {id: 18, name: 'Dr IQ'},
- {id: 19, name: 'Magma'},
- {id: 20, name: 'Tornado'}
- ];
4.使用列表li
- <li *ngFor="let hero of heroes">
- <span class="badge">{{hero.id}}</span>
- {{hero.name}}
- </li>
5.为组件添加样式
- @Component({
- selector: 'my-app',
- template: ``,
- styles: [`
- .selected {
- background-color: #CFD8DC;
- color:white;
- }
- .heroes {
- margin: 0 0 2em 0;
- list-style-type: none;
- padding: 0;
- width: 15em;
- }
- `]
- }]
6.定义变量
与Java/C++定义变量的类型写在前面不同的时,TypeScript的定义方式为
变量名:类型
- selectedHero:Hero;
7.定义方法
必须定义返回类型
- onSelect(hero: Hero): void {
- this.selectedHero = hero;
- }
8.使用结构指令
直接使用某个可能为空的变量,会导致异常抛出,需要使用if
结构进行判断。angular中有一种名为结构指令(structural directives)
可以改变DOM的结构。这类的指令有ngIf
和ngFor
。用法如下:
- <div *ngIf="selectedHero">
- <h2>{{selectedHero.name}} details!</h2>
- <div><label>id:</label>{{selectedHero.id}}</div>
- <div><label>name:</label>{{selectedHero.name}}</div>
- </div>
9.改变组件的CSS样式类
[class.className]=true/false
key为样式的类名,value为true或者false.应用:已选择的项添加已选择
样式。未选择的项消除已选择
样式
- <li *ngFor="let hero of heroes" (click)="onSelect(hero)" [class.selected]="hero === selectedHero">
- <span class="badge">{{hero.id}}</span>
- {{hero.name}}
- </li>
10.引入类
- import { Hero } from './hero';
11.使用服务Service
使用@Injectable
修饰类
- import {Injectable} from '@angular/core';
- import {HEROES} from "./mock-heroes";
- import {Hero} from "./hero";
- @Injectable()
- export class HeroServie {
- getHeroes(): Hero[] {
- return HEROES
- }
- }
如何在组件中使用这个服务?传统的方式会使用new
关键字去实例化。但官方不建议这么做,有以下几点理由:
当服务类的构造方法改变时,我们必须要修改每一处使用到它的代码
如果需要缓存对象的状态,每次都new是做不到的。
在代码中写死new类来实例化,将无法替换其实现。比如,测试环境和生产环境的服务可能不同,当要切换不同版本是比较麻烦的。
官方推荐使用注入
来使用服务。为组件添加providers
元数据。
- providers: [HeroServie],
组件的构造方法改为:
- constructor(private heroService: HeroServie) {
- this.heroes = heroService.getHeroes();
- }
12.使用ngOnInit
生命周期回调接口
angular提供了一系统的接口监控组件的生命周期各个环节。
- import { OnInit } from '@angular/core';
- export class AppComponent implements OnInit {
- ngOnInit(): void {
- // somthing to be done
- }
- }
13. 使用Promise
解决回调的问题
服务有时候是耗时的操作,如果直接调用可能会阻塞UI,使用Promise可以解决这个问题。
- @Injectable()
- export class HeroServie {
- getHeroes(): Promise<Hero[]> {
- return Promise.resolve(HEROES);
- }
- }
- private getHeroes() : void {
- this.heroService.getHeroes().then(heroes => this.heroes = heroes);
- }
14.使用路由Routing
路由配置文件写法
- import {Routes, RouterModule} from "@angular/router";
- import {ModuleWithProviders} from "@angular/core";
- import {HeroesComponent} from "./heroes.component";
- const appRoutes: Routes = [{
- path: 'heroes',
- component: HeroesComponent
- }];
- export const routing: ModuleWithProviders = RouterModule.forRoot(appRoutes);
模板中使用
- <a routerLink="/heroes">Heroes</a>
- <router-outlet></router-outlet>
routerLink指令告知路由器点击跳转至哪个地址,<router-outlet></router-outlet>
表示路由出口,即要把组件(routerLink指向的组件)
加载在哪个位置.
15.使用templateUrl代替template
- @Component({
- selector: 'my-dashboard',
- templateUrl: 'app/dashboard.component.html'
- })
16.按下标显示数组中的指定记录
- this.heroService.getHeroes().then(heroes=>this.heroes = heroes.slice(1, 5));
17.参数化路由
路由配置:id为参数
- {
- path: 'detail/:id',
- component: HeroDetailComponent
- }
获取参数:
- export class HeroDetailComponent implements OnInit {
- ngOnInit(): void {
- this.route.params.forEach((params: Params)=> {
- let id = +params['id']; //加号的作用是将字符串参数转化为数字
- this.heroService.getHero(id).then(hero => this.hero = hero);
- });
- }
- constructor(private heroService: HeroServie,
- private route: ActivatedRoute) {
- }
- @Input()
- hero: Hero;
- }
18.代码中转向
- gotoDetail(hero: Hero): void {
- let link = ['/detail', hero.id];
- this.router.navigator(link);
- }
19. 使用内在Web API模拟HTTP服务
内存数据模拟数据库数据。
- InMemoryWebApiModule.forRoot(InMemoryDataService),
service实现
- import {InMemoryDbService} from "angular2-in-memory-web-api";
- export class InMemoryDataService implements InMemoryDbService {
- createDb(): {} {
- let heroes = [
- {id: 11, name: 'Mr. Nice'},
- {id: 12, name: 'Narco'},
- {id: 13, name: 'Bombasto'},
- {id: 14, name: 'Celeritas'},
- {id: 15, name: 'Magneta'},
- {id: 16, name: 'RubberMan'},
- {id: 17, name: 'Dynama'},
- {id: 18, name: 'Dr IQ'},
- {id: 19, name: 'Magma'},
- {id: 20, name: 'Tornado'}
- ]
- return heroes;
- }
- }
HTTP请求示例
- getHeroes(): Promise<Hero[]> {
- return this.http
- .get(this.heroesUrl)
- .toPromise()
- .then(response => response.json().data as Hero[]) // 转换类型
- .catch(this.handleError)
- }
20.使用HTTP Promise
Angular的http.get
返回的是Observable
,Observables是一个强大的管理异步数据流的方式。
当我们使用toPromise
方法将Observables转化为Promise后,操作就像操作普通的Promise一样。使用toPromise方法需要引入外部方法
- import 'rxjs/add/operator/toPromise';
21.HTTP请求异常处理
- .catch(this.handleError);
- private handleError(error: any): Promise<any> {
- console.error('An error occurred', error); // for demo purposes only
- return Promise.reject(error.message || error);
- }
angular体系
angular体系主要包括:模块Module,组件Component,模板Template,元数据Metadata,数据绑定Data Banding,服务Service,指令,依赖注入
模块是ES6标准之一,每个模块目的性非常单一。在Angular中,一般模块输出的都是一个组件类,需要配合
import
来加载模块。有一类模块是Angular本身定义好的,即库模块,当加载
angular2/core
模块时,可以调用一个核心类库。库模块入要有angular/core(核心类库)
,angular/http(网络请求相关)
,angular2/router(路由相关)
,angular2/common(表单、指令等)
- 总结 - Angular应用由模块组成
- - 模块输出可以是:类、函数、值或其他模块
组件是为了控制显示把HTML模板及样式。一般,每个组件都配有一个类,用来定义业务能力。通过类的属性和方法与视图进行交互。
模板是为了告知Angular如何去渲染组件。Angular模板有其特殊的语法。
元数据是告知Angular如何处理一个类。一个类如果没有元数据的声明,就是一个无法单独运行的普通的类。可以使用
注解
来定义类的元数据。如@Component
,注解中可以带上一些参数:- - selector - CSS选择器
- - templateUrl - 的模板地址
- - directives - 指令或组件数组
- - providers - 注册的Service服务数组,从而在组件类构造函数中能够正确的实例化这些服务
除了
@Component
外,还有Injectable
,@Input
,@Output
,@RouterConfig
元数据。数据绑定是一种协调组件与模板之间的通信机制,通过HTML元素来描述采用哪种数据绑定形式。数据绑定包括属性绑定
[hero]
、事件绑定(click)
、双向绑定[(ngModel)]="hero.name"
指令。一个指令是由元数据和一个类组成,使用元数据注解
@Directive
修饰就是一个指令。指令和组件的功能类似,他们的区别是指令侧重对HTML元素功能的扩展。而组件是一个具体一的业务。指令分为结构性指令如*ngFor
,*ngIf
等和属性指令,如[(ngModel)]
服务。模块中需要使用到的值、函数都可以是服务Service。服务通常 是一个目的性非常明确的类。如日志Service,数据Service,应用程序配置信息,工资计算器等 。
组件是是服务的最大消费者,组件都是靠服务来处理大部分事务,组件不会直接从服务器获取数据、不验证用户输入,都是委派验服务来完成。一般我们遵循的原则是:把应用程序逻辑转化成服务 ,并通过依赖注入提供组件来消费服务。
依赖注入。依赖注入是一种对类实例的新方法。我们可以在引导应用程序启动时实例一个服务如
- bootstrap(AppComponent, [BackendService, HeroService, Logger]);
或者在组件级别里注册服务
- @Component({
- providers: [HeroService]
- })
- export class HeroesComponent { ... }
Angular2入门导向笔记
1. 使用引用符来格式化HTML代码。
@Component({
selector: 'my-app',
template: `<h1>{{title}}</h1>
<h2>{{hero.name}} details!</h2>
<div><label>id:</label>{{hero.id}}</div>
<div><label>name:</label>{{hero.name}}</div>`
})
- 1
- 2
- 3
- 4
- 5
- 6
- 7
2. 数据双向绑定方式
在使用表单输入绑定数据之前,我们需要引入表单模块FormsModule
包至我们的Angular模块中。引入包的方法是,直接添加需要的包至NgModel
的imports
数组中。
import {NgModule} from '@angular/core';
import {BrowserModule} from '@angular/platform-browser';
import {AppComponent} from './app.component';
import {FormsModule} from "@angular/forms";
@NgModule({
imports: [
BrowserModule,
FormsModule
],
declarations: [AppComponent],
bootstrap: [AppComponent]
})
export class AppModule {
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
表单中写法:
<input [(ngModel)]="hero.name" placeholder="name">
- 1
3.使用自定义对象数组
const HEROES: Hero[] = [
{id: 11, name: 'Mr.Nice'},
{id: 12, name: 'Narco'},
{id: 13, name: 'Bombasto'},
{id: 14, name: 'Celeritas'},
{id: 15, name: 'Magneta'},
{id: 16, name: 'RubberMan'},
{id: 17, name: 'Dynama'},
{id: 18, name: 'Dr IQ'},
{id: 19, name: 'Magma'},
{id: 20, name: 'Tornado'}
];
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
4.使用列表li
<li *ngFor="let hero of heroes">
<span class="badge">{{hero.id}}</span>
{{hero.name}}
</li>
- 1
- 2
- 3
- 4
5.为组件添加样式
@Component({
selector: 'my-app',
template: ``,
styles: [`
.selected {
background-color: #CFD8DC;
color:white;
}
.heroes {
margin: 0 0 2em 0;
list-style-type: none;
padding: 0;
width: 15em;
}
`]
}]
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
6.定义变量
与Java/C++定义变量的类型写在前面不同的时,TypeScript的定义方式为
变量名:类型
selectedHero:Hero;
- 1
7.定义方法
必须定义返回类型
onSelect(hero: Hero): void {
this.selectedHero = hero;
}
- 1
- 2
- 3
8.使用结构指令
直接使用某个可能为空的变量,会导致异常抛出,需要使用if
结构进行判断。angular中有一种名为结构指令(structural directives)
可以改变DOM的结构。这类的指令有ngIf
和ngFor
。用法如下:
<div *ngIf="selectedHero">
<h2>{{selectedHero.name}} details!</h2>
<div><label>id:</label>{{selectedHero.id}}</div>
<div><label>name:</label>{{selectedHero.name}}</div>
</div>
- 1
- 2
- 3
- 4
- 5
9.改变组件的CSS样式类
[class.className]=true/false
key为样式的类名,value为true或者false.应用:已选择的项添加已选择
样式。未选择的项消除已选择
样式。
<li *ngFor="let hero of heroes" (click)="onSelect(hero)" [class.selected]="hero === selectedHero">
<span class="badge">{{hero.id}}</span>
{{hero.name}}
</li>
- 1
- 2
- 3
- 4
10.引入类
import { Hero } from './hero';
- 1
11.使用服务Service
使用@Injectable
修饰类
import {Injectable} from '@angular/core';
import {HEROES} from "./mock-heroes";
import {Hero} from "./hero";
@Injectable()
export class HeroServie {
getHeroes(): Hero[] {
return HEROES
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
如何在组件中使用这个服务?传统的方式会使用new
关键字去实例化。但官方不建议这么做,有以下几点理由:
当服务类的构造方法改变时,我们必须要修改每一处使用到它的代码
如果需要缓存对象的状态,每次都new是做不到的。
在代码中写死new类来实例化,将无法替换其实现。比如,测试环境和生产环境的服务可能不同,当要切换不同版本是比较麻烦的。
官方推荐使用注入
来使用服务。为组件添加providers
元数据。
providers: [HeroServie],
- 1
组件的构造方法改为:
constructor(private heroService: HeroServie) {
this.heroes = heroService.getHeroes();
}
- 1
- 2
- 3
12.使用ngOnInit
生命周期回调接口
angular提供了一系统的接口监控组件的生命周期各个环节。
import { OnInit } from '@angular/core';
export class AppComponent implements OnInit {
ngOnInit(): void {
// somthing to be done
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
13. 使用Promise
解决回调的问题
服务有时候是耗时的操作,如果直接调用可能会阻塞UI,使用Promise可以解决这个问题。
@Injectable()
export class HeroServie {
getHeroes(): Promise<Hero[]> {
return Promise.resolve(HEROES);
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
private getHeroes() : void {
this.heroService.getHeroes().then(heroes => this.heroes = heroes);
}
- 1
- 2
- 3
14.使用路由Routing
路由配置文件写法
import {Routes, RouterModule} from "@angular/router";
import {ModuleWithProviders} from "@angular/core";
import {HeroesComponent} from "./heroes.component";
const appRoutes: Routes = [{
path: 'heroes',
component: HeroesComponent
}];
export const routing: ModuleWithProviders = RouterModule.forRoot(appRoutes);
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
模板中使用
<a routerLink="/heroes">Heroes</a>
<router-outlet></router-outlet>
- 1
- 2
routerLink指令告知路由器点击跳转至哪个地址,<router-outlet></router-outlet>
表示路由出口,即要把组件(routerLink指向的组件)
加载在哪个位置.
15.使用templateUrl代替template
@Component({
selector: 'my-dashboard',
templateUrl: 'app/dashboard.component.html'
})
- 1
- 2
- 3
- 4
16.按下标显示数组中的指定记录
this.heroService.getHeroes().then(heroes=>this.heroes = heroes.slice(1, 5));
- 1
17.参数化路由
路由配置:id为参数
{
path: 'detail/:id',
component: HeroDetailComponent
}
- 1
- 2
- 3
- 4
获取参数:
export class HeroDetailComponent implements OnInit {
ngOnInit(): void {
this.route.params.forEach((params: Params)=> {
let id = +params['id']; //加号的作用是将字符串参数转化为数字
this.heroService.getHero(id).then(hero => this.hero = hero);
});
}
constructor(private heroService: HeroServie,
private route: ActivatedRoute) {
}
@Input()
hero: Hero;
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
18.代码中转向
gotoDetail(hero: Hero): void {
let link = ['/detail', hero.id];
this.router.navigator(link);
}
- 1
- 2
- 3
- 4
19. 使用内在Web API模拟HTTP服务
内存数据模拟数据库数据。
InMemoryWebApiModule.forRoot(InMemoryDataService),
- 1
service实现
import {InMemoryDbService} from "angular2-in-memory-web-api";
export class InMemoryDataService implements InMemoryDbService {
createDb(): {} {
let heroes = [
{id: 11, name: 'Mr. Nice'},
{id: 12, name: 'Narco'},
{id: 13, name: 'Bombasto'},
{id: 14, name: 'Celeritas'},
{id: 15, name: 'Magneta'},
{id: 16, name: 'RubberMan'},
{id: 17, name: 'Dynama'},
{id: 18, name: 'Dr IQ'},
{id: 19, name: 'Magma'},
{id: 20, name: 'Tornado'}
]
return heroes;
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
HTTP请求示例
getHeroes(): Promise<Hero[]> {
return this.http
.get(this.heroesUrl)
.toPromise()
.then(response => response.json().data as Hero[]) // 转换类型
.catch(this.handleError)
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
20.使用HTTP Promise
Angular的http.get
返回的是Observable
,Observables是一个强大的管理异步数据流的方式。
当我们使用toPromise
方法将Observables转化为Promise后,操作就像操作普通的Promise一样。使用toPromise方法需要引入外部方法。
import 'rxjs/add/operator/toPromise';
- 1
- 2
21.HTTP请求异常处理
.catch(this.handleError);
- 1
- 2
private handleError(error: any): Promise<any> {
console.error('An error occurred', error); // for demo purposes only
return Promise.reject(error.message || error);
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
angular体系
angular体系主要包括:模块Module,组件Component,模板Template,元数据Metadata,数据绑定Data Banding,服务Service,指令,依赖注入
模块是ES6标准之一,每个模块目的性非常单一。在Angular中,一般模块输出的都是一个组件类,需要配合
import
来加载模块。有一类模块是Angular本身定义好的,即库模块,当加载
angular2/core
模块时,可以调用一个核心类库。库模块入要有angular/core(核心类库)
,angular/http(网络请求相关)
,angular2/router(路由相关)
,angular2/common(表单、指令等)
- Angular应用由模块组成
- 模块输出可以是:类、函数、值或其他模块
- 1
- 2
- 3
组件是为了控制显示把HTML模板及样式。一般,每个组件都配有一个类,用来定义业务能力。通过类的属性和方法与视图进行交互。
模板是为了告知Angular如何去渲染组件。Angular模板有其特殊的语法。
元数据是告知Angular如何处理一个类。一个类如果没有元数据的声明,就是一个无法单独运行的普通的类。可以使用
注解
来定义类的元数据。如@Component
,注解中可以带上一些参数:
- selector - CSS选择器
- templateUrl - 的模板地址
- directives - 指令或组件数组
- providers - 注册的Service服务数组,从而在组件类构造函数中能够正确的实例化这些服务
- 1
- 2
- 3
- 4
- 5
- 6
- 7
除了@Component
外,还有Injectable
,@Input
,@Output
,@RouterConfig
元数据。
数据绑定是一种协调组件与模板之间的通信机制,通过HTML元素来描述采用哪种数据绑定形式。数据绑定包括属性绑定
[hero]
、事件绑定(click)
、双向绑定[(ngModel)]="hero.name"
指令。一个指令是由元数据和一个类组成,使用元数据注解
@Directive
修饰就是一个指令。指令和组件的功能类似,他们的区别是指令侧重对HTML元素功能的扩展。而组件是一个具体一的业务。指令分为结构性指令如*ngFor
,*ngIf
等和属性指令,如[(ngModel)]
服务。模块中需要使用到的值、函数都可以是服务Service。服务通常 是一个目的性非常明确的类。如日志Service,数据Service,应用程序配置信息,工资计算器等 。
组件是是服务的最大消费者,组件都是靠服务来处理大部分事务,组件不会直接从服务器获取数据、不验证用户输入,都是委派验服务来完成。一般我们遵循的原则是:把应用程序逻辑转化成服务 ,并通过依赖注入提供组件来消费服务。
依赖注入。依赖注入是一种对类实例的新方法。我们可以在引导应用程序启动时实例一个服务如
bootstrap(AppComponent, [BackendService, HeroService, Logger]);
- 1
或者在组件级别里注册服务
@Component({
providers: [HeroService]
})
export class HeroesComponent { ... }
- 1
- 2
- 3
- 4
Angular2、4入门基础知识(小的概念)的更多相关文章
- java基础知识小总结【转】
java基础知识小总结 在一个独立的原始程序里,只能有一个 public 类,却可以有许多 non-public 类.此外,若是在一个 Java 程序中没有一个类是 public,那么该 Java 程 ...
- Linux入门基础知识
注:内容系兄弟连Linux教程(百度传课:史上最牛的Linux视频教程)的学习笔记. Linux入门基础知识 1. Unix和Linux发展历史 二者就像父子关系,当然Unix是老爹.1965年,MI ...
- React Native 入门基础知识总结
中秋在家闲得无事,想着做点啥,后来想想,为啥不学学 react native.在学习 React Native 时, 需要对前端(HTML,CSS,JavaScript)知识有所了解.对于JS,可以看 ...
- Greenplum入门——基础知识、安装、常用函数
Greenplum入门——基础知识.安装.常用函数 2017年10月08日 22:03:09 在咖啡里溺水的鱼 阅读数:8709 版权声明:本文为博主原创,允许非商业性质转载但请注明原作者和出处 ...
- java基础知识小小结
java基础知识小总结 在一个独立的原始程序里,只能有一个 public 类,却可以有许多 non-public 类.此外,若是在一个 Java 程序中没有一个类是 public,那么该 Java 程 ...
- USB入门基础知识(转)
源:USB入门基础知识 相关名词: 主机(Host) 设备(Device) 接口(Interface) 管道(Pipe) 管道是主机与设备端点数据传输的连接通道,代表了主机的数据缓冲区与设备端点之间交 ...
- 1)Linux程序设计入门--基础知识
)Linux程序设计入门--基础知识 Linux下C语言编程基础知识 前言: 这篇文章介绍在LINUX下进行C语言编程所需要的基础知识.在这篇文章当中,我们将 会学到以下内容: 源程序编译 Makef ...
- JavaSE 基础知识(常识概念 + 基础语法)问答总结/面试题 —— 讲给应届生的 Java 开源知识项目
写在最前面 这个项目是从20年末就立好的 flag,经过几年的学习,回过头再去看很多知识点又有新的理解.所以趁着找实习的准备,结合以前的学习储备,创建一个主要针对应届生和初学者的 Java 开源知识项 ...
- React入门---基础知识-大纲-1
-----------------在慕课网学习react入门笔记-------------- ---------博主边学边记录,手把手进行学习及记录---------- --------------- ...
- PHP基础入门(二)---入门基础知识必备
前言 在上一章中,我们初步了解了PHP的网页基础和PHP的入门基础,今天继续给大家分享更多有关PHP的知识. 理论知识看起来可能比较枯燥一些,但是我们的实践(敲代码)毕竟离不开它. 只有理论与实践相结 ...
随机推荐
- JavaScript Succinctly 读后笔记
1.JavaScript does not have block scope 2.Scope is determined during function definintion, not invo ...
- Django 解答 01 (pycharm创建项目)
pycharm创建项目 1. 2. 3.Tools --->Deployment--->Options 这一条由always 改为 On explicit save action(Ctrl ...
- 【笔记】Pandas分类数据详解
[笔记]Pandas分类数据详解 Pandas Pandas分类数据详解|轻松玩转Pandas(5) 参考:Pandas分类数据详解|轻松玩转Pandas(5)
- Codeforces-C-Nice Garland(枚举+暴力)
You have a garland consisting of nn lamps. Each lamp is colored red, green or blue. The color of the ...
- php内置web server
今天刚开始正式学习PHP(之前有一点了解),推荐学习的网站是w3school.一开始不知道tomcat服务器不支持PHP脚本,直接把.php文件放到tomcat里面去运行,结果嵌入的php代码段没有什 ...
- centos7博客的基础搭建(LNMP)
linux [root@zbb wordpress]# cat /etc/redhat-release CentOS Linux release 7.4.1708 (Core) nginx echo ...
- sql CET实现循环
表结构 CREATE TABLE city( id INT IDENTITY(1,1) PRIMARY KEY, NAME NVARCHAR(100), ParentID INT , Parents ...
- centos7安装与卸载软件
安装 yum install 服务名 查看服务名 rpm -qa |grep -i aerospike 或者 yum list installed | grep aerospike 卸载 yum re ...
- python练习六十四:EXCEL文件处理
假设要读取number.txt文件中内容,code.txt文件内容如下 [ [1,2,3], [4,5,6], [7,8,9] ] 数据写入表格,如图 写文件(如果有文件,那直接调用就行,我这里自己先 ...
- shell脚本学习(1)
格式: #!/bin/bash :标志一个shell脚本 #Filename:first_shell.sh :文件名称 #a ...