12.03.2020, 22:12
|
|
Профессор
|
|
Регистрация: 03.02.2020
Сообщений: 2,693
|
|
Сообщение от Aetae
|
А можно с тем же успехом по старинке навешивать на элемент DOM некоторые дополнительные массивы данных... (буквально)
|
Навешивать прямо на DOM не хорошо. Нельзя в чужой объект пихать свои поля. Нет никакой гарантии, что когда-нибудь производитель браузера не введет туда поле с таким же именем.
Есть легенда, что тип Symbol появился как раз из за этого. Когда захотели ввести итераторы, то первая мысль была ввести в массивы и разные другие объекты служебное поле iterator (ну как есть length у разных объектов) Выяснилось, что существует довольно много библиотек, которые внедряют в прототипы стандартных объектов поля и методы с этим и другими именами. Пришлось вводить новый тип, который гарантированно никто не использует.
|
|
12.03.2020, 22:14
|
|
Профессор
|
|
Регистрация: 20.12.2009
Сообщений: 1,714
|
|
Сообщение от Aetae
|
А можно с тем же успехом по старинке навешивать на элемент DOM некоторые дополнительные массивы данных...
|
И не «по старинке» тоже...
const array = Symbol();
node[array] = [];
Сообщение от voraa
|
Нет никакой гарантии, что когда-нибудь производитель браузера не введет туда поле с таким же именем.
Есть легенда, что тип Symbol появился как раз из за этого.
|
Да, тип Symbol именно для этого и предназначен!
Сообщение от micscr
|
Заметил, что в bootstrap, jQuery, vuejs всё ещё используются var, т.е. они в стиле ES5 написаны.
|
Объявление переменных при помощи var было доступно как в ES3, так и доступно до сих пор в ES2020. Конечно в большинстве случаев вам достаточно let с его блочной видимостью, однако когда вам не нужна блочная видимость, то как раз подходит var — например, два последовательных цикла, второй из которых использует переменные инициализированные (при помощи var) в первом цикле.
Сообщение от Белый шум
|
лично я придерживаюсь мнения, что нет смысла терять 5% посетителей ради них. Они привносят лишь небольшое удобство, которое даёт профит только на больших проектах, а на стандартных сайтах и с var нормально живётся.
|
Если у вас долгоиграющий проект, то у вас был сайт (например, написанный в одну кучу на PHP), а теперь вы, например, хотите сделать его как «одностраничное» приложение (SPA). Не спешите разрушать или дефрагментировать диски со старым проектом, вы можете его перенести с https://example.com/ на https://example.com/olddesign. А по адресу https://example.com/ разместить свой новый проект, в котором будет проверка на нужные API, в случае их отсутствия, будет перенаправление на https://example.com/olddesign.
Сообщение от voraa
|
Многие вещи и бабель не разжевывает.
Например, всякие прокси.
Про теневой дом, не знаю, я им не пользуюсь, но сомневаюсь.
Ну и при многих фичах от CSS бабель тоже бессилен.
|
А если проект совсем новый, то и беспокоится не о чем... 😂 😂 😂 ни у кого из пользователей нет опыта работы с приложением через старый браузер, так что вы можете им спокойно продавать теорию о том, что нужен новый браузер! Поверьте, они купятся и скачают! 😉
|
|
12.03.2020, 22:15
|
|
Профессор
|
|
Регистрация: 03.02.2020
Сообщений: 2,693
|
|
Тут недавно дошло до смешного. Написал довольно большой модуль (т.к. мы можем в своей работе не думать про всякие ИЕ и прочее старье) то использовал те возможности, которые считал более удобными. Решил его минифицировать с помощью гугл клаши.
Не тут то было. Выдает ошибку за ошибкой. Оказывается клаша не распознает синтаксис полей классов, которые были введены еще в 72-ом Хроме (а сейчас уже 80-й)
|
|
12.03.2020, 22:23
|
|
Профессор
|
|
Регистрация: 03.02.2020
Сообщений: 2,693
|
|
Сообщение от Malleys
|
И не «по старинке» тоже...
const array = Symbol();
node[array] = [];
|
Ну не красиво. Запариваешся эти скобки постоянно писать.
К тому же иногда думаешь об оптимизации (хотя по большому выигрыш, наверно, в наносекундах)
V8 при оптимизации многие функции компилирует в машинный код. При выполнении ряда условий. Например вызов этой функции должен всегда происходить с параметрами одного типа. Как выяснилось если параметр объект, то {а: , b: }, {a:, b:, c:}, {b:, a:} - это уже разные типы
|
|
12.03.2020, 22:27
|
|
Профессор
|
|
Регистрация: 20.12.2009
Сообщений: 1,714
|
|
Сообщение от voraa
|
которые были введены еще в 72-ом Хроме (а сейчас уже 80-й)
|
А ещё когда-то в «Кроум» (Chrome — это вам не «Хроме») были введены HTML imports, которые потом были благополучно выпилены. Не всё, что есть в Chrome — стандартизировано, и соответственно может исчезнуть! Полей классов не было в ECMAScript2019, соответственно и не поддерживается в Closure Compiler.
Поля классов даже в этом году скорей всего не войдут в стандарт!
Сообщение от voraa
|
Ну не красиво. Запариваешся эти скобки постоянно писать.
|
Это стандартный синтаксис для определения поля при помощи символа. Тоже самое вам придётся сделать, если имя вычисляемое!
Последний раз редактировалось Malleys, 12.03.2020 в 22:29.
|
|
12.03.2020, 22:52
|
|
Тлен
|
|
Регистрация: 02.01.2010
Сообщений: 6,480
|
|
Сообщение от Malleys
|
И вообще какие мотивы движут людьми, которые напишут что-то на TypeScript и дают имени файла расширение .js (вместо .ts)?
|
Это называется Flow. Это не TypeScript, это javascript с простенькими типами.
Сообщение от Malleys
|
Какая ложная аналогия! Вы вполне можете писать на стандартном JS и всё нормально будет работать.
|
Ну так и без штанов я ходить могу, только неловко как-то.
Сообщение от voraa
|
Решил его минифицировать с помощью гугл клаши.
|
Потому что никто его не использует давно.
Сообщение от voraa
|
Ну не красиво. Запариваешся эти скобки постоянно писать.
|
А методы(со скобками) у WeakMap не запариваешься писать?
__________________
29375, 35
|
|
12.03.2020, 23:22
|
|
Профессор
|
|
Регистрация: 20.12.2009
Сообщений: 1,714
|
|
Сообщение от Aetae
|
Ну так и без штанов я ходить могу, только неловко как-то.
|
Так я и написал, что такая аналогия ложная, т. е. неправильная, обманчивая, не относящаяся к действительности! Почему написание не на TS должно сравниваться с нудизмом — совершенно неясно!
Сообщение от Aetae
|
Потому что никто его не использует давно.
|
Оно используется в Google Search, Gmail, Google Maps совместно с библиотекой Closure Library.
Сообщение от Aetae
|
это javascript с простенькими типами.
|
Кого вы обманываете? Flow — так Flow, только сам по себе он не будет работать в браузере, а значит это не JS. Я не против новых языков, но как-то странно выходит, когда требуют в вакансии JS, а на деле нужно знать TS, или как вы написали — Flow.
Сообщение от voraa
|
Запариваешься эти скобки постоянно писать.
|
Массив можно записать в константу...
const array = Symbol();
const data = node[array] = [];
/* работа с массивом */
data.push(1, 2, 3);
data.length = 0;
Сообщение от Белый шум
|
Изначально решаете какие браузеры начиная с какой версии ваш сайт должен поддерживать и потом всё время сверяйтесь с кнаю́c.
|
Даже такая проверка не отменяет «прогрессирующее улучшение» или «изящную деградацию» (progressive enhancement or graceful degradation)
Сообщение от Белый шум
|
кэн-ай-юз
|
Прямо как будто Барби 🍭 говорит —
Annoying Barbie: Ken, I use soap when I am washing my face.
Ещё радуют русские, которые путают по этой причине math с meth, bad с bed, sacks с sex и пр.
В натуре, ты же по русский не путаешь «чай» с «чей», «мяч» с «меч» или «пять» с «петь» и пр.
|
|
|
|