redux-course-ru
  • Вступление
  • Подготовка
    • Создание package.json
    • Первые шаги
    • ES2015, React HMR
    • ESLint
    • Установка зависимостей на автомате
    • React dev tools
  • Создание
    • Основы Redux (теория)
    • Точка входа
    • Настройка Store
    • Создание Reducer
    • Присоединение данных (connect)
    • Комбинирование редьюсеров
    • Контейнеры и компоненты
    • Создание actions
    • Константы
    • Наводим порядок
    • Middleware (усилители). Логгер
    • Асинхронные actions
    • Взаимодействуем с VK
  • Заключение
Powered by GitBook
On this page
  • Наводим порядок
  • Autoprefixer и стили
  • Верстка

Was this helpful?

  1. Создание

Наводим порядок

PreviousКонстантыNextMiddleware (усилители). Логгер

Last updated 5 years ago

Was this helpful?

ОБНОВЛЕНИЕ 2018: Вышло (современный код и версии пакетов, данное издание УСТАРЕЛО)

На так же проводятся бесплатные вебинары, публикуются переводы и авторские материалы, !

Наводим порядок

Данная глава является своего рода "перекуром". Она затрагивает вопросы стилей и верстки приложения.

Autoprefixer и стили

Добавим в webpack возможность обрабатывать стили, заодно сразу накинув на них возможности autoprefixer'а.

npm install style-loader css-loader postcss-loader autoprefixer precss --save-dev

P.S. для тех кто пользуется автоматическим способом добавления зависимостей: так как мы добавляем зависимости в webpack.config - npm-insatll-plugin не может подтянуть их автоматически.

webpack.config.js

var path = require('path')
var webpack = require('webpack')
var NpmInstallPlugin = require('npm-install-webpack-plugin')
var autoprefixer = require('autoprefixer');
var precss = require('precss');

module.exports = {
  devtool: 'cheap-module-eval-source-map',
  entry: [
    'webpack-hot-middleware/client',
    'babel-polyfill',
    './src/index'
  ],
  output: {
    path: path.join(__dirname, 'dist'),
    filename: 'bundle.js',
    publicPath: '/static/'
  },
  plugins: [
    new webpack.optimize.OccurenceOrderPlugin(),
    new webpack.HotModuleReplacementPlugin(),
    new NpmInstallPlugin()
  ],
  module: {
    preLoaders: [
      {
        test: /\.js$/,
        loaders: ['eslint'],
        include: [
          path.resolve(__dirname, "src"),
        ],
      }
    ],
    loaders: [
      {
        loaders: ['react-hot', 'babel-loader'],
        include: [
          path.resolve(__dirname, "src"),
        ],
        test: /\.js$/,
        plugins: ['transform-runtime'],
      },
      {
        test:   /\.css$/,
        loader: "style-loader!css-loader!postcss-loader"
      }
    ]
  },
  postcss: function () {
    return [autoprefixer, precss];
  }
}

Не забудьте подключить главный файл стилей для всего приложения:

src/index.js

import React from 'react'
import { render } from 'react-dom'
import { Provider } from 'react-redux'
import App from './containers/App'
import './styles/app.css'           // <-- импорт стилей
import configureStore from './store/configureStore'

const store = configureStore()

render(
  <Provider store={store}>
    <div className='app'> {/* обернули все в .app */}
      <App />
    </div>
  </Provider>,
  document.getElementById('root')
)

Возможно (если вы копируете код, либо тоже любите одинарные кавычки), wepback выдаст ошибку от ESLint. Для использования одинарной кавычки, исправьте правило "jsx-quotes": [1, "prefer-single"] в файлике .eslintrc

Верстка

В реальном приложении, имеет смысл стили для компонентов импортировать в коде самих компонентов, что даст очень большие удобства для переиспользования целых блоков, включая оформление.

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

второе издание
канале
присоединяйтесь
на исходный код