- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在使用 angular 2 和 CLI。
由于不存在关于https://github.com/angular/angular-cli 的信息
关于 barrels 与 angular 2 CLI 工具结合的意义,我在这里问...
到目前为止,我的 Angular 2 应用程序运行正常,这意味着我在运行时没有遇到任何错误。但我担心迟早会改变,因为我可能无法正确使用 angular 2 CLI。这意味着我并不总是使用 ng generate component my-new-component
来创建组件。当我使用它时,我删除了每个组件的 create index.ts,因为我认为我不需要它。
所以我在这里有 3 个问题:
这是 system.config.ts
的一部分/***********************************************************************************************
* Everything underneath this line is managed by the CLI.
**********************************************************************************************/
const barrels: string[] = [
// Angular specific barrels.
'@angular/core',
'@angular/common',
'@angular/compiler',
'@angular/http',
'@angular/router',
'@angular/platform-browser',
'@angular/platform-browser-dynamic',
// Thirdparty barrels.
'rxjs',
// App specific barrels.
'app',
'app/shared',
'app/test/create',
'app/test/edit',
'app/administration'
/** @cli-barrel */
];
const cliSystemConfigPackages: any = {};
barrels.forEach((barrelName: string) => {
cliSystemConfigPackages[barrelName] = { main: 'index' };
});
最佳答案
- What is a barrel? A file? folder? A batch of components?
定义取自 Angular 2 Style Guide :
“考虑创建一个导入、聚合和重新导出项目的文件。我们称这种技术为桶。”
假设您有一个空文件夹 src/app/components
并在该文件夹中运行 ng generate component MyComponent
。这将创建一个包含 5 个文件的文件夹:
|-- my-component
| |-- my-component.component.css
| |-- my-component.component.html
| |-- my-component.component.spec.ts
| |-- my-component.component.ts
| |-- index.ts
index.ts
是桶,其目标是重新导出 my-component.component.ts
中的类,因此其内容为:
export * from './my-component.component';
为了使示例更加清晰,我们现在生成一个组件 MyComponent2
,它将有自己的文件夹和 index.ts
。
现在我们通过以三种不同的方式导入这两个组件来在另一个类中使用它们:
1.我们根本不用桶:
import { MyComponent } from './components/my-component/my-component.component';
import { MyComponent2 } from './components/my-component2/my-component2.component';
2.我们使用了桶,但是我们没有在system.config.ts中添加它们:
import { MyComponent } from './components/my-component/index';
import { MyComponent2 } from './components/my-component2/index';
3.我们使用桶并将它们添加到 system.config.ts 中:
import { MyComponent } from './components/my-component';
import { MyComponent2 } from './components/my-component2';
在最后一种情况下,我们甚至不必指明索引文件,只需将路径写入包含它的文件夹即可。
桶基本上是有更少和更短的进口声明。在这种情况下,我们只是每桶导出一个类,但您可以在一个桶中导出任意数量的类。
除此之外,我们还可以再导出桶。例如,我们可以在 components
文件夹中有一个 index.ts
,其中包含以下两个导出:
export * from './my-component';
export * from './my-component2';
现在我们可以像这样导入它们了:
import { MyComponent, MyComponent2 } from './components';
或者只是:
import * from './components';
2.What means: the main property with the hardcoded 'index' here? cliSystemConfigPackages[barrelName] = { main: 'index' };
正如您可能已经猜到的那样,这表明我们的桶将是名为 index
的文件。因此,对于我们在 barrels
数组中指定的每个文件夹,其中必须有一个 index.ts
文件(编译时为 index.js
).
数组名为 barrels
可能有点令人困惑,但它实际上包含包含 barrel 文件的文件夹,也许这就是为什么你在问题 1 中询问 barrel 是否是文件、一个文件夹或一批组件。在他们的风格指南中,他们将其定义为文件。
3.When the below configuration is managed by the CLI, what will happen when I do not use the CLI consequently?
这将取决于我们如何导入文件,但如果我像这样导入 MyComponent
,一个常见的错误是:
import { MyComponent } from './components';
我已经准备好了所有的桶,但是我忘了在 SystemJS system-config.ts
文件的桶数组中添加 app/components/my-component
(当使用 ng generate 时,它们会被自动添加),应用程序编译时不会出现错误,但每当它需要加载 MyComponent
时,它就会失败,我会在控制台中看到这个错误:
Failed to load resource: the server responded with a status of 404 (Not Found)
http://localhost:4200/app/components/my-component.js
那是因为在 app/components/index.ts
我放了 export * from './my-component'
因为 SystemJS 不知道这是一个桶因此没有告诉模块系统它应该在 my-component
文件夹中搜索名为 index.js
的文件,它只是去尝试获取一个名为 my-component.js
的文件。
现在我只是坚持他们的最佳实践,在每个文件夹中都有一个 index.ts
文件,并让它导出其中的所有内容,包括其子文件夹中的其他桶,并添加所有system-config.ts
中包含 index.ts
的文件夹的路径。
关于angular - angular 2 CLI 配置中 'cliSystemConfigPackages' 对象的任务是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37646509/
我在全局范围内安装了最新的 angular-cli,并且我的项目正在成功构建。 在阅读另一个问题的建议解决方案时,(https://github.com/angular/angular-cli/iss
根据official docs关于 .angular-cli.json 配置文件,仅支持 main、test、polyfills 作为 webpack 入口文件。 如何通过定义 .angular-cl
我想在s3存储桶中搜索文件名abc.zip,并且有将近60个存储桶,每个存储桶都有2到3个级别的子目录或文件夹。我尝试使用AWS CLI命令执行搜索,以下是我尝试过的命令,但即使文件存在于存储桶中,也
我正在尝试在 C++/CLI 中查找赋值运算符和复制构造函数的示例。我在 Google 上花了很多时间,但令人惊讶的是我找不到一个看起来很常见的例子。 最佳答案 .NET 语义没有复制构造函数或赋值运
我需要获取另一个窗口的句柄。 这是它的代码: private: System::Void btn_find_Click(System::Object^ sender, System::EventAr
有点好奇实际上有多少人使用 C++/CLI?那么有多少人在使用它呢?人们是否只在托管环境下寻找程序员的特定工作?围绕 c++/cli 的社区有多大?从我目前看到的情况来看,有不少语法变化,作为 C++
我正在阅读一些 C++/CLI Material ,并且遇到了文字字段的概念: literal int inchesPerFoot = 12; 这是否比 const 更可取,因为 const FIEL
通过 npm install -g angular-cli@latest 安装 Angular CLI (angular-cli@1.0.0-beta.16) 失败,出现以下错误 npm-debug.
我正在尝试在我的 Ember CLI 应用程序中配置适配器以根据环境使用不同的主机。在开发中,我希望它是默认的当前主机(让我通过 --proxy 选项自定义它,但在生产中我知道它将是 http://s
我最近开始使用 Angular/CLI 工具,我在执行文件时遇到了一个问题,那就是我运行时 ng serve 那么这个命令可以帮助我们在源文件中进行任何更改时自动重新加载站点,但在我的系统中它没有发生
是否有推荐的方法通过 c++ cli 包装 native c++ 库? 最佳答案 不确定是否一种尺寸适合所有人,但是,是的,这很大程度上是一个机械过程。您的 ref 类包装器应该声明一个私有(priv
我有一个关于为要在 C# 中使用的 native C++ 类创建 C++ CLI 包装器的问题。 这是一个示例代码: #include "stdafx.h" #pragma once using na
下面的代码打印 0 和 3。这是代码生成错误吗?我在 .NET 4.0 下使用 Visual Studio 2012 Update 3 RC 运行它 #include "stdafx.h" using
它是如何工作的?它是否有不同的部分 - 有些方法是托管的,有些是非托管的,它是否将每个方法都转换为托管的,试图保持所有东西都处于托管状态并在必须时进行互操作调用? 最佳答案 三种不同的compiler
如果我没记错的话,函数必须是 CLR 世界中类的成员,而全局函数在 C++/CLI 中是可能的。这是否意味着这些全局函数是某种隐藏的“全局”类的一部分?如果是这样,出于反射目的,人们将如何获取其类型?
如何在 Angular 中重建我的项目。我首先使用 ng build 构建它,但无法再次执行该命令,因为它不会让我更改文件夹。 我收到此错误消息: EPERM:不允许操作,lstat 是否有另一个命令
我遇到了两个相互引用的类的问题。我曾尝试使用接口(interface)来解决问题,但遇到了其他问题,例如类重新定义。我只是不确定如何正确执行此操作。 这是我正在做的事情的一个例子。注意:我已经去掉了所
我是 React.js 的新手,我正在尝试从 tutorialspoint 上的教程中学习但我遇到了错误。这是我执行 npm start 命令时控制台上的错误: C:\Users\HP\Desktop
我正在尝试将我的 angular cli 和 angular core 从 12 升级到 13,但看起来存在对等依赖性问题。有人遇到过这个问题吗? npx @angular/cli@13 update
我正在我的 ubuntu 上安装 influxdb_2.0.9,我按照这里的说明操作: https://docs.influxdata.com/influxdb/v2.0/install/?t=Lin
我是一名优秀的程序员,十分优秀!