Comments (9)
если их убрать в конструктор то eslint мне будет ошибку показывать
from yasn.
Что за ошибка?
from yasn.
ошибка что созданный объект никак не используется
from yasn.
А ты его в переменную не записывай)
from yasn.
Тогда будет ругаться что никуда не записываю созданный объект)
from yasn.
Один из немногоих случаев, когда экземпляр объекта в дальнейшем не используется, но сам подход с классами оправдан, поэтому тут два варианта, либо убрать переменную и ретёрнить создаваемый экземпляр, либо заигнорить это правило (на этой же строке допиши коммент // eslint-disable-line no-new
), но глобально отключать это правило не стоит.
from yasn.
Возвращать нельзя это уже будет костыль с искажением семантики . Правило лучше... но тогда его нужно будет приписывать к каждому созданию экземпляра. Экземпляры для этих классов у нас везде создаются в единичном количестве и вероятность количества экземпляров больше 1 очень низкая. Таким образом, с точки зрения повторного использования вариант с комментом будет хуже того что уже используется у меня: вызов методов просто переместится в конструктор и везде появится прибавка в виде коммента.
Еще нельзя исключать что могут появится очень странные желания, скажем, отрендерить, но не привязывать пока события и тогда методы вообще нельзя будет перемещать в конструктор .
В общем я считаю все это очень спорным, относительным и зависимым от области будушего применения. Мне мой вариант, пока что, все-таки больше нравится и я не хочу его менять...
from yasn.
Тут есть несколько ньюансов, которые тоже надо учесть:
- Все таки экземпляры мы создаем много раз, например, для той же кнопки, если ее три штуки на странице, то и экземпляров будет три.
- Семантически тоже не совсем корректно кажется выносить навешивание событий и различные иниационные хуки за пределы конструктора, по логике это как раз при создании компоненты js должен сразу уметь делать, а так у нас API компоненты получается довольно странным - создай экземпляр, а потом еще вызови несколько методов, причем у разных компонент набор методов разный будет) еще интересно: мы, получается, делаем такое кривое API только потому что eslint ругается))
- Странные желания лучше обрабатывать специальными опциями в конструкторе, и в идеале эти опции документировать хотя бы на уровне комментария
- Есть вероятность, что вообще надо будет сделать экспорт всех инициализированных инстансов, тогда будет в конце каждой компоненты примерно такой код:
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.
Пардон, экземпляров тут действительно обычно больше 1, это выражение, их создающее, одно.
Спасибо за развернутый ответ)
from yasn.
Related Issues (20)
- Шрифт месяца в календаре
- В percentage цифры не по центру HOT 6
- Рамка в arrow-button должна быть толще
- Импорт глобальных констант в stylus
- тултип слайдера HOT 1
- Все классы, которые используем для поиска по DOM-у должны начинаться с префикса js-
- тег <buttton> в блоке search HOT 2
- Нет скруглений углов карты
- Файлы стилей
- Переполнение текстовых элементов
- По заданию все страницы должны быть responsive HOT 2
- Снова кнопка HOT 5
- Нет скруглений верхних углов карты
- Тултип юзер профайла HOT 11
- Имя в месседжере
- Переполнение news и events HOT 2
- Шрифт тултипа слайдера
- В messager'е при нажатии лкм не передается фокус текстовому полю и кнопке, соответственно не срабатывает click. HOT 1
- Пропустил в двух местах префикс js-. По issue #21 HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from yasn.