声明

本系列文章内容梳理自以下来源:

  • Angular 官方中文版教程

官方的教程,其实已经很详细且易懂,这里再次梳理的目的在于复习和巩固相关知识点,刚开始接触学习 Angular 的还是建议以官网为主。

因为这系列文章,更多的会带有我个人的一些理解和解读,由于目前我也才刚开始接触 Angular 不久,在该阶段的一些理解并不一定是正确的,担心会有所误导,所以还是以官网为主。

正文- Angular-CLI 命令

Angular 的项目其实相比老旧的前端项目模式或者是 Vue 的项目来说,都会比较重一点,因为它包括了: 模块 @NgModel, 组件 @Component, 指令 @Directive 等各种各样的东西,而每一种类型的 ts 文件,都需要有一些元数据的配置项。

这就导致了,如果是手工创建 ts 文件,需要自己编写很多重复代码,因此,可以借助 Angular-CLI 命令来创建这些文件,自动生成所需的这些重复代码。

而且,不仅在创建文件方面,在对项目的编译、打包等各种操作中也需要借助 Angular-CLI。

所以,日常开发中,不管是借助 WebStrom 的图形操作,还是直接自己使用命令方式,都需要跟 Angular-CLI 打交道,了解一些基本的配置和命令也是有好处的。

安装的方式就不讲了,要么直接使用 WebStrom 内置的,要么借助 npm 下载一个,要么通过 WebStrom 创建的 Angular 项目的 package.json 中就会自动配置一个 cli 依赖库。

概览

命令格式:ng commandNameOrAlias arg [optionalArg] [options]

也就是 ng 之后带相应命令或命令的别名,接着带命令所需的参数,如果有多个参数就紧接着,最后是一些选项配置,选项的格式都加 -- 前缀,如 --spec=false

示例:ng g component --flat --spec=false

g 是 generate 命令的别名,component 是 g 命令的参数,表示要创建组件,--flat 和 --spec 是选项配置,具体意思后面说。

Angular-CLI 大体上两种类型的命令,一是创建或修改文件,二是类似运行某个脚本来编译、构建项目。

比如创建项目生成初始骨架的命令、创建组件、指令、服务这类文件命令;

或者是执行 build 编译命令,或者是 serve 构建命令等等。

以下是概览,粗体字是我较为常接触的:

命令 别名 说明
generate g 创建相应的文件,如组件、指令、管道、服务、模块、路由、实体类等
build b 编译项目,并输出最后的文件到指定目录,可以配置很多参数来达到各种效果,比如实时更新等目的
serve s 编译项目,并让它运行起来,且默认支持实时更新修改
new n 创建新项目,生成项目初始骨架,默认包括根模块、根视图,还有基本的各种配置文件
e2e e 编译并运行项目,跑起来后,运行 e2e 测试
lint l 对项目进行 lint 检查
test t 运行单元测试
help 查看命令的帮助信息
... ... 还有一些没用过,也不大清楚的命令,后续再补充

常见命令

其实,这么多命令中,我最常使用的,就只有 ng g 命令,也就是 generate 命令,用来生成各种类型的文件代码,比如生成组件、生成服务等。

因为项目开发过程中,就是在编写组件,编写服务,而这些文件又都需要一些元数据配置,自己创建 ts 文件再去写那么代码有些繁琐,借助命令比较方便。

还有,运行项目时,会使用 build 或 serve 命令。

所以,下面就只介绍这三个命令,其他命令,等到后续有接触,深入了解后再补充。

ng g component

ng g component xxx 是用来创建组件的,直接使用该命令,会默认在当前目录下创建一个 xxx 文件夹,并在内部创建以下几个文件:

  • xxx.component.css
  • xxx.component.html
  • xxx.component.spec.ts
  • xxx.component.ts

每个文件内都会自动生成一些所需的代码,另外,还会在当前目录所属的模块文件中,将该 xxxComponent 组件声明在相应的 declarations 列表中。

以上是命令的默认行为,如果要改变这个默认行为,有两种方式,一是使用命令时携带一些选项配置,二是直接修改 angular.json 配置文件来替换掉默认行为。

先介绍第一种方式,使用命令时,加上一些选项配置:

选项配置 说明
--export=true|false 生成的组件在对应的模块文件中,是否自动在 exports 列表中声明该组件好对外公开,默认值 false。
--flat=true|false 当为 true 时,生成的组件不自动创建 xxx 的文件夹,直接在当前目录下创建那几份文件,默认值 false。
--spec=true|false 当为 false 时,不自动创建 .spec.ts 文件,默认值为 true。
--skipTests=true|false 当为 true 时,不自动创建 .spec.ts 文件,默认值 false。该选项配置是新版才有,旧版就使用 --spec 配置。
--styleext=css|scss|sass|less|styl 设置组件是否使用预处理器,旧版接口
--style=css|scss|sass|less|styl 设置组件是否使用预处理器,新版接口
--entryComponent=true|false 当为 true 时,生成的组件自动在其对应的模块内的 entryComponents 列表中声明,默认 false。
--inlineStyle=true|false 当为 true 时,组件使用内联的 style,不创建对应的 css 文件,默认 false。
--inlineTemplate=true|false 当为 true 时,组件使用内联的模板,不创建对应的 html 文件,默认 false。
--lintFix=true|false 当为 true 时,组件创建后,自己进行 lintFix 操作,默认 false。
--module=module 指定组件归属的模块,默认当前目录所属的模块。
--prefix=prefix 指定组件 selector 取值的前缀,默认 app。
--project=project 指定组件归属的 project。
--selector=selector 指定组件的 selector 名。
--skipImport=true|false 当为 true,生成的组件不在对应的模块中声明任何信息,默认 false。
--changeDetection=Default|OnPush 设置改变组件的检测策略,默认 Default。

以上,是使用 ng g component 命令时,可以携带的一些选项配置,来修改默认的行为,其中,如果选项配置为 true,那么 value 值可以省略,如 --flat=true 可以简写成 --flat

比如:ng g component xxx --flat --inlineStyle --inlineTemplate --spec=false --export

另外,其实这些选项配置中,除了前面几项可能比较常用外,其他的我基本都还没怎么接触过。

下面,讲讲第二种方式,修改 angular.json 配置文件来修改默认行为:

也就是在 projects 里选择当前项目,然后再其 schematics 下进行配置,至于 @schematics/angular:component 这串怎么来的,可以去开头第一行所指的那份 schema.json 文件中查找。

其实,这份 schema.json 文件,就是 Angular-CLI 的默认配置,当忘记都有哪些命令或参数,除了可以借助 help 命令或到官网查阅外,也可以到这份文件中查阅。

除了组件外,也还有指令、模块等命令的默认配置,可以看下其中一项默认配置:

{"@schematics/angular:component": {"type": "object","properties": {"changeDetection": {"description": "Specifies the change detection strategy.","enum": ["Default","OnPush"],"type": "string","default": "Default","alias": "c"},"entryComponent": {"type": "boolean","default": false,"description": "Specifies if the component is an entry component of declaring module."},"export": {"type": "boolean","default": false,"description": "Specifies if declaring module exports the component."},"flat": {"type": "boolean","description": "Flag to indicate if a directory is created.","default": false},"inlineStyle": {"description": "Specifies if the style will be in the ts file.","type": "boolean","default": false,"alias": "s"},"inlineTemplate": {"description": "Specifies if the template will be in the ts file.","type": "boolean","default": false,"alias": "t"},"module": {"type": "string","description": "Allows specification of the declaring module.","alias": "m"},"prefix": {"type": "string","format": "html-selector","description": "The prefix to apply to generated selectors.","alias": "p"},"selector": {"type": "string","format": "html-selector","description": "The selector to use for the component."},"skipImport": {"type": "boolean","description": "Flag to skip the module import.","default": false},"spec": {"type": "boolean","description": "Specifies if a spec file is generated.","default": true},"styleext": {"description": "The file extension to be used for style files.","type": "string","default": "css"},"viewEncapsulation": {"description": "Specifies the view encapsulation strategy.","enum": ["Emulated","Native","None","ShadowDom"],"type": "string","alias": "v"}}}
}

可以看到,在官网中看到的关于 component 的各个选项配置的信息,其实在这份文件中也全列出来了,每一项配置的值类型,描述,默认值都清清楚楚在文件中了。

ng g directive

这个是创建指令的命令,组件其实是指令的一种,所以,上面介绍的关于组件命令中的各种选项配置,在指令这里也基本都可以使用,这里不列举了,清楚相关默认文件来源后,不懂的,去翻阅下就可以了。

因为指令并没有对应的 Template 模板和 CSS 样式文件,所以,默认生成的文件中,只有 xxx.directive.ts 和 xxx.spec.ts 两份文件。

ng g pipe

这个是创建管道的命令,它支持的选项配置跟指令的命令基本一样。

所以,同样的,它生成的也只有两份文件,ts 文件和测试文件。

ng g service

这个是创建服务类的命令,支持的选项配置参考上面几种命令。

默认生成的有两份文件,ts 和 测试文件。

ng g class/interface/enum

创建实体类,接口,或枚举的命令,因为这些类型的文件,默认需要的代码模板并不多,即使不用命令创建,手动创建也行。

ng g module

创建一个模块,这个命令有几个比较常用的选项配置:

  • --flat=true|false

当为 true 时,在当前目录下创建指定的 xxx.module.ts 和 xxx-routing.module.ts 文件,默认 false,会自动创建 xxx 的文件夹。

  • --routing=true|false

当为 true 时,会自动创建对应的 routing 路由模块,默认 false。

  • --routingScope=Child|Root

创建路由模块时,配置项是 Child 还是 Root,默认 Child。

以上,是 ng generate 命令的常见用法,它还可以用来创建其他东西,但我常用的就这几种,而且,很多时候,都不是使用默认的行为,因此常常需要配置选项配置一起使用。

另外,为什么非得用 Angular-CLI 命令来创建文件,用 WebStrom 自己创建个 ts 文件不行吗?

借助 CLI 工具其实就是为了高效开发,减少繁琐的处理,比如,创建一个 xxx.component.ts 文件:

import { Component, OnInit } from '@angular/core';@Component({selector: 'app-cc',template: `<p>cc works!</p>`,styles: []
})
export class CcComponent implements OnInit {constructor() { }ngOnInit() {}}

上面就是执行了 ng g component cc --inlineStyle --inlineTemplate 命令后创建的 cc.component.ts 文件的内容,如果不借助 CLI 工具,那么这些代码就需要自己手动去输入,即使复制黏贴也比较繁琐。

ng serve

使用该命令,可以编译我们的项目,并在本地某个端口上运行该项目,默认还可以做到实时更新修改,不用重新编译,是本地调试项目常用的命令。

目前对该命令的使用,只接触到默认配置,还不清楚一些选项配置的适用场景,后续有了解再补充。

ng build

该命令用来将 Angular 项目编译、打包输出到指定目录下,最终输出的文件就是些 HTML,CSS,JavaScript 这些浏览器能够识别、运行的文件。

有时候,前端和后端的工作都由同一个人开发,此时在本地调试时,前端就没必要造假数据,可以直接将 Angular 项目编译输出到后端项目的容器中,直接在本地调试后端接口。

那么,这种时候就不能用 ng serve 命令了,只能使用 ng build 命令,但该命令,默认只是编译项目,那么岂不是每次代码发生修改,都得重新跑一次 ng build 命令?当项目有些复杂时,岂不是需要浪费很多时间?

这种时候,就该来了解了解这个命令的一些选项配置了,经过配置,它也可以达到类似 ng serve 命令一样自动检测文件变更并增量更新部署,提高开发效率。

选项配置 说明
--watch=true|false 当为 true 时,会自动检测文件变更,并同步更新,默认 false

还有其他配置项,没使用过,就用过这个,因为我们是直接前端后端一起做,后端用了 spring boot,所以 Angular 项目使用 ng build 命令编译输出到后端项目的容器中,后端跑起来,就可以直接在本地调试了。


大家好,我是 dasu,欢迎关注我的公众号(dasuAndroidTv),公众号中有我的联系方式,欢迎有事没事来唠嗑一下,如果你觉得本篇内容有帮助到你,可以转载但记得要关注,要标明原文哦,谢谢支持~

转载于:https://www.cnblogs.com/dasusu/p/10521728.html

Angular(02)-- Angular-CLI命令相关推荐

  1. Angular应用ng serve命令行的学习笔记

    在Angular项目下执行命令行ng serve --open: The ng serve command builds the app, starts the development server, ...

  2. 如何在Windows上安装Angular:Angular CLI,Node.js和构建工具指南

    In this tutorial, we'll learn how to install Angular CLI in Windows and use it to create an Angular ...

  3. Angular: 升级Angular 14到Angular 15

    N个月前写过一篇Angular: 升级Angular 13到Angular 14 的文章.现在Angular已经发布到了V16(非GA版本),那是时候把Angular项目升级到Angular 15了. ...

  4. 第 4 章 使用 CLI 命令管理 LVM

    第 4 章 使用 CLI 命令管理 LVM 本章总结了可使用 LVM 命令行界面(CLI)创建和维护逻辑卷的独立管理任务. 注意 如果要为集群环境生成或者修改 LVM 卷,则必须确定正在运行 clvm ...

  5. 基于Golang的CLI 命令行程序开发

    基于Golang的CLI 命令行程序开发 [阅读时间:约15分钟] 一. CLI 命令行程序概述 二. 系统环境&项目介绍&开发准备 1.系统环境 2.项目介绍 3.开发准备 三.具体 ...

  6. add-apt-repository:找不到命令_手把手教你使用nodejs编写cli(命令行)

    手把手教你使用nodejs编写cli(命令行) 前端日常开发中,会遇见各种各样的cli,比如一行命令帮你打包的webpack,一行命令帮你生成vue项目模板的vue-cli,还有创建react项目的c ...

  7. python控制命令行光标位置_python实现cli命令行的进度条光标滚动显示效果

    python实现cli命令行的进度条光标滚动显示效果, python如何实现cli命令行的光标滚动效果?我们在制作cli工具的时候,会遇到如果比较长时间执行的任务,可能需要类似progress进度的功 ...

  8. Redis-学习笔记02【Redis命令操作】

    Java后端 学习路线 笔记汇总表[黑马程序员] Redis-学习笔记01[Redis环境搭建] Redis-学习笔记02[Redis命令操作] Redis-学习笔记03[Redis持久化] Redi ...

  9. 函数分类,HIVE CLI命令,简单函数,聚合函数,集合函数,特殊函数(窗口函数,分析函数,混合函数,UDTF),常用函数Demo

    1.1. 函数分类 1.2. HIVE CLI命令 显示当前会话有多少函数可用  SHOW FUNCTIONS; 显示函数的描述信息  DESC FUNCTION concat; 显示函数的扩展描述信 ...

  10. 为你的AliOS Things应用增加自定义cli命令

    在日常嵌入式开发中,我们经常会用串口命令来使设备进入某种特定的状态,或执行某个特定的操作.如系统自检,模拟运行,或者进入手动模式进行设备点动.linux下有强大的shell工具,可以让用户和片上系统进 ...

最新文章

  1. java怎么获取服务器文件夹,java获取远程服务器的文件夹
  2. 软工网络15个人阅读作业2——提问题
  3. 职教云自动签到网页版开源源码
  4. python编程教学视频-【科研资源03】最全Python编程全套系统视频学习教程
  5. OpenCV-Python实战(23)——将OpenCV计算机视觉项目部署到云端
  6. MAC 下开发 不区分大小写问题及解决
  7. 【跨年烟花代码】用C语言来写“烟花”,快拿去给心中的那个人看
  8. 代理记账公司能够为企业客户提供哪些服务
  9. 啥是各向同性、各向异性GNN:
  10. 【Python】列表生成式应用的八重境界
  11. python中正则表达式的简单应用_Python正则表达式详细应用
  12. 一篇文章搞定Shiro权限管理框架
  13. [敛火成丹]Win11Dev-25236.1010专业工作站版-微调
  14. 科研写作——常见句式(一)
  15. 智慧语录(人生哲学)
  16. 5、♥☆基于STM32的智能手环√★☆
  17. 外汇平台正规排行榜 Flyerinternational稳居前三
  18. 用pyhton爬虫技术爬取所有股票的每周价格
  19. Topic7——279. 完全平方数
  20. 陶瓷电容,钽电容,铝电解电容对比

热门文章

  1. JFreeChart自定义拆线图
  2. jQuery事件相关方法
  3. 电子相册系统(九)分页
  4. 【渝粤教育】国家开放大学2018年秋季 0300-22T图形创意 参考试题
  5. 【渝粤教育】国家开放大学2019年春季 1013金融统计分析 参考试题
  6. 【渝粤教育】国家开放大学2019年春季 0390-22T古代诗歌散文专题 参考试题
  7. 导出函数__declspec(dllexport)
  8. HTTP-Runoob:教程
  9. C++,std::shared_future的使用
  10. php object