原理图是一个基于模板的支持复杂逻辑的代码生成器。它是一组通过生成代码或修改代码来转换软件项目的指令。原理图会打包成集合(collection)并用 npm 安装。
原理图的集合可以作为一个强大的工具,以创建、修改和维护任何软件项目,特别是当要自定义 Angular 项目以满足你自己组织的特定需求时。比如,你可以借助原理图来用预定义的模板或布局生成常用的 UI 模式或特定的组件。也可以用原理图来强制执行架构规则和约定,让你的项目保持一致性和互操作性。
原理图是 Angular 生态系统的一部分。Angular CLI 使用原理图对 Web 应用项目进行转换。你可以修改这些原理图,并定义新的原理图,比如更新代码以修复依赖中的重大变更,或者把新的配置项或框架添加到现有的项目中。
@schematics/angular
集合中的原理图是 ng generate
和 ng add
命令的默认原理图。此包里包含一些有名字的原理图,可用于配置 ng generate
子命令的选项,比如 ng generate component
和 ng generate service
。ng generate
的子命令是相应原理图的简写。可以用长格式来指定要生成的原理图(或原理图集合):
ng generate my-schematic-collection:my-schematic-name
或者
ng generate my-schematic-name --collection collection-name
与原理图相关联的 JSON 模式会告诉 Angular CLI 命令和子命令都有哪些选项以及默认值。这些默认值可以通过在命令行中为该选项提供不同的值来进行覆盖。
CLI 中那些用来生成项目及其部件的默认原理图,其 JSON 模式收集在 @schematics/angular 包中。该模式描述了 CLI 中每个可用的 ng generate
子命令选项,如 --help
输出中所示。
作为一名库开发人员,你可以创建自己的自定义原理图集合,以便把你的库与 Angular CLI 集成在一起。
ng add
在 Angular 工作区中安装你的库
ng generate
子命令如何修改项目、添加配置和脚本,以及为库中定义的工件提供脚手架
ng update
命令,如何更新库的依赖,并在发布新版本时调整其中的重大变更库中通常都会提供一个添加原理图,以便通过 ng add
把这个库添加到现有项目中。add 命令会运行包管理器来下载新的依赖,并调用一个原理图形式的安装脚本。
比如,@angular/material 原理图会要求 add
命令安装并设置 Angular Material 及其主题,并注册可通过 ng generate
创建的新启动器组件。可以把它作为自己的 "添加原理图" 的范例。
合作伙伴和第三方库也可以通过添加原理图来支持 Angular CLI。比如,@ng-bootstrap/schematics
会把 ng-bootstrap 添加到应用中,@clr/angular
会安装并设置 VMWare 的 Clarity。
"添加原理图" 还可以通过更改配置、添加额外依赖(比如腻子脚本),或者添加程序包特有的初始化代码来修改项目。比如,@angular/pwa
原理图会通过添加一个应用清单(manifest)和 Service Worker。
生成器原理图是 ng generate
的操作指令。那些已经有文档的子命令会使用默认的 Angular 生成器原理图,但你可以在子命令中指定另一个原理图来生成你的库中定义的那些工件。
比如,Angular Material 为它定义的一些 UI 组件提供了生成器原理图。下面的命令会使用其中一个原理图来渲染一个 Angular Material 的 <mat-table>
组件,它预先配置了一个用于排序和分页的数据源。
ng generate @angular/material:table <component-name>
ng update
命令可以用来更新工作区的库依赖。如果你没有提供任何选项或使用了 help 选项,该命令会检查你的工作区并建议要更新哪些库。
ng update
We analyzed your package.json, there are some packages to update:
Name Version Command to update
‐-------------------------------------------------------------------------------
@angular/cdk 7.2.2 -> 7.3.1 ng update @angular/cdk
@angular/cli 7.2.3 -> 7.3.0 ng update @angular/cli
@angular/core 7.2.2 -> 7.2.3 ng update @angular/core
@angular/material 7.2.2 -> 7.3.1 ng update @angular/material
rxjs 6.3.3 -> 6.4.0 ng update rxjs
There might be additional packages that are outdated.
Run "ng update --all" to try to update all at the same time.
如果你给这个命令指定一组要更新的库(或 --all
标志),它就会更新这些库、这些库的对等依赖,以及对等依赖的对等依赖。
如果存在不一致(比如,如果在某个简单的 semver 范围内无法匹配对等依赖),那么该命令会生成一个错误,并且不会更改工作区中的任何内容。
我们建议你不要强制更新所有的依赖项,而应该首先尝试更新特定的依赖项。
关于 ng update
命令工作原理的更多信息,请参阅“更新命令”。
如果你创建的新版本的库引入了潜在的重大更改,你可以提供一个更新原理图,让 ng update
命令能够自动解决所更新项目中的任何重大修改。
比如,假设你要更新 Angular Material 库。
ng update @angular/material
该命令会在你的工作区的 package.json
中更新 @angular/material
及其依赖项 @angular/cdk
。如果任何一个包中包含了涵盖从现有版本到新版本的迁移规则的更新原理图,那么该命令就会在你的工作区中运行这个原理图。
AngularJS 依赖注入依赖注入是 AngularJS 的重要特性之一,它简化了 Angular 解析模块/组件之间依赖的过程。什么是依赖注入wiki ...
Vue.js 使用了基于 HTML 的模版语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据。所有 Vue.js 的模板都是合法的 HTML...
v-ifv-if指令用于条件性地渲染一块内容。这块内容只会在指令的表达式返回 truthy (真值)的时候被渲染。h1 v-if="awesome"Vue i...
稳定性: 3 - 稳定V8提供了强大的调试工具,可以通过TCP protocol从外部访问。Node内置这个调试工具客户端。使用这个调试器的方法...
介绍TypeScript中有些独特的概念可以在类型层面上描述JavaScript对象的模型。 这其中尤其独特的一个例子是“声明合并”的概念。 ...
本文提供了两个实例,其中,示例一讲解JS根据key值获取URL中的参数值及把URL的参数转换成json对象;示例二讲解js获取url传递参数...
Submit form 属性 Submit 对象定义和用法form 属性可返回对包含该确认按钮的表单的引用。若成功,该属性返回一个表单对象。语法s...
Script src 属性 Script 对象实例获取外部脚本的 URL:var x = document.getElementById("myScript").srcx 输出结果为://www..c...