Jon*_*tes 3 convention angular
角度样式指南说明了导入行间距:
看看很多Angular项目,包括Angular本身,惯例是首先导入Angular(@angular)模块,然后导入第三方模块(例如AngularFire2),然后导入我们自己的模块(服务,组件等),例如./some-service.ts.
再次看起来导入服务,然后是模型然后导入组件是惯例.
但接口和管道等呢?导入"无名"或通配符模块的惯例是什么,例如Firebase SDK或RxJs运算符?
例如:
import { Injectable } from '@angular/core';
import { AngularFireAuth } from 'angularfire2/auth';
import {
AngularFireDatabase,
FirebaseListObservable
} from 'angularfire2/database';
import * as firebase from 'firebase/app';
import 'rxjs/add/operator/take';
...
Run Code Online (Sandbox Code Playgroud)
import { Injectable } from '@angular/core';
import {
AngularFireDatabase,
FirebaseListObservable
} from 'angularfire2/database';
import * as firebase from 'firebase/app';
import { Observable } from 'rxjs/Observable';
import { AuthService } from './auth.service';
// `GridMetadata` is an Interface
import { GridMetadata } from './grid-metadata';
...
Run Code Online (Sandbox Code Playgroud)
Jon*_*tes 10
实际上,查看Angular代码库并更好地理解指南,有一个答案.
这只是一个例子来解释它:
// Core imports
import { TestBed, async, inject } from '@angular/core/testing';
// Third party imports
import { AngularFireAuth } from 'angularfire2/auth';
import { Observable } from 'rxjs/Rx';
import 'rxjs/add/observable/of';
// Application imports
import { AuthService } from './auth.service';
import { environment } from '../environments/environment';
Run Code Online (Sandbox Code Playgroud)
将"模块"视为"来自"之后的位.模块包含要导入的符号.
import { Injectable } from '@angular/core';
import { AngularFireAuth } from 'angularfire2/auth';
import * as firebase from 'firebase/app';
import { Observable } from 'rxjs/Rx';
import 'rxjs/add/observable/of';
import 'rxjs/add/operator/catch';
Run Code Online (Sandbox Code Playgroud)
符号是什么并不重要; 重要的是导入行由模块按字母顺序排列.例如
在Angular代码库中,很明显小写字符列在大写或大写字符之后,因此:'rxjs/Rx'列在 'rxjs/add/observable/of'和'rxjs/add/operator/catch'之前
import { TestBed, async, inject } from '@angular/core/testing';
import { AngularFireAuth } from 'angularfire2/auth';
import { Observable } from 'rxjs/Rx';
import 'rxjs/add/observable/of';
Run Code Online (Sandbox Code Playgroud)
将"结构化导入符号"视为已从其父模块中提取的导出符号.在这个例子中,AngularFireAuth,Observable,TestBed,async和inject都是解构的导入符号.
同样,订单按字母顺序排列; 首先是大写,然后是大写,然后是小写.以下是Angular代码库的一个很好的例子:
import {CUSTOM_ELEMENTS_SCHEMA, Compiler, Component, Directive, Inject, Injectable, Injector, Input, NgModule, Optional, Pipe, SkipSelf, ?stringify as stringify} from '@angular/core';
Run Code Online (Sandbox Code Playgroud)
在Angular代码库中导入服务,管道,模型,指令或组件等似乎没有任何特定顺序
注意,父目录中的模块是在靠近它们被导入的模块的模块之后导入的
import { AuthService } from './auth.service';
import { environment } from '../environments/environment';
import { abc } from '.../abc';
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2934 次 |
| 最近记录: |