• Ревью кода. Что можно улучшить в этом коде?

    @Sun_Day
    Честно говоря, это плохой код. Смысла разбираться в нем не имеет, долго объяснять все моменты(все это просто придется переписать под корень). Но все новички в программировании пишут что-то подобное, это нормально.

    Могут отметить несколько вещей:
    1) Нейминг css классов - почитайте про БЭМ, у вас что-то невразумительное. Да и БЭМ тут не нужен, если прям строго взглянуть - у него свои задачи.
    2) Используйте строгое равенство ===
    3) Условия внутри методов просто кошмар. В целом в методах спагетти код по работе с dom. Это так не делается. Нужно декомпозировать логику и писать лаконичный и выразительный код.
    4) Что-то можно было передать через constructor(), при создании экземпляра класса. Зачем это все пихать в сам constructor.

    На счет html, то просто попробуйте сверстать лендинг, лучше поймете что к чему.

    В общем, никуда это не выкладывайте всерьез). Ну и советую использовать тайпскрипт.

    Реакт можно изучать конечно.
    Ответ написан
    Комментировать
  • Для чего нужен NgModuleRef?

    lazalu68
    @lazalu68
    Salmon
    NgModuleRef это объект представляющий модуль (экземпляр NgModule), как написано в документации:

    NgModuleRef - represents an instance of an NgModule created by an NgModuleFactory. Provides access to the NgModule instance and related objects.


    В примере от Степана Суворова мы берем NgModuleRef для AppModule, главного модуля приложения, сохраняем привязанный к нему ресолвер фабрик компонентов, получаем с его помощью фабрику компонентов, а уже с помощью этой фабрики создаем компоненты
    Ответ написан
    Комментировать
  • Как отсортировать буквы слов внутри строки?

    0xD34F
    @0xD34F Куратор тега JavaScript
    const newStr = str
      .split(' ')
      .map(function([...word]) {
        const sorted = word.filter(this).sort((a, b) => b.localeCompare(a));
        return word.map(n => this(n) ? sorted.pop() : n).join('');
      }, RegExp.prototype.test.bind(/[a-z]/i))
      .join(' ');
    Ответ написан
    1 комментарий
  • Как типизировать этот объект?

    Aetae
    @Aetae Куратор тега TypeScript
    Тлен
    Как есть, так и типизируй.

    Как минимум:
    state.books.filter((book: { id: string }) => book.id !== id)
    А лучше:
    interface Book {
      id: string;
      // ...
    }
    state.books.filter((book: Book) => book.id !== id)
    А ещё лучше:
    interface Book {
      id: string;
      // ...
    }
    interface State {
      books: Book[];
      // ...
    }
    const state: State = ...
    
    state.books.filter(book => book.id !== id)
    Ответ написан
    Комментировать
  • Стоит ли использовать TypeScript в Redux?

    @camelCaseVlad
    Использую Flow в проекте.

    Фот как выглядит пример Апп редусера.

    //@flow
    import type {
      ActionWithPayloadType,
      AppStateType
    } from '@project/types';
    import { OPEN_MODAL, CLOSE_MODAL, SET_USER_LOGIN } from '../constants';
    
    const initialState: AppStateType = {
      isModalOpen: false,
      isUserLoggedIn: false
    };
    
    //eslint-disable-next-line complexity
    const appReducer = (
      state: AppStateType = initialState,
      action: ActionWithPayloadType = { type: '', payload: '' }
    ) : AppStateType => {
    
      if (!action) { return state; }
    
      if (action.type === OPEN_MODAL) {
        return { ...state, isModalOpen: true };
      }
    
      if (action.type === CLOSE_MODAL) {
        return { ...state, isModalOpen: false };
      }
    
      if (action.type === SET_USER_LOGIN) {
        return { ...state, isUserLoggedIn: action.payload };
      }
    
      return state;
    };
    
    export default appReducer;


    @project/types

    export type ActionWithPayloadType = {
      type: string,
      payload: *
    };
    export type AppStateType = {
      isModalOpen: boolean,
      isUserLoggedIn: boolean
    }
    Ответ написан
    Комментировать
  • Компилятор для typescript в вебпаке для реакт проекта, объясните разницу?

    @ned4ded
    Верстка, Фронтенд
    Добрый день.

    Отвечая на ваш вопрос - "Почему в проектах для react частенько используется ts-loader, а не babel-loader?" - они взаимозаменяемы, т.к. оба являются транспайлерами, отличаются только входные данные.

    Отвечая на - "Не проще ли, чтобы все вместе разбирал babel?" - нет, не проще, бабель не производит проверку типов и все равно потребуется установка tsc и, соответственно, настройку вебпака для использования tsc для проверки типов перед сборкой кода через бабель. Несмотря на некоторые соприкасающиеся фичи, typescript является скорее другим языком программирования, тогда как babel берет за основу современные версии ecmascripta. Иными словами, js до компиляции бабелем можно запускать в современных или будущих браузерах, тогда как typescript никогда нельзя будет запускать напрямую в js среде без компиляции. И отсюда возникает вопрос, зачем использовать babel для компиляции синтаксиса typescript'a в js без проверки типов и иных фич tsc, когда у typescript'а есть свой транспайлер? На этот вопрос я предлагаю ответить вам.

    Вот ссылка на реализованные фичи в разных средах.
    Ответ написан
    Комментировать
  • Посоветуете книгу по node.js?

    @Nc_Soft
    Книжки в последнее время выходят какие-то коммерческие, толком по ним не обучишься (раньше было лучше). Поэтому проще сейчас читать документацию к фреймворкам (книжки их по сути перепечатывают).
    Достаточно начать с express, koa, ну и доку к nodejs никто не отменял.
    Ответ написан
    Комментировать
  • Посоветуете книгу по node.js?

    @Kirill-Gorelov
    С ума с IT
    Шелли Пауэрс Изучаем NODEJS переходим на сторону сервера
    Хэррон_Node_js_Разработка_серверных

    И еще рекмоендую Хавербеке М Выразительный JavaScript, там немного, но тоже хорошо описание про node. Там автор создает сайт на полном js(node)
    Ответ написан
    1 комментарий
  • Стажер или джун javascript?

    @stratosmi
    Джун - это уже вполне полноценный программист, ему разве что нельзя доверять полностью самостоятельных работ. Имхо крепкий джун - это 2 года опыта.

    А то что вы описали - это еще стадия обучения. Это именно что стажер.
    Ответ написан
    Комментировать
  • Стажер или джун javascript?

    vicodin
    @vicodin
    Имею некоторый опыт
    Немного завышены, хотя требования не совсем корректные и размытые.
    Ответ написан
    Комментировать
  • Сетки, с чем их едят?

    Я правильно понимаю, что верстать можно и без сетки(но код будет более громоздким и придется больше играться с отступами и т.д)?

    -нет, сетка нужна для адаптивности, на одном разрешении блок занимает, допустим, 6 колонок, на другом 8, на мобилках 12 итд
    Ответ написан
    Комментировать
  • Сетки, с чем их едят?

    delphinpro
    @delphinpro Куратор тега Вёрстка
    frontend developer
    Сетка нужна, в первую очередь, дизайнеру. Чтобы выстроить элементы дизайна ровненько, по феншую, на всех страницах одинаково — блоки на скачут в положениях и размерах.

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

    Всё остальное — следствие. Верстальщику становится мало просто классов для описания раскладки макета. Он решает приправить их медиа-запросами, чтобы и базовая адаптивность страницы была что называется "из-коробки". Опять же для упрощения и ускорения своего труда. Потом решает еще что-то добавить, к примеру смещение колонок и т.п.

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

    Потом появились дизайнеры, которые стали рисовать свои макеты "под бутстрап" =) Ничего плохого, это ускоряет (а значит удешевляет) разработку конечного продукта. Но нужно понимать, что дизайн первичен. А сетку можно любую сделать.
    Ответ написан
    Комментировать
  • Почему в css не работает background-image?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега CSS
    Попробывайте указать правильный путь. Полагаю, должно быть примерно так: "../img/slider.jpg"
    Ответ написан
    1 комментарий
  • Почему в css не работает background-image?

    @Bondi
    .top-slide {
    padding-top: 120px;
    background-image: url("..img/slider.jpg");
    }


    а картинки лежат в папке img? а сама папка img лежит на одном уровне с index.html? Если да, то удалите лишнюю точку и допишите знак "/" вначале пути background-image: url("./img/slider.jpg"); или удалите точки перед img: background-image: url("img/slider.jpg");
    Ответ написан
    1 комментарий