• Как написать большое приложение на Vue.js и не умереть?

    @ber_enot Автор вопроса
    Веб-разработчик, Vue.js / Node.js
    Спасибо всем ответившим!

    Нашел решение.
    Проблема была в конфигурации vue.config.js (использую vue-cli 3).

    Для глобальных переменных и миксинов SASS (SCSS) использовал плагин style-resources-loader.

    pluginOptions: {
        'style-resources-loader': {
          preProcessor: 'scss',
          patterns: [
            path.resolve(__dirname, 'src/scss/_variables.scss'),
            path.resolve(__dirname, 'src/scss/_mixins.scss'),
          ],
        }
      },


    Именно из-за него сборка занимала много времени. Изменение одной буквы в HTML-коде компонента приводило к пересборке всех компонентов, использующих SCSS.

    Решение проблемы:
    1. npm remove style-resources-loader
    2. удаление из конфига кода (см. выше)
    3. добавление в конфиг кода:
    css: {
        loaderOptions: {
          sass: {
            data: `
              @import "@/scss/_variables.scss";
              @import "@/scss/_mixins.scss";
            `,
          }
        }
      },


    Результат:
    DONE Compiled successfully in 1704ms 15:06:07
    App running at:
    - Local: localhost:8080
    Ответ написан
    Комментировать
  • Как написать большое приложение на Vue.js и не умереть?

    @Buzzzzer
    Возможно что то не так в конфигах webpack ?

    У меня сейчас в проекте порядка 600+ vue компонентов.
    Пересборка в dev с hot reload занимает 2-5 сек.
    (win, ram 16gb, ssd, какой то старенький i3)
    Ответ написан
    4 комментария
  • Как сделать кросс-доменный запрос в Redux-Saga?

    BRAGA96
    @BRAGA96
    Чтобы вы не отправляли с браузера, если на сайте, куда вы делаете запрос не разрешен CORS, то ничего не получится. Серверный запрос будет работать, пробовал из под Nodejs.
    Ответ написан
    1 комментарий
  • Как попасть на хабр?

    zagayevskiy
    @zagayevskiy
    Android developer at Yandex
    Комментировать можно и без статей. Это плохо тем, что карму можно поднять только до определенного уровня (вроде, до +4), а при комментировании карму чаще сливают, чем поднимают.
    Получить полноценный акк можно от НЛО (не подходит по вопросу), и от любого участника, у которого есть инвайт. Инвайты дают за статьи с рейтингом 50+(если ничего не поменялось). Также у платящих компаний есть инвайты для сотрудников (в зависимости от того, сколько платят).
    Ответ написан
    4 комментария
  • Как попасть на хабр?

    Комментировать можно и не "попадая" на хабр, а если статьи писать не планируете то зачем вам полноценный аккаунт?
    Ответ написан
    8 комментариев
  • Не работает видео фон на Iphone?

    alams_stoyne
    @alams_stoyne
    Full Stack Developer - #PHP #CSS #JS #DB
    Я долго мучался с iOS решение такое:
    <video autoplay loop muted playsinline preload="yes" poster="poster/1.jpg">
    				<source src="video/1-test.m4v" type="video/mp4">
    			</video>

    Пример работы тут - переключение видео на 1-2-3
    Ответ написан
    Комментировать
  • Чем опытнее разработчик, тем меньше соблюдается принцип KISS?

    Adamos
    @Adamos
    Чем опытнее разработчик, тем чаще, выполняя конкретную задачу, он понимает, что примерно такую уже решал. Поэтому опытный разработчик видит уровни абстракции, общие для многих решений. И описывает их так, чтобы потом, при решении очередной конкретной задачи, использовать написанное ранее с минимумом дополнительных усилий.
    Вы, не имея такого опыта, просто не понимаете, что все эти лееры, провайдеры и трейты - прекрасная возможность написать две строчки и быть уверенным в их работе там, где вы угробите два дня на написание "простого" решения, а потом еще неделю будете отлавливать его глюки.
    Ответ написан
    6 комментариев
  • Чем опытнее разработчик, тем меньше соблюдается принцип KISS?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Принцип KISS не означает что надо использовать самые примитивные инструменты.
    Он означает, что не надо переусложнять систему без нужды.
    Если так рассуждать, так и высшее образование не нужно: "Дед отличные бани строил, хотя вовсе был неграмотный. Я и без сопромата небоскреб построю!"
    Если вы пока ещё не понимаете назначение всех этих "лееров, провайдеров и репозиториев", это не значит, что они вообще никому не нужны.

    Для того, чтобы упростить управление системой, её надо усложнить.
    Этот принцип относится к любой области человеческой деятельности, от постройки ракет до управления государствами.
    Чем сложнее система, тем больше накладные расходы на ее управление. Хоумпейдж с котиками можно и нужно делать примитивными средствами. В большом проекте надо сразу закладываться на будущую расширяемость. То есть, заранее делить ответственность между "леерами".

    И кстати. Код, в котором "всё друг на друге завязано" - это очень плохой код. Собственно, предназначение всех этих "лееров, провайдеров и репозиториев" как раз в том, чтобы компоненты были как можно более независимы друг от друга.
    Ответ написан
    1 комментарий
  • Что делать only frontend разработчику с backend?

    DevMan
    @DevMan
    не надо вам с этим разбираться. прост найдите человека/человеков, который это уже умеет и платите ему часть денег.
    вы получите меньше денег за задачу, но вы будете в плюсе: задачи закрываются быстрее, больше задач за период, вы не учите неведомый вам мир и качаетесь в том, что вам знакомо и близко.
    Д - делегирование.
    Ответ написан
    5 комментариев
  • Возможно ли быть одновременно дизайнером и фронтендером?

    Chipr
    @Chipr
    UX/UI designer
    Уже 5 лет в дизайне, а список литературы только по дизайну не уменьшается. Да, я смогу сверстать простую страничку, чтобы что-то попробовать самому, не напрягая фронта\верстальшика, но чтобы узнать все нюансы профессии потребуется вторая жизнь. Хотя, наверное, и бывают уникумы.
    Ответ написан
    1 комментарий
  • Прокомментируете тестовое на react?

    rockon404
    @rockon404 Куратор тега React
    Frontend Developer
    1. Хотелось бы видеть в проекте использование redux. react+redux - это самый распространенный и востребованный стек в React разработке.

    2. Почему все хандлеры и состояния находятся в App, а не в Main? Как вы потом эту кашу собираетесь масштабировать? Переносите все, что связанно только с Main в Main. По-хорошему смотрите пункт 1.

    3. Слишком много функциональных компонентов. Подумайте их где можно заменить на классы с реализованным shouldComponentUpdate или на PureComponent, чтобы убрать лишние вызовы render этих компонентов.

    4. import Logo from 'images/Logo.png';
    называть пути к ресурсам с заглавной буквы неправильно.

    5. Вместо:
    const StyledLogo = styled.img.attrs({
      src: Logo,
      alt: 'Aviasales'
    })`
      width: 60px;
      height: 61px;
    `;

    Удобней в использовании:
    const StyledLogo = styled.img`
      width: 60px;
      height: 61px;
    `;

    и:
    <StyledLogo src={logo} alt="Aviasales" />

    6.
    const Error = ({ text }) => (
      <StyledError dangerouslySetInnerHTML={{__html: text}} />
    );

    зачем тут html?
    Для сохранения переносов строки есть css правило:
    white-space: pre-line;

    7. Вместо:
    let element;
    
    if (error && !isLoading) {
      element = <Error text={error} />;
    }
    if (!error && isLoading) {
      element = <Loader />;
    }
    if (!error && !isLoading) {
      element = (
        <>
        <Heading />
        <Main
        isCurrencyExchanging={isCurrencyExchanging}
        activeCurrency={activeCurrency}
        handleCurrencyChange={this.handleCurrencyChange}
        ticketsFilteredByStops={ticketsFilteredByStops}
        stops={stops}
        handleStopsChange={this.handleStopsChange}
        handleUncheckOther={this.handleUncheckOther}
        />
        </>
      );
    }
    return element;

    Лучше:
    if (isLoading) return <Loader />;
    
    if (error) return <Error text={error} />;
    
    return (
      <>
        <Heading />
        <Main
          isCurrencyExchanging={isCurrencyExchanging}
          activeCurrency={activeCurrency}
          handleCurrencyChange={this.handleCurrencyChange}
          ticketsFilteredByStops={ticketsFilteredByStops}
          stops={stops}
          handleStopsChange={this.handleStopsChange}
          handleUncheckOther={this.handleUncheckOther}
        />
      </>
    );


    8. Вместо:
    filterTickets = (tickets, stops) => {
      return tickets.filter((ticket) => {
        return values(stops).indexOf(ticket.stops) !== -1;
      });
    };

    Лучше:
    filterTickets = (tickets, stops) => tickets.filter(
      ticket => values(stops).includes(ticket.stops),
    );


    9. Не пропускайте отступы между методами и между вложенными свойствами css.

    10. Вместо:
    componentsDidMount() {
      // много кода
    }


    Лучше:
    componentsDidMount() {
      this.fetchSomeData();
    }


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

    12. Loader и Error самое место в директории components/core или что-то вроде того. Там же, по-хорошему, должны находиться базовые компоненты: кнопки, инпуты, табы, чекбоксы.

    13. Styled компоненты, имхо, лучше писать в файле с компонентом, где они применяются. Так анализ кода происходит гораздо быстрей и легче поддерживать. Исключение - переиспользуемые компоненты.
    Даже если вам больше нравится выносить, называть файл style неправильно, вы там описываете компоненты, а не просто стили.
    Ответ написан
    3 комментария
  • Бэкэнд разработчик на ноде, вкатывание?

    @spaceatmoon
    Дело вкуса. Я знаю JS, но совершенно не хочу вкатываться в nodejs. Зачем мне нода, когда и php решает те же проблемы?

    Мне лично нравиться в PHP, что есть на что опереться. Динамика развития стека средне динамичная и движется в правильном направлении, а не придумывает 100500 решений одной и той же проблемы. Есть решение - все его используют.

    Боязнь изучения другого языка в вашем случае не оправдана. Попробуйте Python/Java/PHP. Ознакомитесь где вот вам проще искать документацию, приятность синтаксиса, скорость разработки. Где вы решаете проблему из мира живого, а не из мира "Как эта штука работает".

    Я как-то хотел изучить Haskell, долго блуждал, но в итоге сложилось ощущение, что язык решает проблему для себя, а не для меня. Мне банально было неудобно всё в том языке. Даже родной редактор завершался с критической ошибкой...
    Ответ написан
    7 комментариев
  • На чем зарабатывает Quora, toster или подобные сайты?

    shmatuan
    @shmatuan
    8 year of Web, 5 years of Vue
    Можно просто выключить адблок и увидеть ответ
    5bd0447166cd2277435374.png
    Ответ написан
    Комментировать
  • Слайдер на ванильном js?

    @Sashjkeee
    f-e
    Ответ написан
    Комментировать
  • Зачем node.exe в фотошопе?

    qork
    @qork
    { background: #F00B42 }
    Это Node.JS
    https://forums.adobe.com/thread/2477860
    In Adobe apps, it is mainly used for File Syncing - it's safe.
    Ответ написан
    1 комментарий
  • Критика, критика. Начинающий в сфере front-end разработки. Все-ли я делаю правильно?

    @be_a_man
    1) main-bg.jpg - 890кб, это много, нужно ужимать.
    2) Лого не кликабельное (Если это одностраничник можно опустить)
    3) Телефоны не кликабельные.
    4) Иконки, лого, лучше в SVG.
    5) Почему заголовок дивом, а не <h1></h1>?
    6) Почему текст под заголовком в диве а не <p></p>?
    7) Если используете БЭМ, почитайте о нем побольше
    <div class="header-contacts__phone">
       8 (347) <span class="header-contacts__phone__fat">271-54-28</span>
    </div>
    header-contacts__phone__fat // так никогда не делайте
    // header-contacts__phone--fat → block__element--modifier

    и зачем вообще номер разбит, если не оформлен по частям?
    8) У img пустой alt
    9)
    .header
    	padding: 15px 0
    	&__logo
    		background: url(../img/header-logo.png) center no-repeat
    		background-size: 100%
    		width: 191px
    		height: 61px
    	&-contacts
    		display: flex
    		justify-content: flex-end
    		align-items: center
    		&__phone

    .header-contacts — у вас отдельный блок, и в sass пишите как отдельный блок, на больших проектах потом охренеете.
    .header
    	...
    	&__logo
    
    .header-contacts
    	...
    	&__phone


    в остальных случаях аналогично.

    10)
    @media (width: 768px) → @media (min-width: 768px) или @media (max-width: 768px)

    11) Лого кстати зачем бэграундом, когда нужно img
    12) Ну и выше вам там написали, согласен со всем кроме иконочного шрифта. Не стоит его тянуть ради 2-10 иконок. Лучше юзать SVG спрайты
    Ответ написан
  • Почему действия в цикле работают через раз?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Потому что вы удаляете элементы из перебираемого массива.
    Например:
    Массив [a, b, c, d]
    Цикл 0: (i==0) удалить element[a], удалить a. В итоге массив [b, c, d]. Увеличить i на 1.
    Цикл 1: (i==1) i указывает на c. Удалить element[c], удалить c. В итоге массив [b, d]. i++
    Цикл 2: не выполняется, т.к. i >= length
    Итог: b и d мы просто пропустили.
    Ответ написан
    1 комментарий
  • Почему одна буква прозрачная?

    @ziss Автор вопроса
    Проблема исправилась, когда взял другой генератор шрифтов.
    Ответ написан
    Комментировать
  • Если валидатор выдает Warning (не Error, а именно Warning) - насколько это плохо? Это валидная верстка или уже нет?

    Machez
    @Machez
    Бу!
    Забейте на это. Валидатор хоть и служит на благо стандартизации, но по факту оперировать надо воспримчивостью браузеров к верстке и не смотреть на этот валидатор вообще. Лучше юзайте Lint'еры )) вот онм то вам и помогут делать правильно
    Ответ написан
    2 комментария
  • Можно ли сменить адре страницы, не потеряв комментарии и расшаривания?

    @ncheremisin
    Принимаю заказы на Битрикс
    Хороший вопрос, но думаю, ответ все же нет, хотя хотелось бы услышать мнение экспертов из Яндекса. Может соблюсти какие-то условия, например, оставить ту же страницу и 301 редирект на нее, или тот же контент (если вдруг менялся дизайн) и 301 редирект на него, но так по сути, думаю нет. Ведь там привязка скорее всего скриптовая, а они работать должны на той странице, на которой были запущены и давать результаты только для нее, если страница поменяется, то и, соответственно, контент тоже должен поменяться в том числе и расшаривания и дискусии.
    Ответ написан
    1 комментарий