• Какие лёгкие CMS сейчас в моде?

    zooks
    @zooks
    Frontend
    отдать людям не близким к web-у, и чтобы они там уже сами занимались своим контентом и прочим

    Бери MODX Revolution. Натяжка несложная. Работает шустро, т.к. кэширование встроено.
    Визуальный редактор и галерея устанавливаются в два клика из репозитория.
    Ответ написан
    4 комментария
  • Можно ли сверстать средствами css такую тень?

    In4in
    @In4in
    °•× JavaScript Developer ^_^ ו°
    Возможно, я полностью переверну внутренний мир ТС, но это скорее всего border-bottom...
    Ответ написан
    1 комментарий
  • Объясните простыми словами как работает Redux?

    У вас есть одно большое дерево, в котором хранится все состояние (state) приложения - это хранилище (store).
    Также у вас есть набор редьюсеров (которые скомбинированы в один общий rootReducer) - это функции, который принимают текущее состояние и действие и возвращают новое состояние:
    function someReducer(state = initialState, action) {
      // обычно выглядит как switch 
      // action - простой js-объект
      //              и обязательно имеет строковое поле type
      switch(action.type) {
        // обрабатываем действие с типом SOME_ACTION_NAME
        case 'SOME_ACTION_NAME':
          // берем какие-то данные из экшена и возвращаем новое состояние
          // при этом менять sate нельзя!
          // state.someProperty = action.newStateData <--- НЕТ!
          return { ...state, action.newStateData };
        // Если мы не обрабатываем действие - просто возвращаем старое состояние
        default:
          return state;
      }
    }


    Также есть экшен креаторы (actionCreators) - это функции, которые возвращают действие. затем это действие вещается в хранилище (диспатчится). Типичный пример:
    function someActionCreator(someArg) {
      return {
        type: 'SOME_ACTION_NAME',
        newStateData: someArg + 5, // <-- разная логика
      };
    }


    По-умолчанию в качестве экшена мы можем вернуть только простой объект, но при создании хранилища можно добавить так называемый middleWare. Это специальные функции, которые принимают все экшены из диспатча и могут передавать их дальше (при этом содержат дополнительную логику).

    Если мы хотим получить доступ к состоянию в экшен креаторе - воспользуемся thunkMiddleware:
    import thunkMiddleware from 'redux-thunk';
    
    function createStore(initialState) {
      const reducer = combineReducers(reducers);
      const finalCreateStore = applyMiddleware(
        thunkMiddleware // <-- добавляем middleware
      )(defaultCreateStore);
      return finalCreateStore(reducer, initialState);
    }


    Теперь мы можем делать так:
    function someActionCreator(someArg) {
      return (dispatch, getState) => { // <-- возвращаем фукнцию, а не объект!
        const someState = getState().reducerName;
        return {
          type: 'SOME_ACTION_NAME',
          newStateData: someArg + someState, 
        };
      };
    }


    В общем схема выглядит так:

    actionCreator --action--> dispatch --action--> middleware --action--> store --action--> reducer --> newState


    Затем мы берем из react-redux метод connect, который подключает Ваш умный компонент к хранилищу:
    import { connect } from 'react-redux';
    import { bindActionCreators } from 'redux';
    
    class MyComponent extends Component {
      static propTypes = {
        someProp: PropTypes.string.isRequired,
        someFunc: PropTypes.func.isRequired,
      };
    }
    
    // Тут мы берем из глобального состояния необходимую нам часть
    // В ownProps - свойства компонента. Тут могут быть например свойства от роутера
    function mapStateToProps(state, ownProps) {
      return {
        someProp: state.someReducer,
      };
    }
    
    function mapActionsToProps(dispatch) {
      return bindActionCreators ({ // <-- биндим все на disptach для удобства
        someFunc: (someArg) => someActionCreator(someArg + 1),
      }, dispatch);
    }
    
    export default connect(
      mapStateToProps,
      mapActionsToProps
    )(MyComponent);
    Ответ написан
    3 комментария
  • Webpack, как сохранять в разные директории?

    Здесь у вас по сути две независимые сборки, если я правильно понимаю замысел.

    Это реализуется через multiple compilation, то есть массив конфигов:
    var config = [{
      entry: ..
      output: ...
    }, {
      entry: ..
      output: ...
    }];
    
    module.exports = config;


    Как правило, берут один конфиг за базу, и по нему генерируют массив, например, меняя в нём выходные директории, переменные для DefinePlugin или что-то ещё.

    Также для webpack-конфигов удобен такой merge: https://github.com/survivejs/webpack-merge.
    Ответ написан
    Комментировать
  • Как показывать анимированый индикатор агрузки пока картинка не загрузилась?

    Загрузить в background-image прелоадер
    и выровнять по центру каешь

    <div class="parent-img">
      <img src="kartinka.жипег" alt="">
    </div>

    .parent-img {
      background-image: url('../img/preloader.gif');
      background-position: center;
      background-repeat: no-repeat;
    }
    Ответ написан
    Комментировать
  • Чем заменить jQuery?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    react - библиотека для работы с компонентами. Ее основная фишка - отказ от работы с DOM напрямую. Альтернатива (более лояльная) - polymer, основанная на web-компонентах.

    angular - полноценный фреймворк. В нем есть смысл если вы все приложение будете на нем писать а не кусок.

    jquery - удобная библиотека для работы с DOM.

    Вывод - учите javascript, пользуйтесь jquery.
    Ответ написан
    9 комментариев
  • Подсветка cjsx синтаксиса в WebStorm?

    half-life
    @half-life Автор вопроса
    Решил проблему несколько иначе (через Gulp). Итак, нам не понадобится вышеуказаный плагин. Делаем по другому.
    1. Настройки IDE -> File Types
    2. В File Types находим CoffeeScript и добавлем в него *.cjsx
    3. В File Types нахожу JavaScript и добавляем в него cjsx
    4. Далее идём в Language and Framework -> JavaScript
    5. В JavaScript language version выбираем JSX Harmony
    6. Сохраняем наши настройки.


    У меня связка Meteor+React поэтому я делаю вот так:
    1. Устанавливаю meteor-gulp
    2. В директории .gulp создаю такой вот gulpfile.coffee

    Далее пишем код на coffeescript, а разметку обрамляем в бэктики `<разметка>`. Как это выглядит:
    Home.cjsx
    @Home = React.createClass
      displayName: 'Home'
      render: ->
        `
        <div className="main">
          <nav className="nav">
            <ul>
              <li><a href=""></a></li>
            </ul>
          </nav>
        </div>  
        `



    Что делает таск? Он находит все файлы с расширением *.cjsx, убирает из них бэктики, компилирует в *.js с помощью 'gulp-cjsx' и кладёт их в ту же самую директорию.
    На выходе имеет вот такой вот файл
    Home.js
    this.Home = React.createClass({
      displayName: 'Home',
      render: function() {
        return React.createElement("div", {
          "className": "main"
        }, React.createElement("nav", {
          "className": "nav"
        }, React.createElement("ul", null, React.createElement("li", null, React.createElement("a", {
          "href": ""
        })))));
      }
    });


    Для чего нужно обрамлять разметку в бэктики? Тогда файл не подчёркивается красным и между ними работает emmet.
    Вот как то так.
    Ответ написан
    Комментировать
  • Правильно ли я понял суть именования классов в BEM?

    @VisualIdeas
    Не совсем верно.
    Если вы хотите чтобы вся сетка новостей была одним блоком, а не сетка=блок + новость=блок, то в вашем случае логично будет использовать так:

    .news-grid - сетка новостей
    .news-grid__item - элемент новости (наверное элемент новостЬ)
    .news-grid__more-btn - кнопка "Читать далее" в элементе новости
    .news-grid__btn-icon - иконка со стрелочкой в этой кнопке.

    Блок__Элемент--Модификатор, а не Блок__Элемент__Элемент--Модификатор)))
    Название БЭМ, а не БЭЭЭЭМ...

    Посмотрите видео www.youtube.com/watch?v=kBgHdSOj33A - недлинно и понятно
    Ответ написан
    4 комментария
  • Какой есть хороший вертикальный слайдер с миниатюрами?

    webirus
    @webirus
    Тыжверстальщик! Наверстай мне упущенное...
    Любой слайдер с миниатюрами и руки, растущие из места, достаточного для переверстки.
    beloweb.ru/javascript-jquery/primeryi-besplatnyih-...
    Ответ написан
    Комментировать
  • Где найти работу по удаленке в 40+ лет?

    @lyeskin
    Работа за компьютером сама по себе денег не приносит. Равно как и владение программами, программа - это инструмент, который применяется к чему-либо.

    Если человек работает в фотошопе - то он дизайнер , и работать дизайнером он будет вне зависимости от наличия фотошопа или умения работать в нем. Программист может расписать алгоритм без использования компьютера. И так далее.
    Ответ написан
    Комментировать
  • Как фрилансеру получить визу в США?

    @FoxInSox
    Первый вопрос был какова цель поездки, я ответил что безработный.

    Вы здоровы вообще? На вопрос "какова цель поездки" не может быть ответа "я безработный". Если вы получаете туристическую визу, то на этот вопрос предполагают услышать что-то вроде "Еду посмотреть Нью-Йорк и Ниагарский водопад."

    Что собственно я и сделал в свое время. Не спрашивали ни справок с работы, ни банковских бумажек - ничего.
    Ответ написан
    10 комментариев
  • Почему modx набирает популярность?

    Realetive
    @Realetive
    MODX Ambassador России, самозванный БЭМ-евангелист
    Достаточно исчерпывающий ответ на ваш вопрос дал Марк Хамстра (один из ведущих разработчиков на MODX) в своей статье: «Почему MODX не становится популярнее?»

    Оригинал статьи: https://modx.today/posts/2015/08/why-isnt-modx-mor...
    Мой «так себе» перевод: https://gist.github.com/Realetive/c68faa9811f58a78eb17

    Tl;dr
    MODX достаточно популярен. Но сравнивать WP с MODX это, на мой взгляд, как сличать тёплое с мягким. Преимущества MODX проявляются на проектах выше уровня «блог моего кота» и визиток на 3,5 уникальных посетителя в день. Чтобы понимать это, нужно обладать соизмеримо бо́льшим опытом, чем установить тему в WP. Опять же, для использования MODX не обязательно знать про инвалидацию кэша или рекурсивную шаблонизацию, но (в рот мне ноги!) без знания основ web-разработки, лучше оставаться на WP — на их форумах достаточно тем о том, как сложить 2 + 2 на jQuery. Резюмируя — если вы хотите разрабатывать сайты, MODX подходит прекрасно. Для «разработчиков мышкой», «создающих» сайты установкой плагинов и виджетов есть WP, Drupal, Joomla и прочие.
    Ответ написан
    Комментировать
  • Возможно ли полностью заменить php на node.js?

    Возможно, но только если вы думаете что на node.js будет это сделать легче чем на PHP, потому что вы немного знаете JS то скорее всего вы заблуждаетесь.
    Ответ написан
    Комментировать
  • Как разобраться с typescript?

    @makintosh87
    Ответ написан
    Комментировать
  • Jade. Как передать переменную из одного шаблона в дргой, подключаемый?

    k12th
    @k12th
    console.log(`You're pulling my leg, right?`);
    В Jade нет такой красивой конструкции, но есть миксины.
    // container.jade
    mixin container(modifier)
        .container(class=modifier)
    
    // index.jade
    include ./container // надо явно заинклюдить файл с миксином
    
    +container('container-one')
    +container('container-two')
    +container('container-three')


    В данном конкретном случае можно даже проще:

    // container.jade
    mixin container()
        .container&attributes // http://jade-lang.com/reference/attributes/
    
    // index.jade
    include ./container
    
    +container().container-one
    +container().container-two
    +container().container-three
    Ответ написан
    1 комментарий
  • Как управлять файлами из Netbeans?

    AxianLTD
    @AxianLTD
    Хм... Window->Favorites чем не устраивает?
    Ответ написан
    1 комментарий
  • Первые шаги в ИТ. Какими навыками можно овладеть за 3 месяца с нуля?

    @RadmirZ
    Делаем интернет-магазины на движке minicart.su
    - простая верстка
    - яндекс-директ - курсов полно, главная сложность клиентов найти
    - делать работы по сайтам из области, скачать двиг, установить на хостинг, донастроить двиг, сменить логотип
    - утроиться на работу помощником удаленным (вас научат что и как делать)
    - продавать консультации на тему того как приехать к вам в эту удаленную страну (да-да =))
    - деньги зарабатывать проще всего работая на москву (это так, к слову)
    - если разбираетесь в компах то можете удаленно их чинить (винда и прочее) - сайт youdo.ru
    Ответ написан
    5 комментариев
  • Как и когда вы повышаете квалификацию?

    leventov
    @leventov
    90% тех кто "пишут в блоги, работают над open source" и т. д. делают это в рабочее время. Так что не волнуйтесь. Всмысле, что тут не ваша вина. Если работа с пригрузом, найти силы (время-то может и можно) на "развитие" почти невозможно, факт.
    Ответ написан
    Комментировать
  • Как и когда вы повышаете квалификацию?

    @PokimonFromGamedev
    Ведущий разработчик Kotlin
    1) Сменить работу. Путь до работы должен занимать не больше часа в одну сторону. Иначе ничего не успеете.
    2) Выделять 2 часа каждый вечер. На самом деле это очень даже много.
    3) Выделять 6 часов в выходные. Просто пол дня отдыхаете, пол дня изучаете что интересно.

    Если вы еще молоды, то сидеть до 2 часов ночи и кодить.
    Ответ написан
    Комментировать