Ответы пользователя по тегу Фронтенд
  • Как правильно создать такой слайдер?

    devellopah
    @devellopah
    простой слайдер, берёшь slick и там в свойстве slidePerShow (не уверен правильно ли написал, ну ты разберёшься), указываешь 5.
    Ответ написан
    Комментировать
  • Как работают с макетом разработчики на разных уровнях?

    devellopah
    @devellopah
    Что делать с версткой которую сделал верстальщик?

    повторно использовать почти не получится

    На backend это же все должно быть по идеи разбито на шаблоны при помощи того же pug.

    зачем? все шаблоны находятся на клиенте и будут(если использовать server-side rendering) рисоваться на сервере(изоморфное приложение)

    Вот хороший стартер, чтобы пощупать server-side react.
    Ответ написан
    Комментировать
  • Где можно посмотреть пример кода компонента React взаимодействующий с API?

    devellopah
    @devellopah
    в идеале компонент не "взаимодействует" с api.
    если используешь redux-thunk, то запрос на api совершает оператор(action creator), сам же контейнер всего лишь дёргает этот оператор в методе componentDidMount.
    Ответ написан
    Комментировать
  • Лучшая библиотека для asynchronous data fetching?

    devellopah
    @devellopah Автор вопроса
    Прошу прощения, не совсем верно сформулировал влпрос. Я имел ввиду библиотеку, которая сохраняет полученные ассинхронным запросом данные в редуксе и затем снабжаете этими данными компоненты.
    Ответ написан
    Комментировать
  • Настройка окружения для front end?

    devellopah
    @devellopah
    установи yeoman командой npm install -g yo
    установи webapp-generator (сгенерирует дефолтный шаблон для будущего сайта) командой npm install -g webapp-generator
    установи gulp-cli и bower командой npm install -g gulp-cli bower

    и наконец командаyo webapp чтобы поднять каркас

    Вообщем всё это объясняется на самом сайте yeoman.io

    UPDATE: поскольку этот вопрос очень многих заинтересовал, я написал простой стартер для вёрстки с pug.
    вкратце: под капотом проект, который скаффолдит webapp-generator, только приспособленный для работы с pug, убрана папка тестов, добавлен gulp-uncss(чтобы отрезать неиспользумемые стили фреймворка) и почищен gulpfile.js
    Вобщем форкайте, лайкайте, пулл-реквестите(если хотите)
    Ответ написан
    1 комментарий
  • Прокомментируете приложение на React/Redux?

    devellopah
    @devellopah
    1) ты можешь использовать spread operator из-под коробки

    вместо

    case 'SWITCH_EDIT_MODE':
          return Object.assign({}, state, {
            editMode: action.value
          })


    так

    case 'SWITCH_EDIT_MODE':
          return { ...state, editMode: action.value}


    2) weatherApiId спрятать в .env, а .env кинуть в .gitignore (dotenv-webpack to the rescue)

    3)MainContainer на мой взгляд
    import React from 'react';
    import { connect } from 'react-redux';
    import { bindActionCreators } from 'redux';
    import * as actionCreators from './../../actions/actionCreators';
    import Main from './../Main/Main';
    
    class MainContainer extends React.Component {
    
    	componentDidMount() {
        this.props.actions.detectLocation();
      }
    
      render() {
      	return <Main {...this.props.store}  {...this.props.actions} />
      }
    }
    
    const mapStateToProps = state => ({ store: state })
    const mapDispatchToProps = dispatch => ({ actions: bindActionCreators(actionCreators, dispatch) })
    
    export default connect(mapStateToProps, mapDispatchToProps)(MainContainer)


    и Main соответсвенно
    import React from 'react';
    import PropTypes from 'prop-types';
    
    import styles from './Main.css';
    
    import PageBackground from './../PageBackground/PageBackground';
    import WeatherIcon from './../WeatherIcon/WeatherIcon';
    import Temperature from './../Temperature/Temperature';
    import Location from './../Location/Location';
    import Loader from './../Loader/Loader';
    import Error from './../Error/Error';
    
    const propTypes = {
      pageBackground: PropTypes.string,
      location: PropTypes.object,
      editMode: PropTypes.bool,
      changeLocation: PropTypes.func,
      switchEditMode: PropTypes.func,
      weatherIcon: PropTypes.string,
      temperature: PropTypes.number,
      weatherDescription: PropTypes.string
    };
    
    export default function Main (props) {
      return (
        <div className={styles.container}>
          {props.loading && <Loader />}
          {props.loadingError && <Error>Sorry, an error occurred. Try to reload page</Error>}
          <PageBackground background={props.pageBackground} />
          <Location city={props.location.city}
            editMode={props.editMode}
            onLocationSelect={props.changeLocation}
            onChangeLocationClick={() => props.switchEditMode(true)}
            onInputBlur={() => props.switchEditMode(false)} />
          <div className={styles.split}>
           <WeatherIcon code={props.weatherIcon} class={styles.icon}/>
          	<span className={styles.date}>Today</span>
          </div>
          <Temperature value={props.temperature}/>
          <div className={styles.description}>props.weatherDescription}</div>
        </div>
      )
    }
    
    Main.propTypes = propTypes;


    4) в идеале все компоненты кромеMainContainer должны (в этом проекте) быть functional components.

    5) можно было бы написать больше редьюсеров(отдельный для получения location, для weather, для pagebackground) это позволило бы тебе "выдавить" логику из дочерних компонентов(PageBackground, Temperature, WeatherIcon) в MainContainer, чтобы представить в функуиональном виде

    6) нужно ограничить кол-во запросов за определённый промужуток времени(например, 15минут), ибо погода не меняется так часто (express-rate-limit).
    Ответ написан
    3 комментария
  • Выбор между flux и redux?

    devellopah
    @devellopah
    о каких проблемах идёт речь? ты просто перечислил "недостатки", не объяснив в чём дело, с какой реальной проблемой столкнулся?

    это всё равно, что я скажу, что претензии надуманные, не объясняя почему я так думаю.
    Ответ написан
    Комментировать
  • Почему div не уходит вниз под другой div?

    devellopah
    @devellopah
    тебе нужно это
    @media only screen and (max-width: 659px) {
    	.sct_kontakt {
    		flex-direction: column-reverse;
    	}
    }


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

    твой пример здесь

    p.s. будь так добр, выкладывай в песочницу сам
    Ответ написан
    1 комментарий
  • Есть ли смысл использовать Immutable вместе с React?

    devellopah
    @devellopah
    у преимущества библиотеки immutable над Object.assign ( or spread operator ) есть имя - structural data sharing.
    Опять-таки всё сводится к увеличению буста. Если у вас настолько сложный проект, что эффективности нативных вариантов недостаточно - подключайте immutable смело. В противном случае - нет необходимости.
    Ответ написан
    Комментировать
  • Как праильней использовать React?

    devellopah
    @devellopah
    возможно это то, что тебе нужно https://github.com/gatsbyjs/gatsby
    Ответ написан
    Комментировать