Giter Site home page Giter Site logo

Comments (9)

sk1e avatar sk1e commented on September 2, 2024

если их убрать в конструктор то eslint мне будет ошибку показывать

from yasn.

in19farkt avatar in19farkt commented on September 2, 2024

Что за ошибка?

from yasn.

sk1e avatar sk1e commented on September 2, 2024

ошибка что созданный объект никак не используется

from yasn.

in19farkt avatar in19farkt commented on September 2, 2024

А ты его в переменную не записывай)

from yasn.

sk1e avatar sk1e commented on September 2, 2024

Тогда будет ругаться что никуда не записываю созданный объект)

from yasn.

in19farkt avatar in19farkt commented on September 2, 2024

Один из немногоих случаев, когда экземпляр объекта в дальнейшем не используется, но сам подход с классами оправдан, поэтому тут два варианта, либо убрать переменную и ретёрнить создаваемый экземпляр, либо заигнорить это правило (на этой же строке допиши коммент // eslint-disable-line no-new), но глобально отключать это правило не стоит.

from yasn.

sk1e avatar sk1e commented on September 2, 2024

Возвращать нельзя это уже будет костыль с искажением семантики . Правило лучше... но тогда его нужно будет приписывать к каждому созданию экземпляра. Экземпляры для этих классов у нас везде создаются в единичном количестве и вероятность количества экземпляров больше 1 очень низкая. Таким образом, с точки зрения повторного использования вариант с комментом будет хуже того что уже используется у меня: вызов методов просто переместится в конструктор и везде появится прибавка в виде коммента.

Еще нельзя исключать что могут появится очень странные желания, скажем, отрендерить, но не привязывать пока события и тогда методы вообще нельзя будет перемещать в конструктор .

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

from yasn.

in19farkt avatar in19farkt commented on September 2, 2024

Тут есть несколько ньюансов, которые тоже надо учесть:

  1. Все таки экземпляры мы создаем много раз, например, для той же кнопки, если ее три штуки на странице, то и экземпляров будет три.
  2. Семантически тоже не совсем корректно кажется выносить навешивание событий и различные иниационные хуки за пределы конструктора, по логике это как раз при создании компоненты js должен сразу уметь делать, а так у нас API компоненты получается довольно странным - создай экземпляр, а потом еще вызови несколько методов, причем у разных компонент набор методов разный будет) еще интересно: мы, получается, делаем такое кривое API только потому что eslint ругается))
  3. Странные желания лучше обрабатывать специальными опциями в конструкторе, и в идеале эти опции документировать хотя бы на уровне комментария
  4. Есть вероятность, что вообще надо будет сделать экспорт всех инициализированных инстансов, тогда будет в конце каждой компоненты примерно такой код:
export default function renderComponent(callbackWhenInitialized) {
  $(() => {
    const buttons = $('.js-button').map((index, node) => {
      return new Button($(node));
    });

    if (callbackWhenInitialized && typeof callbackWhenInitialized === 'function') {
      callbackWhenInitialized(buttons);
    }
  });
}

renderComponent(); // вызываем сразу один раз, чтобы начальную страницу сынициализировать, в принципе потом и это можно будет убрать

from yasn.

sk1e avatar sk1e commented on September 2, 2024

Пардон, экземпляров тут действительно обычно больше 1, это выражение, их создающее, одно.
Спасибо за развернутый ответ)

from yasn.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.