GVKun编程网logo

如何在create-react-app中使用CSS模块?(react怎么写css)

17

对于如何在create-react-app中使用CSS模块?感兴趣的读者,本文将会是一篇不错的选择,我们将详细介绍react怎么写css,并为您提供关于2019最新create-react-app创建

对于如何在create-react-app中使用CSS模块?感兴趣的读者,本文将会是一篇不错的选择,我们将详细介绍react怎么写css,并为您提供关于2019最新create-react-app创建的react中使用sass/scss,以及在react中使用sass/scss公共变量的方法、asp.net – 如何在asp net core api中使用Created(或CreatedAtAction / CreatedAtRoute)、create-react-app 如何使用 less,sass 和 react-css-modules?、create-react-app中使用sass的有用信息。

本文目录一览:

如何在create-react-app中使用CSS模块?(react怎么写css)

如何在create-react-app中使用CSS模块?(react怎么写css)

根据Dan Abramov
的推文,CSS模块支持位于create-
react-app(CRA)中。只需扩展module.css其样式表即可启用该功能,但这对我不起作用。我的版本为1.1.4 react-scripts。如何使用CRA启用CSS模块?谢谢

答案1

小编典典

您无需弹出。

从版本2开始,Create React App就立即支持CSS模块,该版本现已稳定。

通过运行或升级到v2(react-scripts@latest)。yarn upgrade react-scripts@latest``npm install--save react-scripts@latest

您只需要创建带有扩展名的文件 .module.css

例如:

.myStyle {  color: #fff}

然后,您可以像这样使用它:

import React from ''react''import styles from ''./mycssmodule.module.css''export default () => <div className={styles.myStyle}>We are styled!</div>

2019最新create-react-app创建的react中使用sass/scss,以及在react中使用sass/scss公共变量的方法

2019最新create-react-app创建的react中使用sass/scss,以及在react中使用sass/scss公共变量的方法

Sass(英文全称:Syntactically Awesome Stylesheets)是一个最初由Hampton Catlin设计并由Natalie Weizenbaum开发的层叠样式表语言。Sass是一个将脚本解析成CSS的脚本语言,即SassScript。Sass包括两套语法。最开始的语法叫做“缩进语法”,与Haml类似,使用缩进来区分代码块,并且用回车将不同规则分隔开。而较新的语法叫做“SCSS”,使用和CSS一样的块语法,即使用大括号将不同的规则分开,使用分号将具体的样式分开。通常情况下,这两套语法通过.sass和.scss两个文件扩展名区分开。相信每个前端开发者都对这种css预处理器有所耳闻。
        不管你是刚使用Reactjs或者是Reactjs的老司机,你们一定都听说过create-react-app这个脚手架,而从create-react-app的官方文档中,我们可以看到他们暂时还不支持直接导入LESS或者Sass。但是通过一些配置,我们还是可以从官方脚手架中使用sass/scss/less的。
首先我们先安装node-sass这个组件,我推荐我们国内的coder使用下面的命令行安装
 
npm install -g mirror-config-china --registry= http://registry.npm.taobao.org
npm install node-sass
 
然后在自己项目的package.json中,将以下行添加到scripts中:
 
"build-css": "node-sass-chokidar src/ -o src/","watch-css": "npm run build-css && node-sass-chokidar src/ -o src/ --watch --recursive",
 
小提示: 在使用不同的预处理器时,请根据预处理的文档替换build-css和watch-css命令。
现在,您可以将src/App.css重命名为src/App.scss并运行npm run watch-css。watch-css将在src子目录中找到每个Sass文件,并在其旁边创建一个相应的CSS文件,在我们的例子中覆盖src/App.css。由于src/app.js仍然 improt src/App.css,所以样式同样成为您的应用程序的一部分。您现在可以编辑src/App.scss,同时会生成相应的src/App.css。
为了能一边编译sass,一边运行我们的前端项目,我们还需要npm-run-all这个工具,这是一个并行运行多个npm脚本的脚手架工具,安装方式也非常简单。
 
$ npm install npm-run-all --save-dev
# or
$ yarn add npm-run-all --dev
 
最后,在不使用ejec命令的情况下,更改create-react-app的webpack配置,我们使用react-app-rewired来处理,安装方式如下:
 
$ npm install react-app-rewired --save-dev
 
在完成这些步骤之后,我们修改package.json的script内容,让sass一边编译,一边跑着我们的前端项目,实现热更。
 
"scripts": {
"build-css": "node-sass src/ -o src/",
"watch-css": "npm run build-css && node-sass src/ -o src/ --watch --recursive",
"start-js": "node scripts/start.js",
"start": "npm-run-all -p watch-css start-js",
"build": "npm run build-css && node scripts/build.js",
"test": "node scripts/test.js --env=jsdom"
},
 
scripts的命令如上所述,安装完之后,npm start就可以搞定sass的使用问题了。
现在运行run npm和npm run build同样构建了Sass文件。
作者:Originalee
链接: https://www.jianshu.com/p/8c577509079f     
来源:简书
如果需要定于全局的scss样式,只需要完成以上设置后,将index.css文件改成index.scss就行
然后在index.js文件中引入  import ''./index.scss'';
 
以上就是在最新creact-react-app搭建的react项目中使用sass的配置方式;  实际开发中还需要定义公共的sass变量,函数等,要实现这一目的,就还需要进行以下操作(前方高能):
============================-
 

react sass scss设置全局变量全局函数

定义全局变量的种方式: 
方式一(需要eject暴露环境,不推荐):       https://www.jianshu.com/p/ec57dd11c4eb
  • 1.安装 sass-resources-loader
  npm i sass-resources-loader --save-dev
  • 2.暴露配置文件 npm run eject //如果这一步报错,可能是安装了git后出现的问题,解决方案是:
      • git add .
      • git commit -am "Save before ejecting"
      • npm run eject
      • 这样就能eject了
  • 3.修改 config 里面的 webpack.config.js
在 getStyleLoaders后面添加如下代码
 
.concat({
loader: ''sass-resources-loader'',
options: {
resources: [
// 这里按照你的公共变量文件路径填写
path.resolve(__dirname, ''./../src/common.scss'')
]
}
})
 
最终代码如下
 
{
test: sassRegex,
exclude: sassModuleRegex,
use: getStyleLoaders(
{
importLoaders: 2,
sourceMap: isEnvProduction && shouldUseSourceMap,
},
''sass-loader'',
).concat({
loader: ''sass-resources-loader'',
options: {
resources: [
// 这里按照你的公共变量文件路径填写
path.resolve(__dirname, ''./../src/common.scss'')
]
}
}),
sideEffects: true,},
提示:    ''./../src/common.scss'' 这个是我的公共的sass路径 根据你自己的来配置
以上步骤完成后,重新npm start就可以使用公共变量了.
 
方式二(不需要eject暴露环境,强烈推荐使用这种方式!!!): 
         1  安装3个模块: cnpm install    react-app-rewired    customize-cra    sass-resources-loader  --save-dev
         2 在package.json的同级目录中 新建一个config-overrides.js文件,在该文件中写入以下代码:
 
const { override, adjustStyleLoaders } = require("customize-cra");
module.exports = override(
  // ...其他配置...
  adjustStyleLoaders(rule => {
    if (rule.test.toString().includes("scss")) {
      rule.use.push({
        loader: require.resolve("sass-resources-loader"),
        options: {
          resources: "./src/assets/scss/color/outcolor.scss" //这里是你自己放公共scss变量的路径
        }
      });
    }
  })
  // ...其他配置...
);
                
        3 在package.json文件中,将 "scripts"修改为:
                
                      "scripts": {
    "build-css": "node-sass-chokidar src/ -o src/",
    "watch-css": "npm run build-css && node-sass-chokidar src/ -o src/ --watch --recursive",
    "start-js": "node scripts/start.js",
    "start": "react-app-rewired start",
    "build": "react-app-rewired build",
    "test": "react-app-rewired test",
    "eject": "react-app-rewired eject"
  },
                
                4  最后重新运行一下:  npm start;   大功告成!!
 
看完觉得有用的同学,帮忙点个赞让更多人看到吧~~(比心)
     
2019年12月
 
 
 
 
 
 
 

asp.net – 如何在asp net core api中使用Created(或CreatedAtAction / CreatedAtRoute)

asp.net – 如何在asp net core api中使用Created(或CreatedAtAction / CreatedAtRoute)

我想告诉消费者我的api关于新创建的对象的位置.我知道有Created()CreatedAtRoute()和CreatedAtAction(),但我不确定如何使用它.

这是我尝试过的:

我有一个Get资源,我想指出.它需要一个ID作为输入:

[HttpGet("/${id}",Name = "GetProduct")]
    [ProducesResponseType(typeof(Produkt),200)]
    public IActionResult Get([Fromroute] int id)
    {
       // some code...
        return Ok(...);
    }

当通过我的POST路由创建产品时,我想通过Location标头指向此资源:

尝试1

[HttpPost]
    [ProducesResponseType(typeof(Produkt),200)]
    public IActionResult CreateNewProduct([FromBody] ProduktDtoForCreate productFromBody)
    {
        //...
        return CreatedAtRoute("GetProduct",new { id = productToCreate.Id },productToCreate);
    }

这将返回位置标题:http://localhost:5000/ $15003

尝试2

[HttpPost]
    [ProducesResponseType(typeof(Produkt),200)]
    public IActionResult CreateNewProduct([FromBody] ProduktDtoForCreate productFromBody)
    {
        //...
        return Created(new Uri($"{Request.Path}/{productToCreate.Id}",UriKind.Relative),productToCreate);
    }

这个工作并返回/api/v1.0/produkte/16004,但似乎不需要使用当前请求指向新位置.另外我不确定这是不是很好的做法?

解决方法

在Get方法的路由中,同时取前导/和$out(即它应该只是“{id}”).领先/在那里意味着路线将相对于应用程序的基础;取出它会使方法的路径相对于控制器的基本路径. $被视为路径中的文字字符,因此它出现在尝试1中的位置标题中.一旦进行了更改,您应该会发现您的CreatedAtRoute调用按预期工作.

create-react-app 如何使用 less,sass 和 react-css-modules?

create-react-app 如何使用 less,sass 和 react-css-modules?

  • create-react-app 如何使用 less?
  • create-react-app 如何使用 sass?
  • create-react-app 如何使用 react-css-modules?

Thanks @pengzeya

1.create-react-app 如何使用 less?

安装 less-watch-compiler 到开发依赖。

1
npm i less-watch-compiler --save-dev

添加 scripts

1
2
3
4
"scripts": {
"build-css": "less-watch-compiler --run-once --main-file=index.less src/less src/css",
"watch-css": "npm run build-css && less-watch-compiler --main-file=index.less src/less src/css"
}

运行命令

1
npm run watch-css

运行结果
创建 css 目录并生成编译后的 index.css 文件

1
src/less/index.less    →    src/css/index.css

程序运行起来后,会监控对应目录下的.less 文件,热更新到 css 目录下。

参考:https://github.com/facebook/create-react-app/issues/3457

2.create-react-app 如何使用 sass?

安装 node-sass-chokidar 到依赖

1
npm install --save node-sass-chokidar

添加 scripts

1
2
"build-css": "node-sass-chokidar src/sass -o src/css",
"watch-css": "npm run build-css && node-sass-chokidar src/sass -o src/css --watch --recursive",

运行命令

1
npm run watch-css

运行结果
创建 css 目录并生成编译后的 index.css 文件

1
src/sass/index.scss    →    src/css/index.css

程序运行起来后,会监控对应目录下的.scss 文件,热更新到 css 目录下。

参考:https://github.com/facebook/create-react-app/blob/master/packages/react-scripts/template/README.md#adding-a-css-preprocessor-sass-less-etc

3.create-react-app 如何使用 react-css-modules?

暴露出配置文件:

1
npm run eject

运行 eject 命令后,CRA 会自动把 wepack 中与 css-modules 相关的依赖为我们准备好,无需新增多余的依赖。

修改 config/webpack.config.dev.js:

大专栏 create-react-app 如何使用 less,sass 和 react-css-modules? <  /tr>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// 修改前
{
loader: require.resolve(''css-loader''),
options: {
importLoaders: 1,
},
},
// 修改后
{
loader: require.resolve(''css-loader''),
options: {
importLoaders: 1,
modules: true,
localIdentName: "[name]__[local]___[hash:base64:5]"
},
},

修改 config/webpack.config.prod.js:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// 修改前
{
loader: require.resolve(''css-loader''),
options: {
importLoaders: 1,
minimize: true,
sourceMap: true,
},
},
// 修改后
{
loader: require.resolve(''css-loader''),
options: {
importLoaders: 1,
modules: true,
minimize: true,
sourceMap: true,
},
},

代码变化:
引入 CSS Modules 之前:

1
2
3
4
5
6
7
8
9
10
11
12
13
import React, { Component } from ''react'';
import logo from ''./logo.svg'';
import ''./foo.css'';
class App extends Component {
render() {
return (
<div className="bar">

</div>
);
}
}
export default App;

引入 CSS Modules 之后:

1
2
3
4
5
6
7
8
9
10
11
12
13
import React, { Component } from ''react'';
import logo from ''./logo.svg'';
import foo from ''./foo.css'';
class App extends Component {
render() {
return (
<div className={foo.bar}>

</div>
);
}
}
export default App;

添加 css-modules 之前:

1
2
3
4
.bar{
display: block;
background: yellow;
}

添加 css-modules 之后:

1
2
3
4
.foo__bar__1t6eA{
display: block;
background: yellow;
}

运行结果

1
.barfoo__bar__1t6eA

注意事项:

  • 将 import 进来的’./SomeComponent.css’分配给一个本地常量,例如,import foo from ‘./foo.css’;
  • 在 JSX 中将 className 替换成的形式 {styles.myClass},例如,className={styles.myClass}.
  • 需要修改 CSS 文件和 JSX 中的 class 名。因为 CSS Modules 不允许”-“出现在类名中,有过开发经验的朋友都知道,正则中有”word” 与”none-word” 之分,word 包括 0~9,a~z 以及下划线。而”-“不属于单词,因此 CSS Modules 不支持。例如我们需要将.Foo.bar 修改为.bar,某些方面也简化了我们的代码。使用 CSS Modules 之后,我们就不需要再使用 BEM 之类的 CSS 规范。

参考:https://medium.com/nulogy/how-to-use-css-modules-with-create-react-app-9e44bec2b5c2

create-react-app中使用sass

create-react-app中使用sass

环境:

react:^17.0.2
create-react-app:4.0.3

首先,安装sass

yarn add -dev node-sass  ||
yarn add --dev node-sass@npm:dart-sass@1.25.0   //* 注意,在create-react-app不能使用dart-sass,想使用的话需要让它以为是node-sass

安装好以后就可以使用sass了,比如新建test.scss进行使用
* 注意,这里新建的文件为.scss后缀,而不是.sass
也可以使用module.css,新建.module.scss文件使用

今天的关于如何在create-react-app中使用CSS模块?react怎么写css的分享已经结束,谢谢您的关注,如果想了解更多关于2019最新create-react-app创建的react中使用sass/scss,以及在react中使用sass/scss公共变量的方法、asp.net – 如何在asp net core api中使用Created(或CreatedAtAction / CreatedAtRoute)、create-react-app 如何使用 less,sass 和 react-css-modules?、create-react-app中使用sass的相关知识,请在本站进行查询。

本文标签: