-

   rss_rss_hh_new

 - e-mail

 

 -

 LiveInternet.ru:
: 17.03.2011
:
:
: 51

:


[ ] CSS Modules React

, 09 2017 . 13:15 +

Practical Guide to React and CSS Modules. Tatu Tamminen
- . c CSS . , , , CSS (, .leaf), , ? , . SMACSS , , . , , , CSS Modules, , React .


select , . , , . :

.select {}
.select__item {}
.select__item__icon {}
.select--loading {}

item select__, , - item. , CSS - . , select.

, , . Select , (select--loading) (select__item).

, . , , . , (--) (__) .

CSS Modules


CSS :
CSS CSS , .

.

, JavaScript CSS .

/* select.css */
.select {}
.loading {}
.item {}
.icon {}

/* select.js */
import styles from "./select.css";

console.log(styles.select, styles.loading);

, , , , .

CSS , , , . .select--, ?

import JavaScript CSS . , , CSS .

CSS . styles.select, styles.icon . .

, ? , , . : _header__1OUvt.

: ! ? , . , , .

CSS :

  • ,
  • CSS,
  • CSS , .

:

  • DOM,
  • , .

CSS Modules , , CSS Modules JavaScript , . CSS Modules UI .

Webpack React.

React, Webpack CSS Modules


Create React App.

, .

npm install -g create-react-app

create-react-app css-modules  
cd css-modules/  
npm start  

, React :



, App.js.

import React, { Component } from 'react';  
import logo from './logo.svg';  
import './App.css';

class App extends Component {  
  render() {
    return (
      
logo

Welcome to React

To get started, edit {gfm-js-extract-pre-1} and save to reload.

); } } export default App;

CSS Modules Create React App? , App.js. CSS , , className .

Create React App CSS Modules, , .

Create React App CSS Modules


, eject. : , .
npm run eject  

webpack:



Create React App webpack , webpack.config.dev.js , ( webpack.config.prod.js . ).

, , CSS ( webpack, . ):

{
    test: /\.css$/,
    use: [
        require.resolve('style-loader'),
        {
            loader: require.resolve('css-loader'),
            options: {
                importLoaders: 1,
            },
        },
        {
            loader: require.resolve('postcss-loader'),
            options: {
                // Necessary for external CSS imports to work
                // https://github.com/facebookincubator/create-react-app/issues/2677
                ident: 'postcss',
                plugins: () => [
                    require('postcss-flexbugs-fixes'),
                    autoprefixer({
                        browsers: [
                            '>1%',
                            'last 4 versions',
                            'Firefox ESR',
                            'not ie < 9', // React doesn't support IE8 anyway
                        ],
                        flexbox: 'no-2009',
                    }),
                ],
            },
        },
    ],
},

, , , CSS Modules, . webpack, CSS , , :

{
    test: /\.css$/, 
    use: [
        require.resolve('style-loader'),
        {
            loader: require.resolve('css-loader'),
            options: {
                importLoaders: 1,
                modules: true,
                localIdentName: "[name]__[local]___[hash:base64:5]"
            },
        },
        {
            loader: require.resolve('postcss-loader'),
            options: {
                // Necessary for external CSS imports to work
                // https://github.com/facebookincubator/create-react-app/issues/2677
                ident: 'postcss',
                plugins: () => [
                    require('postcss-flexbugs-fixes'),
                    autoprefixer({
                        browsers: [
                            '>1%',
                            'last 4 versions',
                            'Firefox ESR',
                            'not ie < 9', // React doesn't support IE8 anyway
                        ],
                        flexbox: 'no-2009',
                    }),
                    require('postcss-modules-values'),
                ],
            },
        },
    ],
},

loaders? webpack.config , CSS:
postcss-loader autoprefixer CSS.
style-loader CSS JS ,

https://habrahabr.ru/post/335244/

:  

: [1] []
 

:
: 

: ( )

:

  URL