我是Angular的新手,来自Ember社区。尝试使用新的基于Ember-CLI的Angular-CLI。
我需要知道在一个新的Angular项目中处理SASS的最佳方法。我尝试使用Ember-CLI -sass回购,看看它是否能正常运行,因为Angular-CLI的许多核心组件都是在Ember-CLI模块上运行的。
它没有工作,但比再次不确定,如果我只是配置错误的东西。
另外,在新的Angular项目中组织样式的最佳方法是什么?如果能将sass文件与组件放在同一个文件夹中就太好了。
我是Angular的新手,来自Ember社区。尝试使用新的基于Ember-CLI的Angular-CLI。
我需要知道在一个新的Angular项目中处理SASS的最佳方法。我尝试使用Ember-CLI -sass回购,看看它是否能正常运行,因为Angular-CLI的许多核心组件都是在Ember-CLI模块上运行的。
它没有工作,但比再次不确定,如果我只是配置错误的东西。
另外,在新的Angular项目中组织样式的最佳方法是什么?如果能将sass文件与组件放在同一个文件夹中就太好了。
当前回答
Angular CLI版本9(用于创建Angular 9项目)现在从schematics中获取style,而不是styleext。使用如下命令: Ng config schematics.@schematics/angular:组件。样式scsand和生成的角。Json应该是这样的 “图表”:{ “@schematics /角:组件":{ “风格”:“scss” } }
其他可能的解决方案和解释: 用angular CLI创建一个支持sass的新项目,试试这个:
ng new My_New_Project --style=scss
你也可以使用——style=sass &如果你不知道区别,阅读这篇简短的文章,如果你仍然不知道,就使用scss并继续学习。
如果你有一个angular 5的项目,使用这个命令来更新项目的配置。
ng set defaults.styleExt scss
最新版本
Angular 6使用CLI为现有项目设置新样式:
ng config schematics.@schematics/angular:component.styleext scss
或者直接导入angular.json:
"schematics": {
"@schematics/angular:component": {
"styleext": "scss"
}
}
其他回答
告诉angular-cli默认总是使用scss
为了避免每次生成项目时都传递——style scss,你可能想要全局调整angular-cli的默认配置,使用以下命令:
ng set --global defaults.styleExt scss
请注意,某些版本的angular-cli包含读取上述全局标志的错误(见链接)。如果你的版本包含这个错误,生成你的项目:
ng new some_project_name --style=scss
CSS预处理器集成 Angular CLI支持所有主要的CSS预处理程序:
要使用这些预处理器,只需将文件添加到组件的styleUrls中:
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.scss']
})
export class AppComponent {
title = 'app works!';
}
当生成一个新项目时,你也可以定义样式文件的扩展名:
ng new sassy-project --style=sass
或者在现有项目上设置默认样式:
ng config schematics.@schematics/angular:component.styleext scss
注意:@schematics/angular是angular CLI的默认原理图
样式字符串添加到@Component。styles数组必须用CSS编写,因为CLI不能对内联样式应用预处理程序。
基于angular文档 https://github.com/angular/angular-cli/wiki/stories-css-preprocessors
针对Angular 6+的更新
新项目
当用Angular CLI生成一个新项目时,将css预处理器指定为
使用SCSS语法 Ng新的ssy-project——style=scss 使用SASS语法 Ng新的时髦项目——style=sass
更新现有项目
通过运行在现有项目上设置默认样式
使用SCSS语法 Ng config schematics.@schematics/angular:组件。styleext scss 使用SASS语法 Ng config schematics.@schematics/angular:组件。styleext sass 上面的命令将更新你的工作空间文件(angular.json) “图表”:{ “@schematics /角:组件":{ :“styleext scss” } }
其中styleext可以是SCSS或sass根据选择。
对于Angular 9.0及更新版本,更新Angular中的"schematics":{}对象。像这样的Json文件:
"schematics": {
"@schematics/angular:component": {
"style": "scss"
},
// Angular 13 may contain this as well; NOT related
"@schematics/angular:application": {
...
}
},
不要使用SASS或ANGULAR的嵌入式CSS系统!!
这一点我怎么强调都不为过。当你同时使用这两种技术时,Angular的人不理解基本的级联样式表系统——就像这个Angular。json设置-编译器将所有CSS放入Javascript模块,然后将它们作为嵌入式CSS输出到HTML页面的头部,破坏和混淆级联顺序,并禁用原生CSS导入级联。
出于这个原因,我建议你从“ANGULAR.”中删除所有的样式引用。,然后手动将它们添加回“index.html”中,就像这样:
<link href="styles/styles.css" rel="stylesheet" />
现在你有了一个功能齐全的级联CSS系统,它可以在多次刷新时完全缓存在你的浏览器中,无需ecmascript的杂技,节省大量带宽,增加静态文件中的CSS整体管理,并完全控制级联顺序,而不必像Angular尝试的那样将笨拙的嵌入CSS注入到所有web页面头部。
当您了解如何在基本CSS文件中管理级联时,甚至不需要使用SASS。对于那些使用少量链接的CSS文件学习级联顺序的人来说,具有复杂CSS的大型网站可以非常简单地管理。