热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

如何在Angular中使用带SASS的Bootstrap4

如何解决《如何在Angular中使用带SASS的Bootstrap4》经验,为你挑选了3个好方法。

我想在使用Angular CLI创建的Angular(4+)项目中使用Bootstrap 4和SASS.

特别是我需要:

使用SASS而不是CSS作为全局样式和组件样式

编译Bootstrap SASS源以及我的自定义*.scss样式

确保我的自定义样式覆盖Bootstrap源,因此我可以在需要时覆盖Bootstrap源,而无需编辑Bootstrap源本身(可以轻松升级Bootstrap源版本)

每当我的任何*.scss文件(包括组件和全局样式)更改为ng serve脚本时,添加监视和自动重新编译

Francesco Bo.. 115

为了使用SASS设置Angular + Bootstrap 4,我们只需要配置Angular CLI并安装Bootstrap 4 npm软件包.无需安装任何SASS编译器,因为它已经包含在内.

编辑:此答案已更新,以使用较新版本的Angular CLI(使用版本6.1.3测试).我在本答案的底部留下了旧Angular CLI的说明,但我强烈建议您更新Angular CLI版本.


使用NEW ANGULAR CLI(版本6或更高版本)的说明

1)配置Angular CLI以使用SASS而不是CSS

- 关于现有项目:

编辑angular.json文件并将"styleext": "scss"键值添加到projects.PROJECT_NAME.schematics.@schematics/angular:component对象.

它应该是这样的:

{
  // ...
  "projects": {
    "PROJECT_NAME": {
      // ....
      "schematics": {
        "@schematics/angular:component": {
          "styleext": "scss"
        }
      },
  // ...
}

- 创建新项目时

只需使用:

ng new my-project --style=scss

2)将现有的组件样式从CSS更改为SASS(如果有)

要完成此操作,您只需要将样式文件重命名为.css,.scss并相应地更改@Component({ ... })配置:

styleUrls: ['./my-component.scss']

通过这种方式,angular-cli会在执行命令时自动观察并重新编译这些文件ng serve.

3)添加Bootstrap 4

通过npm安装Bootstrap 4:

npm install bootstrap --save

现在将Bootstrap添加到数组angular-cli.json内的配置中styles(在任何其他自定义css/scss文件之前,以便让它们覆盖引导规则:

"styles": [
  "node_modules/bootstrap/scss/bootstrap.scss",
  /* ... */
],

这样Bootstrap 4源代码将保持干净,每当发布新版本时,它都将非常容易升级.

4)添加自定义(全局)SASS文件

任何其他应该全局影响项目的SASS样式(与单个Component样式不同)可以添加app/assets/scssstyles数组中,然后在数组中引用angular-cli.json.

我的建议是引用一个main.scss包含所有自定义SASS样式的文件:例如,一个_variables.scss用于自定义变量,一个_global.scss用于全局规则的文件等.

所以在你的作品中angular-cli.json你只会引用一个自定义main.scss文件:

"styles": [
  "node_modules/bootstrap/scss/bootstrap.scss",
  "src/assets/scss/main.scss"
],

其中包含所有自定义全局*SASS代码:

// main.scss 
@import "variables";
@import "global";
// import more custom files...

*请注意,您不得在此处包含*.scss单个组件的样式文件.

5)包括Bootstrap Javascript和jQuery的替代品.

有些项目允许您在没有jQuery的情况下使用Bootstrap .

两个例子:

NGX自举

NG-引导

这里讨论了这两个项目之间的区别:"ng-bootstrap"和"ngx-bootstrap"有什么区别?


使用OLD ANGULAR CLI的说明

警告:我不再保留这部分答案了,所以我建议您继续阅读它,然后按照上面的说明更新Angular CLI版本.

1)配置Angular CLI以使用SASS而不是CSS

跑:

ng set defaults.styleExt scss

这会影响您的.angular-cli.json配置文件(示例).

注意:如果您从头开始,可以使用Angular CLI创建一个新项目: ng new my-project --style=scss 这相当于正常创建一个新项目,然后运行上面提到的命令.

2)将现有的组件样式从CSS更改为SASS(如果有)

要完成此操作,您只需要将样式文件重命名为.css,.scss并相应地更改@Component({ ... })配置:

styleUrls: ['./my-component.scss']

(例子).

通过这种方式,angular-cli会在执行命令时自动观察并重新编译这些文件ng serve.

3)添加Bootstrap 4

通过npm安装Bootstrap 4:

npm install bootstrap --save

现在将Bootstrap添加到数组.angular-cli.json内的配置中styles(在任何其他自定义css/scss文件之前,以便让它们覆盖引导规则:

"styles": [
  "../node_modules/bootstrap/scss/bootstrap.scss",
  /* ... */
],

(例子).

这样Bootstrap 4源代码将保持干净,每当发布新版本时,它都将非常容易升级.

4)添加自定义(全局)SASS文件

任何其他应该全局影响项目的SASS样式(与单个Component样式不同)可以添加app/assets/scssstyles数组中,然后在数组中引用.angular-cli.json.

我的建议是引用一个main.scss包含所有自定义SASS样式的文件:例如,一个_variables.scss用于自定义变量,一个_global.scss用于全局规则的文件等.( 示例).

所以在你的作品中.angular-cli.json你只会引用一个自定义main.scss文件:

"styles": [
  "../node_modules/bootstrap/scss/bootstrap.scss",
  "assets/scss/main.scss"
],

其中包含所有自定义全局*SASS代码:

// main.scss 
@import "variables";
@import "global";
// import more custom files...

*请注意,您不得在此处包含*.scss单个组件的样式文件.

5)包括Bootstrap Javascript和jQuery的替代品.

有些项目允许您在没有jQuery的情况下使用Bootstrap .

两个例子:

NGX自举

NG-引导

这里讨论了这两个项目之间的区别:"ng-bootstrap"和"ngx-bootstrap"有什么区别?



1> Francesco Bo..:

为了使用SASS设置Angular + Bootstrap 4,我们只需要配置Angular CLI并安装Bootstrap 4 npm软件包.无需安装任何SASS编译器,因为它已经包含在内.

编辑:此答案已更新,以使用较新版本的Angular CLI(使用版本6.1.3测试).我在本答案的底部留下了旧Angular CLI的说明,但我强烈建议您更新Angular CLI版本.


使用NEW ANGULAR CLI(版本6或更高版本)的说明

1)配置Angular CLI以使用SASS而不是CSS

- 关于现有项目:

编辑angular.json文件并将"styleext": "scss"键值添加到projects.PROJECT_NAME.schematics.@schematics/angular:component对象.

它应该是这样的:

{
  // ...
  "projects": {
    "PROJECT_NAME": {
      // ....
      "schematics": {
        "@schematics/angular:component": {
          "styleext": "scss"
        }
      },
  // ...
}

- 创建新项目时

只需使用:

ng new my-project --style=scss

2)将现有的组件样式从CSS更改为SASS(如果有)

要完成此操作,您只需要将样式文件重命名为.css,.scss并相应地更改@Component({ ... })配置:

styleUrls: ['./my-component.scss']

通过这种方式,angular-cli会在执行命令时自动观察并重新编译这些文件ng serve.

3)添加Bootstrap 4

通过npm安装Bootstrap 4:

npm install bootstrap --save

现在将Bootstrap添加到数组angular-cli.json内的配置中styles(在任何其他自定义css/scss文件之前,以便让它们覆盖引导规则:

"styles": [
  "node_modules/bootstrap/scss/bootstrap.scss",
  /* ... */
],

这样Bootstrap 4源代码将保持干净,每当发布新版本时,它都将非常容易升级.

4)添加自定义(全局)SASS文件

任何其他应该全局影响项目的SASS样式(与单个Component样式不同)可以添加app/assets/scssstyles数组中,然后在数组中引用angular-cli.json.

我的建议是引用一个main.scss包含所有自定义SASS样式的文件:例如,一个_variables.scss用于自定义变量,一个_global.scss用于全局规则的文件等.

所以在你的作品中angular-cli.json你只会引用一个自定义main.scss文件:

"styles": [
  "node_modules/bootstrap/scss/bootstrap.scss",
  "src/assets/scss/main.scss"
],

其中包含所有自定义全局*SASS代码:

// main.scss 
@import "variables";
@import "global";
// import more custom files...

*请注意,您不得在此处包含*.scss单个组件的样式文件.

5)包括Bootstrap Javascript和jQuery的替代品.

有些项目允许您在没有jQuery的情况下使用Bootstrap .

两个例子:

NGX自举

NG-引导

这里讨论了这两个项目之间的区别:"ng-bootstrap"和"ngx-bootstrap"有什么区别?


使用OLD ANGULAR CLI的说明

警告:我不再保留这部分答案了,所以我建议您继续阅读它,然后按照上面的说明更新Angular CLI版本.

1)配置Angular CLI以使用SASS而不是CSS

跑:

ng set defaults.styleExt scss

这会影响您的.angular-cli.json配置文件(示例).

注意:如果您从头开始,可以使用Angular CLI创建一个新项目: ng new my-project --style=scss 这相当于正常创建一个新项目,然后运行上面提到的命令.

2)将现有的组件样式从CSS更改为SASS(如果有)

要完成此操作,您只需要将样式文件重命名为.css,.scss并相应地更改@Component({ ... })配置:

styleUrls: ['./my-component.scss']

(例子).

通过这种方式,angular-cli会在执行命令时自动观察并重新编译这些文件ng serve.

3)添加Bootstrap 4

通过npm安装Bootstrap 4:

npm install bootstrap --save

现在将Bootstrap添加到数组.angular-cli.json内的配置中styles(在任何其他自定义css/scss文件之前,以便让它们覆盖引导规则:

"styles": [
  "../node_modules/bootstrap/scss/bootstrap.scss",
  /* ... */
],

(例子).

这样Bootstrap 4源代码将保持干净,每当发布新版本时,它都将非常容易升级.

4)添加自定义(全局)SASS文件

任何其他应该全局影响项目的SASS样式(与单个Component样式不同)可以添加app/assets/scssstyles数组中,然后在数组中引用.angular-cli.json.

我的建议是引用一个main.scss包含所有自定义SASS样式的文件:例如,一个_variables.scss用于自定义变量,一个_global.scss用于全局规则的文件等.( 示例).

所以在你的作品中.angular-cli.json你只会引用一个自定义main.scss文件:

"styles": [
  "../node_modules/bootstrap/scss/bootstrap.scss",
  "assets/scss/main.scss"
],

其中包含所有自定义全局*SASS代码:

// main.scss 
@import "variables";
@import "global";
// import more custom files...

*请注意,您不得在此处包含*.scss单个组件的样式文件.

5)包括Bootstrap Javascript和jQuery的替代品.

有些项目允许您在没有jQuery的情况下使用Bootstrap .

两个例子:

NGX自举

NG-引导

这里讨论了这两个项目之间的区别:"ng-bootstrap"和"ngx-bootstrap"有什么区别?



2> Leo..:

除了@ ShinDarth的答案之外,你可能想要一个更小的解决方案,只导入你需要的Bootstrap模块而不是全部.

所以你会替换:

"styles": [
  "../node_modules/bootstrap/scss/bootstrap.scss",
  "assets/scss/main.scss"
],

附:

"styles": [
  "assets/scss/main.scss"
],

然后你main.scss会看起来像:

// import only the Bootstrap modules you need, e.g.
@import "~bootstrap/scss/functions";
@import "~bootstrap/scss/variables";
@import "~bootstrap/scss/mixins";
@import "~bootstrap/scss/grid";
@import "~bootstrap/scss/navbar";
@import "~bootstrap/scss/forms";
// import your own custom files, e.g.
@import "variables";
@import "global";



3> Whisher..:

从版本6应该是

"styles": [
   "node_modules/bootstrap/scss/bootstrap.scss",
   "src/styles.scss",
   "src/assets/scss/main.scss"
]

如果您有自定义主题作品

只在styles.scss中添加lib

@import "./assets/scss/mytheme";
@import "~bootstrap/scss/bootstrap";


推荐阅读
  • loader资源模块加载器webpack资源模块加载webpack内部(内部loader)默认只会处理javascript文件,也就是说它会把打包过程中所有遇到的 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • linux 字符串数组初始化,C++字符数组初始化方法的分析
    发现了一个字符数组初始化的误区,而这个往往能导致比较严重的性能问题,分析介绍如下:往往我们在初始化一个字符数组,大概有如下几 ... [详细]
  • 本文介绍了闭包的定义和运转机制,重点解释了闭包如何能够接触外部函数的作用域中的变量。通过词法作用域的查找规则,闭包可以访问外部函数的作用域。同时还提到了闭包的作用和影响。 ... [详细]
  • Nginx使用(server参数配置)
    本文介绍了Nginx的使用,重点讲解了server参数配置,包括端口号、主机名、根目录等内容。同时,还介绍了Nginx的反向代理功能。 ... [详细]
  • 目录实现效果:实现环境实现方法一:基本思路主要代码JavaScript代码总结方法二主要代码总结方法三基本思路主要代码JavaScriptHTML总结实 ... [详细]
  • 本文介绍了如何在给定的有序字符序列中插入新字符,并保持序列的有序性。通过示例代码演示了插入过程,以及插入后的字符序列。 ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • 本文详细介绍了Java中vector的使用方法和相关知识,包括vector类的功能、构造方法和使用注意事项。通过使用vector类,可以方便地实现动态数组的功能,并且可以随意插入不同类型的对象,进行查找、插入和删除操作。这篇文章对于需要频繁进行查找、插入和删除操作的情况下,使用vector类是一个很好的选择。 ... [详细]
  • 猜字母游戏
    猜字母游戏猜字母游戏——设计数据结构猜字母游戏——设计程序结构猜字母游戏——实现字母生成方法猜字母游戏——实现字母检测方法猜字母游戏——实现主方法1猜字母游戏——设计数据结构1.1 ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • React 小白初入门
    推荐学习:React官方文档:https:react.docschina.orgReact菜鸟教程:https:www.runoob.c ... [详细]
  • 前言:原本纠结于Web模板,选了Handlebars。后来发现页面都是弱逻辑的,不支持复杂逻辑表达式。几乎要放弃之际,想起了Javascript中ev ... [详细]
  • ReactJSUIAnt设计空组件原文:https://w ... [详细]
author-avatar
lao6345790
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有