Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #41 (permalink)  
Старый 12.03.2020, 22:12
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,693

Сообщение от Aetae Посмотреть сообщение
А можно с тем же успехом по старинке навешивать на элемент DOM некоторые дополнительные массивы данных... (буквально)
Навешивать прямо на DOM не хорошо. Нельзя в чужой объект пихать свои поля. Нет никакой гарантии, что когда-нибудь производитель браузера не введет туда поле с таким же именем.
Есть легенда, что тип Symbol появился как раз из за этого. Когда захотели ввести итераторы, то первая мысль была ввести в массивы и разные другие объекты служебное поле iterator (ну как есть length у разных объектов) Выяснилось, что существует довольно много библиотек, которые внедряют в прототипы стандартных объектов поля и методы с этим и другими именами. Пришлось вводить новый тип, который гарантированно никто не использует.
Ответить с цитированием
  #42 (permalink)  
Старый 12.03.2020, 22:14
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 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 бабель тоже бессилен.
А если проект совсем новый, то и беспокоится не о чем... 😂 😂 😂 ни у кого из пользователей нет опыта работы с приложением через старый браузер, так что вы можете им спокойно продавать теорию о том, что нужен новый браузер! Поверьте, они купятся и скачают! 😉
Ответить с цитированием
  #43 (permalink)  
Старый 12.03.2020, 22:15
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,693

Тут недавно дошло до смешного. Написал довольно большой модуль (т.к. мы можем в своей работе не думать про всякие ИЕ и прочее старье) то использовал те возможности, которые считал более удобными. Решил его минифицировать с помощью гугл клаши.
Не тут то было. Выдает ошибку за ошибкой. Оказывается клаша не распознает синтаксис полей классов, которые были введены еще в 72-ом Хроме (а сейчас уже 80-й)
Ответить с цитированием
  #44 (permalink)  
Старый 12.03.2020, 22:23
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,693

Сообщение от Malleys Посмотреть сообщение
И не «по старинке» тоже...
const array = Symbol();
node[array] = [];

Ну не красиво. Запариваешся эти скобки постоянно писать.
К тому же иногда думаешь об оптимизации (хотя по большому выигрыш, наверно, в наносекундах)
V8 при оптимизации многие функции компилирует в машинный код. При выполнении ряда условий. Например вызов этой функции должен всегда происходить с параметрами одного типа. Как выяснилось если параметр объект, то {а: , b: }, {a:, b:, c:}, {b:, a:} - это уже разные типы
Ответить с цитированием
  #45 (permalink)  
Старый 12.03.2020, 22:27
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

Сообщение от voraa
которые были введены еще в 72-ом Хроме (а сейчас уже 80-й)
А ещё когда-то в «Кроум» (Chrome — это вам не «Хроме») были введены HTML imports, которые потом были благополучно выпилены. Не всё, что есть в Chrome — стандартизировано, и соответственно может исчезнуть! Полей классов не было в ECMAScript2019, соответственно и не поддерживается в Closure Compiler.

Поля классов даже в этом году скорей всего не войдут в стандарт!

Сообщение от voraa
Ну не красиво. Запариваешся эти скобки постоянно писать.
Это стандартный синтаксис для определения поля при помощи символа. Тоже самое вам придётся сделать, если имя вычисляемое!

Последний раз редактировалось Malleys, 12.03.2020 в 22:29.
Ответить с цитированием
  #46 (permalink)  
Старый 12.03.2020, 22:52
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,480

Сообщение от Malleys Посмотреть сообщение
И вообще какие мотивы движут людьми, которые напишут что-то на TypeScript и дают имени файла расширение .js (вместо .ts)?
Это называется Flow. Это не TypeScript, это javascript с простенькими типами.
Сообщение от Malleys Посмотреть сообщение
Какая ложная аналогия! Вы вполне можете писать на стандартном JS и всё нормально будет работать.
Ну так и без штанов я ходить могу, только неловко как-то.

Сообщение от voraa Посмотреть сообщение
Решил его минифицировать с помощью гугл клаши.
Потому что никто его не использует давно.

Сообщение от voraa Посмотреть сообщение
Ну не красиво. Запариваешся эти скобки постоянно писать.
А методы(со скобками) у WeakMap не запариваешься писать?
__________________
29375, 35
Ответить с цитированием
  #47 (permalink)  
Старый 12.03.2020, 23:22
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 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 и пр.

В натуре, ты же по русский не путаешь «чай» с «чей», «мяч» с «меч» или «пять» с «петь» и пр.

Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не пойму под какой лицензией распространяется Extjs kostiaGt ExtJS 11 23.09.2014 13:30
Webshtorm под линуксом. Отладка. eugenk Общие вопросы Javascript 2 09.01.2014 02:52
Вёрстка под Андроид..(и мобильные браузеры.) Mike_Kharkov (X)HTML/CSS 7 07.07.2013 14:47
Под какой лицензией публиковать свой код kichSman Общие вопросы Javascript 7 07.05.2012 01:47
Зависают браузеры под masOS X Falcon Общие вопросы Javascript 8 11.11.2010 23:14