请问在React中使用Sass/SCSS值得吗?
我已经成功地在Create-React-App中设置了SCSS,但是它似乎不太好用,因为建议针对每个组件使用CSS模块。
如果要共享变量、mixin等,应该如何操作?是否最好只使用CSS?
非常感谢任何帮助。
请问在React中使用Sass/SCSS值得吗?
我已经成功地在Create-React-App中设置了SCSS,但是它似乎不太好用,因为建议针对每个组件使用CSS模块。
如果要共享变量、mixin等,应该如何操作?是否最好只使用CSS?
非常感谢任何帮助。
现在,create-react-app的第二个版本已经支持Sass了。要启用它,请安装node-sass(例如npm install node-sass
)。如需进一步说明,请查看文档。如果需要示例,请查看此应用程序的导航组件。
{
test: /\.scss$/,
loaders: [
'style-loader',
{ loader: 'css-loader', options: { modules: true } },
'sass-loader',
],
exclude: [srcDir + '/assets/scss/']
},
加载器将反向执行,从sass-loader开始将您的scss转译为普通的css,然后使用css-loader和选项“modules: true”,这些样式将可用作模块。
当然,它可能看起来有点不同,但这是使用scss使用css模块的基本方法。
为了共享变量和mixin,我总是使用全局scss文件,在应用程序中需要它(例如在app.js中)进行要求。但是,您仍然必须在每个组件scss中导入需要变量和mixin的文件/ s。
// GLOBAL STYLES
{
test: /\.scss$/,
loaders: [
'style-loader',
'css-loader',
'sass-loader',
],
include: [srcDir + '/assets/scss/']
},
或者,您可以使用PostCSS-Properties使组件更加灵活(例如为应用程序提供不同的主题,而无需在组件样式中显式导入文件),但据我所知,这些不受IE支持,并且需要您添加特定的postcss加载器。
SASS提供的灵活性和可维护性对于大型项目尤其是与React一起使用非常有用。
然而,请不要被我或他人的意见所影响 - 您可以自由地使用最舒适的工具,并始终质疑事物的做法。
create-react-app V2 相关章节文档:(支持开箱即用)https://facebook.github.io/create-react-app/docs/adding-a-sass-stylesheet#docsNav
使用Sass/SCSS与React基本上没有任何关联。Sass被编译为常规CSS,然后在HTML或React中使用它。
至于共享变量,当您使用@import
时,它基本上只是从导入的文件中获取所有内容并将其粘贴到当前文件中,因此您可以创建一个_variables.sccs
文件,并将其导入到每个需要使用全局变量的文件中。
//variables.scss
$primary: red;
$secondary: blue;
//main.scss
@import 'variables';
body {
background-color: $primary;
color: $secondary;
}
index.scss
文件是一种架构选择,两者并无优劣之分。使用最舒适的方式,如果你对CSS模块提供的与Sass不同的功能感兴趣,可以进一步了解。 - glhrmv