首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >进口报表顺序(第2角)

进口报表顺序(第2角)
EN

Stack Overflow用户
提问于 2017-05-22 12:42:28
回答 1查看 7.2K关注 0票数 7

关于进口行距,“角度样式指南”说:

  • 考虑在第三方导入和应用程序导入之间留一条空行。
  • 考虑列出由模块按字母顺序排列的导入行。
  • 考虑按字母顺序列出非结构化导入符号。
  • 为什么?空行把你的东西和他们的东西分开。
  • 为什么?字母排序使人们更容易阅读和定位符号。

考虑到许多角度项目,包括角本身,惯例是首先导入角(@angular)模块,然后是第三方模块(例如AngularFire2),然后是我们自己的模块(服务、组件等)。例如./some-service.ts

同样,它似乎是导入服务的约定,然后是模型,然后是组件。

但是接口和管道等呢?导入“无名”或通配符模块的惯例是什么,例如Firebase SDK或RxJs运算符?

例如:

导入RxJs运算符的示例服务

代码语言:javascript
复制
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';
...

代码语言:javascript
复制
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';
...
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-09-22 16:08:52

实际上,看看这个角度的代码基,随着对指南的更好的理解,就会有一个答案。

“考虑在第三方导入和应用程序导入之间留一条空行。”

这需要一个例子来解释:

代码语言:javascript
复制
// 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';

“考虑列出按模块按字母顺序排列的导入行。”

把‘模块’看作是“开始”之后的位。模块包含要导入的符号。

代码语言:javascript
复制
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';

符号是什么并不重要;只有导入行由模块按字母顺序排列才是重要的。例如:

  1. 安古拉菲2/4
  2. firebase/app
  3. rxjs/Rx
  4. rxjs/add/可观/of
  5. rxjs/add/operator/catch

在角码基中,小写字符列在大写字符或大写字符之后,因此:'rxjs/Rx‘列在’rxjs/add/可观/of‘和’rxjs/add/运算符/catch‘之前。

“考虑按字母顺序列出非结构化导入符号。”

代码语言:javascript
复制
import { TestBed, async, inject } from '@angular/core/testing';

import { AngularFireAuth } from 'angularfire2/auth';
import { Observable } from 'rxjs/Rx';
import 'rxjs/add/observable/of';

将“析构导入符号”视为已从其父模块中提取的导出符号。在本例中,可观察到的AngularFireAuth、TestBed、异步和注入都是非结构化导入符号。

同样,顺序是字母化的;大写的先大写的,然后是小写的。下面是角代码库中的一个很好的例子:

代码语言:javascript
复制
import {CUSTOM_ELEMENTS_SCHEMA, Compiler, Component, Directive, Inject, Injectable, Injector, Input, NgModule, Optional, Pipe, SkipSelf, ɵstringify as stringify} from '@angular/core';

似乎没有任何特定的顺序来导入服务、管道、模型、指令或组件等,查看角代码库

注意,父目录中的模块是在那些更接近被导入的模块之后导入的。

代码语言:javascript
复制
import { AuthService } from './auth.service';
import { environment } from '../environments/environment';
import { abc } from '.../abc';
票数 20
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44113159

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档