前言:不支持MakeDown的博客园调格式的话,真的写到快o(╥﹏╥)o了,所以老夫还是转战到CSDN吧,这边就不更新啦啦啦~

CSDN地址:https://blog.csdn.net/Night20181029 比较麻烦就是要审核,┓( ´∀` )┏

github地址:https://github.com/KKQQ9/Notes

掘金地址:https://juejin.im/user/5d2b4fcef265da1b8c19b998

项目目录结构

# 项目目录结构

## 项目目录结构图

627eabd9ad651e7c30c65c09795701d5.png

## 说明
```javascript
|-- 文件名 // 说明
|-- 首层目录
|-- e2e // 自动化集成测试目录
|-- node_modules // npm/cnpm第三方依赖包存放目录
|-- src // 应用源代码目录
|-- .editorconfig // 不同编译器统一代码风格
|-- .gitignore // git中的忽略文件列表
|-- angular.json // Angular的配置文件
|-- browserslist // 配置浏览器兼容性的文件
|-- karma.conf.js // 自动化测试框架Karma的配置文件
|-- package-lock.json // 依赖包版本锁定文件
|-- package.json // 标准的npm工具的配置文件
|-- README.md // 项目说明的MakeDown文件
|-- tsconfig.app.json // app项目的TypeScript的配置文件
|-- tsconfig.json // 整个工作区的TypeScript配置文件
|-- tsconfig.spec.json // 用于测试的TypeScript配置文件
|-- tslint.json // TypeScript的代码静态扫描配置

|-- src目录
|-- app // 工程源码目录
|-- assets // 资源目录
|-- environments // 环境配置目录
|-- favicon.ico // header里的icon
|-- index.html // 单页应用的宿主HTML
|-- main.ts // 入口ts文件
|-- polyfills.ts // 不同浏览器兼容脚本加载
|-- karma.conf.js // 自动化测试框架Karma的配置文件
|-- style.css // 整个项目的全局css
|-- test.ts // 测试入口

|-- app目录
|-- app-routing.module.ts // app路由
|-- app.component.css // app的css
|-- app.component.html // app的html
|-- app.component.spec.ts // app的测试
|-- app.component.ts // app的组件
|-- app.module.ts // app的模块
|-- environments目录
|-- environments.prod.ts // 生产环境
|-- environments.ts // 开发环境
```

## 具体内容

### .editorconfig
****
6ec57def4009aedd254a8f7ae9f73493.png

### angular.json
****
```javascript
|-- angular.json // Angular的配置文件
|--首层目录 // 说明
|--"$schema": "" // 架构关键字:指出如何形式描述XML文档的元素
|--"version": 1, // 版本
|--"newProjectRoot": "projects", // 新项目路径:多项目开发
|--"projects": {}
|--"defaultProject": "scrollable-tab" // 默认项目
|--"projects": {}
|--"scrollable-tab":{} // 项目scrollable-tab
|--"projectType": "application",
|--"schematics": {},
|--"root": "",
|--"sourceRoot": "src", // 项目根路径
|--"prefix": "app", // 安装应用的指定目录
|--"architect": {} // 架构目录
|--"build": {} // 搭建命令文件目录
|--"serve": {} // 服务命令文件目录
|--"extract-i18n": {} // 语言翻译目录
|--"test": {} // 测试目录
|--"lint": {} // 代码规范目录
|--"e2e": {} // 测试目录
|--"builder": "@angular-devkit/build-angular:" // AG开发搭建路径
|--"options": {} // 相关可选文件目录
|--"configurations": {} // 配置文件目录
```

### browserslist
****
```JavaScript
// 只支持市场占有率>0.5%的浏览器
> 0.5%
last 2 versions
Firefox ESR
not dead
// 不支持IE 9-11
not IE 9-11 # For IE 9-11 support, remove 'not'.
```
### package-lock.json&package.json
****
```JavaScript
|-- package-lock.json // 依赖包版本锁定文件
|--"name": "scrollable-tab", // 包的名称 //包锁:必须与package.json内容匹配
|--"version": "0.0.0", // 包的版本 //包锁:必须与package.json内容匹配
|--"lockfileVersion": 1, // 整数版本,1从此文档的版本号开始,在生成此版本时使用其语义package-lock.json
|--"requires": true, // 是否必需
|--"dependencies"{} // 包的依赖目录

|-- package.json // 依赖包版本文件
|--"name": "scrollable-tab", // 包的名称 //包锁:必须与package.json内容匹配
|--"version": "0.0.0", // 包的版本 //包锁:必须与package.json内容匹配
|--"scripts": {}, // 运行脚本命令目录
|--"ng": "ng", // 全局命令
|--"start": "ng serve", // 开发环境项目启动命令
|--"start.prod": "ng serve --aot", // 生产环境项目启动命令
|--"build": "ng build", // 项目打包命令
|--"test": "ng test", // 项目测试命令
|--"lint": "ng lint", // 项目静态编译检测语法命令
|--"e2e": "ng e2e", // 测试命令语句
|--"ivy": "ivy-ngcc" // 兼容性编译器命令语句
|--"private": true, // 是否必需
|--"dependencies"{} // 生产环境下包的依赖目录 8//大版本.0//小版本.0//补丁版本
|--"@angular/animations": "~8.0.0", // ~:锁定大版本与小版本,补丁版本可变动
|--"tslib": "^1.9.0", // ^:锁定大版本,小版本与补丁版本可变动
|--"protractor": "5.4.0", // :严格锁定在该版本,全部版本都不可变动
|--"devDependencies"{} // 开发环境下包的依赖目录
```

### app-routing.module.ts // app路由
****
```TypeScript
// 变量导入路径
import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
// 声明路由
const routes: Routes = [{
// 默认路由路径
path : '',
// 默认路由组件
component : HomeComponent
}];
// @angular/cli 打包的最小单位
/**
* @angular/cli 会检查所有 @NgModule 和路由配置,如果你配置了异步模块,cli 会自动把模块切分成独立的 chunk(块)
* 其它框架基本上都需要你自己去配置 webpack,自己定义切分 chunck 的规则而Angular 里面,打包和切分的动作是 @angular/cli 自动处理的,不需要你干预
* @NgModule 元数据类型图表
* */
@NgModule({
// 导入模块
imports: [RouterModule.forRoot(routes)],
// 导出模块
exports: [RouterModule]
})
// 导出控制器
export class AppRoutingModule { }
|--@NgModule元数据说明
|--declarations: [] // 属于该模块的可声明对象(组件、指令和管道)的列表
|--providers: [] // 依赖注入提供商的列表
|--imports: [] // 被导入的模块列表
|--exports: [] // 可导出的模块的可声明对象(组件、指令、管道类)列表
|--bootstrap: [AppComponent] // 自动启动的组件列表,应用根组件才有
|--entryComponents: [] // 可动态加载进视图的组件列表
```
### app.component.ts // app的组件
****
```TypeScript
import { Component } from '@angular/core';
// @Component组件是UI最小的渲染单位
/**
* Component修饰符可以让开发者通过Angular 的Component创建一个类似Java的class,并同时提供额外的元数据用于定义在运行环境中,这个component将如何运行/实例化以及被使用。
* Angular components实质是directives下的一个子集
* 不同于directive:Component始终存在一个视图模板,在这个视图模板中,每一个元素只能有一个component被实例化
* Component元数据说明图表
*/
@Component({
// 其他组件导入选择器
selector: 'app-root',
// 该组件模板路径template / templateUrl
templateUrl: './app.component.html',
// 该样式路径 styles / styleUrls
styleUrls: ['./app.component.css']
})
// 导出控制器
export class AppComponent {}
|--@Component元数据说明
|--继承于Directive装饰器
|--selector: string // CSS选择器用于在模板中标记出该指令,并触发该指令的实例化
|--inputs: string[] // 列举某个指令的一组可供数据绑定的输入属性
|--outputsstring[] // 列举一组可供事件绑定的输出属性
|--providers: Provider[] // 一组依赖注入令牌,它允许DI系统为这个指令或组件提供依赖
|--exportAs: string // 定义一个名字,用于在模板中把该指令赋值给一个变量
|--queries: {[key: string]: any;} // 配置一些查询,它们将被注入到该指令中
|--host: {[key: string]: string;} // 使用一组键值对,把类的属性映射到宿主元素的绑定(属性,属和事件)
|--jit: true // 如果为真,则该指令/组件将会被AOT编译器忽略,始终使用JIT编译
|--自身的元数据
|--changeDetection: ChangeDetectionStrategy // 用于当前组件的变更检测策略
|--viewProviders: Provider[] // 定义一组可注入对象,它们在视图的各个子节点中可用
|--moduleId: string // 包含该组件的那个模块的 ID。该组件必须能解析模板和样式表中使用的相对 URL。 SystemJS 在每个模块中都导出了 __moduleName 变量。在 CommonJS 中,它可以设置为 module.id。
|--templateUrl/template: string // Angular 组件模板文件的 URL/Angular 组件的内联模板
|--styleUrls/styles: string[] // Angular 组件样式文件的 URL/Angular 组件的内联样式
|--animations: any[] // 一个或多个动画 trigger() 调用,包含一些 state() 和 transition() 定义
|--encapsulation: ViewEncapsulation // 改写默认的插值表达式起止分界符({{ 和 }})
|--interpolation: [string, string] // 供模板和 CSS 样式使用的样式封装策略
|--entryComponents: Array<Type<any> | any[]> // 一个组件的集合,它应该和当前组件一起编译。对于这里列出的每个组件,Angular 都会创建一个 ComponentFactory 并保存进 ComponentFactoryResolver 中。
|--preserveWhitespaces: boolean // 如果为true 则保留,为 false 则从编译后的模板中移除可能多余的空白字符。 空白字符就是指那些能在 JavaScript 正则表达式中匹配 \s 的字符。默认为 false,除非通过编译器选项改写了它
```
### app.module.ts // app的模块
****
```TypeScript
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { AppRoutingModule } from './app-routing.module';
import { AppComponent } from './app.component';
@NgModule({
declarations: [
AppComponent,
],
imports: [
BrowserModule,
AppRoutingModule,
HomeModule,
ScrollableTabModule
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }
```

Angular项目目录结构的更多相关文章

  1. [转]Angular项目目录结构详解

    本文转自:https://blog.csdn.net/yuzhiqiang_1993/article/details/71191873 版权声明:本文为博主原创文章,转载请注明地址.如果文中有什么纰漏 ...

  2. Angular4.x 安装|创建项目|目录结构|创建组件

    Angular4.x 安装|创建项目|目录结构|创建组件 安装最新版本的 nodejs node.js 官网:https://nodejs.org/zh-cn/ 去官网下载 node.js,下一步下一 ...

  3. Angular-cli新建项目目录结构详解

    Angular-cli新建项目目录结构详解 在上一篇博客中我们已经通过Angular CLI命令行工具创建出来一个全新的Angular项目,要想写项目,首先我们要先搞清楚项目的目录结构是怎样的,每个文 ...

  4. Laravel项目目录结构说明

    Laravel项目目录结构说明: |- vendor 目录包含你的 Composer 依赖模块及laravel框架. |- bootstrap 目录包含几个框架启动跟自动加载配置的文件. |- app ...

  5. MVVM 模式下iOS项目目录结构详细说明

    ➠更多技术干货请戳:听云博客 我们在做项目的时候,会经常用到各种设计模式,最常见的要数 MVC (模型,视图,控制器)了.但是,今天我们要说的是另一种设计模式——MVVM. 所以 MVVM 到底是什么 ...

  6. 1-5Tomcat 目录结构 和 web项目目录结构

    对应我的安装路径: web项目目录结构

  7. Android开发学习之路--Android Studio项目目录结构简介

    既然已经搭建好环境了,那就对Android Studio中项目目录结构做个简单的了解了,这里以最简单的Hello工程为例子,新建好工程后看如下三个工程视图: 1.Android工程 manifests ...

  8. 【Android Studio安装部署系列】三、Android Studio项目目录结构

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 概述 简单介绍下Android studio新建项目的目录结构. 常用项目结构类型 在Android Studio中,提供了以下几种项目结 ...

  9. vue项目目录结构

    VUE项目目录结构 如上图所示,我们的目录结构就是这样的了. 目录/文件 说明 build 这个是我们最终发布的时候会把代码发布在这里,在开发阶段,我们基本不用管. config 配置目录,默认配置没 ...

随机推荐

  1. js封装ajax的方法

    常用的ajax请求方法封装 /** * ajax请求的封装代码 */ function ajaxPost(url, params, cb) { $.ajax({ type : 'post', url ...

  2. update当根据条件不同时 更新同一个字段的方法 或多表插入

    1.通过存储过程 循环 传值 create or replace procedure p_u isbegin for rs in (select distinct (rks) from rkbz)lo ...

  3. 洛谷P1315 [NOIP2011提高组Day2T3] 观光公交

    P1315 观光公交 题目描述 风景迷人的小城Y 市,拥有n 个美丽的景点.由于慕名而来的游客越来越多,Y 市特意安排了一辆观光公交车,为游客提供更便捷的交通服务.观光公交车在第 0 分钟出现在 1号 ...

  4. NOIP模拟赛 6.29

    2017-6-29 NOIP模拟赛 Problem 1 机器人(robot.cpp/c/pas) [题目描述] 早苗入手了最新的Gundam模型.最新款自然有着与以往不同的功能,那就是它能够自动行走, ...

  5. P1561 [USACO12JAN]爬山Mountain Climbing

    P1561 [USACO12JAN]爬山Mountain Climbing 题目描述 Farmer John has discovered that his cows produce higher q ...

  6. 光(mirror room)

    /* 光线只有遇上边界或堵塞的格子才会改变方向,所以改变方向的位置是有限的,光线的方向又最多只有四种,所以光线在循环之前改变方向的次数是O(n+m+k)级别的.我们可以模拟光线的移动.已知光线位置和光 ...

  7. Poj 1830 高斯消元

    开关问题 Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 5418 Accepted: 2022 Description 有N个相 ...

  8. DOM事件机制

    前言 本文主要介绍DOM事件级别.DOM事件模型.事件流.事件代理和Event对象常见的应用,希望对你们有些帮助和启发! 本文首发地址为GitHub博客,写文章不易,请多多支持与关注! 一.DOM事件 ...

  9. 微信小程序 —— wepy 使用 Vant Weapp

    一.下载 npm i @vant/weapp -S --production 下载完毕之后,就可以在 node_modules 文件夹里,看见下载的包了. 2.移动文件夹 把刚刚下载的包文件夹下的 l ...

  10. ubuntukylin-16.04安装

    目录 安装 虚拟机安装 系统安装 vmware tools 安装 优化 1.切换软件源 2.软件源和软件更新 3.vim插件 4.安装Sublime Text 3 5.安装福昕阅读器 6.安装Anac ...