sass с приложением create response

Подскажите, пожалуйста, стоит ли использовать Sass / SCSS с React?

Наконец, я настроил SCSS для работы с Create-React-App без извлечения, но, похоже, это не работает, поскольку рекомендуется использовать модули CSS с каждым компонентом.

Как я могу делиться переменными, миксинами и т. Д. Лучше просто использовать CSS?

Любая помощь будет принята с благодарностью.


person brett    schedule 16.04.2018    source источник
comment
Использование CSS-in-JS (модулей, как бы вы это ни называли) вместо файла index.scss - это архитектурный выбор, и ни то, ни другое не лучше. Используйте то, что вам удобнее всего, и узнайте больше о модулях CSS, если вас интересует, что они предлагают не так, как Sass.   -  person glhrmv    schedule 16.04.2018
comment
Если этот или какой-либо ответ помог решить ваш вопрос, пожалуйста, примите его, нажав галочку и проголосовав за. Это показывает широкому сообществу, что вы нашли решение, и дает некоторую репутацию как автору, так и вам. Это не обязательно :)   -  person patelarpan    schedule 25.04.2018


Ответы (4)


Версия 2. create-react-app теперь поддерживает Sass. Установите node-sass (например, npm install node-sass), чтобы включить его. Дополнительные инструкции см. В документации. Если вам нужен пример, посмотрите это приложение Компонент навигации.

person Robin Wieruch    schedule 04.10.2018

Я настоятельно рекомендую использовать scss, так как вы все еще можете использовать CSS-модули с SCSS. Я не знаком с настройкой приложения create response, но обычно вы настраиваете webpack с такими загрузчиками стилей:

  {
    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» эти стили будут доступны для использования в качестве модулей.

Конечно, это может выглядеть немного иначе, но это будет базовый подход к использованию модулей css с scss.

Чтобы поделиться переменными и миксинами, я всегда использую глобальный файл scss, который потребуется в приложении (например, в app.js). Однако вам все равно придется импортировать этот файл / файлы в каждый компонент-scss, где вам нужны переменные и миксины.

  // GLOBAL STYLES
  {
    test: /\.scss$/,
    loaders: [
      'style-loader',
      'css-loader',
      'sass-loader',
    ],
    include: [srcDir + '/assets/scss/']
  },

В качестве альтернативы вы можете использовать PostCSS-Properties, чтобы сделать ваши компоненты еще более гибкими (например, для предоставления разных тем для вашего приложения, без явного импорта файлов в стилях компонентов), но, как правило, они не поддерживаются IE и потребуют от вас добавления определенных postcss погрузчики.

см. http://cssnext.io/features/#custom-properties-var

Гибкость и ремонтопригодность, которые обеспечивает SASS, очень полезны для больших проектов, особенно с React.

Однако не позволяйте себе поддаваться влиянию моего мнения или мнения других - вы можете использовать то, что вам удобнее всего, и всегда должны сомневаться в том, как все делается.

person elektro.blume    schedule 16.04.2018
comment
Итак, вы используете модули css с sass, а переменные автоматически импортируются через конфигурацию вашего веб-пакета? - person brett; 16.04.2018
comment
@brett nope, я импортирую свой файл vars.scss в компонент components.scss, когда мне нужны там переменные. Все остальное в файле scss для конкретного компонента - это только вложенный CSS. Лучшим подходом на этом этапе было бы использование postcss-свойств, поскольку вам не нужно напрямую импортировать файл переменных. (Затем браузер позаботится о разрешении переменных) - person elektro.blume; 16.04.2018

create-react-app V2 соответствующий раздел doc: (поддержка из коробки) https://facebook.github.io/create-react-app/docs/adding-a-sass-stylesheet#docsNav

person Mohamed Allal    schedule 02.11.2018
comment
Будет так весело создавать веб-приложения с React! - person brett; 08.11.2018
comment
‹3 Конечно, будешь. Многое ‹3 - person Mohamed Allal; 08.11.2018

Использование 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;
}
person JakAttk123    schedule 16.04.2018
comment
Спасибо. Я хотел бы использовать sass, как вы упомянули, но меня смущают рекомендуемые модули css, это меня сбивает. Действительно ли плохо иметь один файл sass, на который компоненты могут ссылаться, или мне следует использовать модули css? - person brett; 16.04.2018