这是一个在Angular中,利用Angular CLI來建立最基礎的應用,在此詳細的介紹一下目錄結構。
Angular基礎目錄結構
这是一个在Angular中,利用Angular CLI來建立最基礎的應用,在此詳細的介紹一下目錄結構。
Angular-demo
# 必要的话,安装 Angular CLI npm install -g @angular/cli # 利用Angular CLI來建立最基礎的應用 ng new angular-demo # 編譯此應用,並運行此應用 ng serve
现在你可以在浏览器中打开( http://localhost:4200 )开始体验。
Directory Layout
接者,我們了解一下項目目錄的結構︰
. ├── /dist/ # 编译生成的目录 ├── /e2e/ # 端到端测试,用来做自动测试的 ├── /node_modules/ # 第三方依赖包存放目录 ├── /src/ # 应用源代码目錄 │ ├── /app/ # 本應用的源码 │ │ ├── /app.component.html # 根组件的模板 │ │ ├── /app.component.scss # 根组件的样式 │ │ ├── /app.component.spec.ts # 根组件的单元测试 │ │ ├── /app.component.ts # 根组件 │ │ └── /app.modules.ts # 根模块 │ ├── /assets/ # 静态文件,编译时会被复制到 /dist 目录 │ ├── /environments/ # 包含环境配置文件 │ │ ├── /environment.prod.ts # 生产环境配置文件 │ │ └── /environment.ts # 开发环境配置文件 │ ├── /favicon.ico # Angular icon │ ├── /index.html # HTML页面,程序启动就是访问这个页面 │ ├── /main.ts # 应用的入口文件,Angular通过这个文件来启动项目 │ ├── /polyfills.ts # 主要是用来导入一些必要库,为了让Angular能正常运行在老版本下 │ ├── /styles.scss # 应用的全局样式 │ └── /test.ts # 应用的单元测试入口 ├── .editorconfig # 编辑器的配置 ├── .gitignore # Git 忽略文件 ├── angular.json # Angular命令行工具的配置文件 ├── browserslist # 一個配置文件,用來在不同的前端工具之間共享目標瀏覽器 ├── karma.conf.js # karma是单元测试的执行器,此檔案是karma的配置文件 ├── package-lock.json # ├── package.json # npm工具的配置文件 ├── README.md # 說明文档 ├── tsconfig.app.json # TypeScript 编译器的應用配置 ├── tsconfig.json # TypeScript 编译器的配置 ├── tsconfig.spec.json # TypeScript 编译器的单元测试的配置 └── tslint.json # TSLint 和 Codelyzer 的配置
Src
src 應用程式源代碼的目錄。
/app/ | 本應用的源码,我们要写的代码都在这个目录。 | |
---|---|---|
app.component.html | 根組件的模板。 | |
app.component.scss | 根组件的样式。 | |
app.component.spec.ts | 根组件的单元测试。 | |
app.component.ts | 根组件。 | |
app.modules.ts | 根模块。 | |
/assets/ | 静态文件,编译时会被复制到 /dist 目录,即资源目录,存储静态资源的,比如图片。 | |
/environments/ | 包含环境配置文件。Angular是支持多环境开发的,我们可以在不同的环境下(开发环境,测试环境,生产环境)共用一套代码,主要用来配置环境的。 | |
environment.prod.ts | 生产环境配置文件。 | |
environment.ts | 开发环境配置文件。 | |
favicon.ico | 此應用的favicon。 | |
index.html | HTML页面,程序启动就是访问这个页面。 | |
main.ts | 应用的入口文件,Angular通过这个文件来启动项目。默认配置无需更改,只有在特殊情况下,比如热部署等情况下需要更改。 | |
polyfills.ts | 主要是用来导入一些必要库,为了让Angular能正常运行在老版本下。这个文件包含了Angular项目运行和加载前所需要的core-js中的相关es模块,默认即可。 | |
styles.scss | 应用的全局样式。区别在于你创建Angular项目时采用何种样式文件来作为Angular项目的全局样式文件。默认在Angular.json 中"build"变量下的"options"变量的"styles"中导入,否则无法生效,并可在"schematics"中修改到底选择何种文件来作为全局样式。 | |
test.ts | 应用的单元测试入口。 |
EditConfig
.editorconfig 編輯器的配置。
Git
.gitignore Git的忽略文件的設置,建議要好好的設定,以免將敏感文檔給不小心上傳到GitHub了。
Angular CLI
angular.json Angular命令行工具的配置文件。后期可能会去修改,引一些其他的第三方的包,比如jquery等。根目录中最为重要的无非是上文所讲到的Angular.json以及项目的版本管理文件package.json了。Angular.json,Angular5以前为Angular-cli.json,其作用显而易见,是Angular项目中的配置文件,包含一系列的项目、限制、环境配置等,具体作用在上文已得到体现,是与ng build、serve、lint等指令相配合的命令。除去这些环境配置,还有一些比如在build中大小警告或报错的预算配置,默认为2mb警告,10mb抛出错误,如在使用ng build --prod指令打包时提示内存警告或者报错,则可以酌情修改该变量配置。
npm
package.json 这是一个标准的npm工具的配置文件,这个文件里面列出了该应用程序所使用的第三方依赖包。实际上我们在新建项目的时候,等了半天就是在下载第三方依赖包。下载完成后会放在node_modules这个目录中,后期我们可能会修改这个文件。package.json文件时整个项目中的管理文件,其中包括项目名称、版本、许可、脚本、依赖包、开发依赖包等内容。可以看到除去name、version外,默认情况下常见的有scripts,这里是脚本命令配置,node.js的运行指令npm调用的就是这里的命令集,如果在开发工具中例如idea,还可以快速启动。
通俗来讲当我们使用npm工具输入命令npm run xxx 这个xxx就是在scripts中定义的脚本名称,然后这个xxx中的内容就是我们运行的内容,如上图“start”脚本对应的是 Angular/cli指令 “ng serve --port 4201”,那么它就等同于我们在控制台中输入 这个Angular/cli指令,区别只是使用的方式不同,并且可以从开发工具中快速启动。那么我们就可以编辑各种不同的指令,来通过npm 工具来快速运行复杂的Angular/cli指令以及应对不同的情况,同时可以使用开发工具的快速启动按钮,提高效率以及代码git化后其他开发人员的使用效率。
“dependencies”,这里是依赖包,其作用就是版本管理,我们导入不同的依赖库以及它的版本,然后测试稳定度,是否可运行,还有想要更新重大版本,比如Angular的更新以及其第三方ui框架等等的更新时,都需要操作package.json。这里的内容,也是npm install时所安装的node_modules的指示文件,npm工具会按照依赖内容来从npm仓库中下载这些依赖模块。Angular7的更新可以使用ng update来进行更新检测,但是多数情况下,各个包的依赖关系并不明确,Angular/cli工具自带的更新机制也并不是特别好用,在Angular5版本以及以前的版本中升级会有巨大的问题,因为Angular5和Angular6的更新中,rxjs换了包名和引用路径,但是提供了兼容包,Angular也进行大幅度的修改,所以更新指令并不适用,如果已有项目从Angular5升级到6,需要考虑已有项目的引用包,手动去操作package.json中的内容,在处理很多的问题后才能升级成功,Angular6版本之后的升级则是容易很多,所以还是比较推荐了解自己项目引用了什么框架、第三方包之后,才能对这些依赖进行好的整理和升级。
“devDependencies”,是Angular代码开发中需要的内容,常见的有Angular/cli工具、typescript、tslint等等开发依赖包,一般也无需修改,只有在Angular版本升级的时候可能进行修改。
UnitTest
karma.conf.js karma是单元测试的执行器,karma.conf.js是karma的配置文件。
TypeScript Complier
tsconfig.app.json TypeScript 编译器的應用配置。默认情况下继承自tsconfig.json,只在其基础上增加了Angular的一些指令。大多数情况下无需对其进行修改,只有在某些特定情况下,比如Angular5以前的模块懒加载,需要将模块的路径包含在“include”变量下才可找到模块。
tsconfig.json TypeScript 编译器的配置,添加第三方依赖的时候会修改这个文件。
tsconfig.spec.json 编译器的单元测试的配置。
tslint.json TSLint 和 Codelyzer 的配置,主要是tslint的配置文件,用来定义TypeScript代码质量检查的规则。tslint.json为ts代码约束文件,作用类似于定义代码的规范,比如常见的变量未定义而调用,方法未结束,代码语法错误等等,这些都会引起idea等代码编辑器报错,还有些警告,一般情况下默认即可。但是当我们想要修改时,也可以找到具体的根目录tslint.json文件,修改一些不符合自己使用习惯的报错,比如很常见的无空格报错。
Category
Angular
Keywords
Modern Web / Angular
License
angular-demo 使用 MIT 许可证发布。 详情请进入 LICENSE
查看。
Skyfu160