HTML, CSS, JavaScript и все, все, все
От: Lazytech Ниоткуда  
Дата: 20.06.20 16:06
Оценка: 42 (6) +1
В продолжение прошлогодней темы «Кому-нибудь требуется начинающий питонист в подмастерья?
Автор: Lazytech
Дата: 04.05.19
». За год с небольшим поднабрался теоретических знаний и кое-какого практического опыта по части фронтенда.

К примеру, за последние полторы недели по просьбе одного разработчика переделал веб-интерфейс клиентской части одной программы со связки JavaScript + jQuery + Bootstrap на Svelte + Bootstrap. Теперь исходники разбиты на небольшие модули Svelte (ES6+), из Bootstrap используется только CSS (bootstrap.min.css), а в конце для лучшей поддержки старых браузеров код транспилируется из ES6+ в ES5.

Не обошлось без мелких разочарований. Я сначала было прикрутил Sveltestrap (надстройка над Bootstrap, написанная на Svelte). Однако вскоре выяснилось, что верстка на выходе получается не совсем такой (а иногда совсем не такой), как при использовании оригинального Bootstrap. Кроме того, в некоторых случаях было затруднительно — если вообще возможно — прокинуть значения некоторых атрибутов. В общем, пришлось по большей части вернуть на место Bootstrap. А жаль, потому что HTML-разметка со Sveltestrap была лаконичной и выразительной (см. примеры под катом ниже).

  Bootstrap vs Sveltestrap
Сравните:

Modal · Bootstrap
<div class="modal" tabindex="-1" role="dialog">
  <div class="modal-dialog" role="document">
    <div class="modal-content">
      <div class="modal-header">
        <h5 class="modal-title">Modal title</h5>
        <button type="button" class="close" data-dismiss="modal" aria-label="Close">
          <span aria-hidden="true">&times;</span>
        </button>
      </div>
      <div class="modal-body">
        <p>Modal body text goes here.</p>
      </div>
      <div class="modal-footer">
        <button type="button" class="btn btn-primary">Save changes</button>
        <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
      </div>
    </div>
  </div>
</div>


Components – Modals ⋅ Storybook
<div>
  <Button color="danger" on:click={toggle}>
    Open Modal
  </Button>
  <Modal isOpen={open} {toggle}>
    <ModalHeader {toggle}>Modal title</ModalHeader>
    <ModalBody>
      Lorem ipsum dolor sit amet, consectetur adipisicing elit,
      sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
    </ModalBody>
    <ModalFooter>
      <Button color="primary" on:click={toggle}>
        Do Something
      </Button>
      <Button color="secondary" on:click={toggle}>
        Cancel
      </Button>
    </ModalFooter>
  </Modal>
</div>


По ходу работы не раз и не два возникали проблемы как с логикой, так и с версткой. Я их по большей части решил либо обошел — привет StackOverflow, Mozilla Developers Network, Google Developers и иже с ними.

Переработанное приложение, как и оригинальное, работает и на десктопе, и на мобилах (пока только на Android; для поддержки iOS, возможно, еще придется повозиться, хотя в онлайн-эмуляторе уже малость потестировал).

Добавлю, что недавно еще попробовал поработать с Node.js. Оказалось, что на деле Node чуть ли не проще, чем Python, хотя, казалось бы. Кстати, Python я тоже вспомнил. Написал на нем простенький веб-парсер для своих нужд, а совсем недавно — небольшой текстовый парсер по просьбе одного опытного разработчика (больше для оценки моих способностей, поскольку он наверняка знает Python гораздо лучше меня).

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

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


P.S. Немного потестировал переработанную мною и оригинальную версии вышеупомянутого веб-приложения на мобильных версиях Safari и Chrome для iOS, воспользовавшись этими сайтами:

https://browserstack.com/ — навороченный платный сервис; на разовую пробу каждой виртуальной модели Apple дается ограниченное время.

http://www.responsinator.com/ — очень неплохой бесплатный сервис; при желании можно материально поддержать разработчиков («угостить пивом»); разработчики предупреждают, что у этого способа тестирования есть свои ограничения.

Обе версии приложения работают одинаково хорошо. К сожалению, у обеих версий не работает переход в полноэкранный режим (браузер в Browserstack выдает alert "not supported", а браузер в Responsinator молча игнорирует нажатие кнопки перехода в полноэкранный режим). Оказывается, это не баг, а фича нормальное поведение мобильных браузеров на iOS (речь идет как о Safari, так и о Chrome), а вот на Android всё работает как часы. В итоге пришлось сделать для iOS псевдополноэкранный режим, потому что других вариантов без отказа от единого UI так и не придумал.

Поправка: оказывается, тестировался только оригинальный код. Эх, поздно заглянул в Dev Tools...


P.P.S. У меня также есть небольшой опыт работы с фреймворком Vue.js, который в чем-то похож на Svelte по функционалу, синтаксису и структуре модулей.

Когда-то я думал, что Svelte — один из самых простых JavaScript-фреймворков с точки зрения фронтенд-разработчика (даже проще, чем Vue). Однако после использования Svelte в нескольких небольших проектах я переменил свое мнение.

Дело в том, что модули .vue используются в простейшем случае можно использовать как есть путем подключения библиотеки Vue.js (Development Version или Production Version), а модули .svelte обязательно компилируются и вдобавок иногда пропускаются через транспилятор вроде babel для обеспечения совместимости со старыми браузерами. Поэтому при использовании Svelte не обойтись без Node.js и бандлера вроде rollup или webpack, что несколько повышает порог входа по сравнению с Vue.


P.P.P.S. Дублирую ссылку на свой профиль на Codewars:
https://www.codewars.com/users/Lazyt3ch

По состоянию на 15 августа 2020 года Rank 3 kyu, Honor 1854.
Для достижения этого уровня мне понадобилось 25 дней.
Отредактировано 15.08.2020 4:24 Lazytech . Предыдущая версия . Еще …
Отредактировано 24.06.2020 3:12 Lazytech . Предыдущая версия .
Отредактировано 23.06.2020 7:49 Lazytech . Предыдущая версия .
Отредактировано 23.06.2020 6:37 Lazytech . Предыдущая версия .
Отредактировано 23.06.2020 5:38 Lazytech . Предыдущая версия .
Отредактировано 23.06.2020 5:27 Lazytech . Предыдущая версия .
Отредактировано 22.06.2020 5:30 Lazytech . Предыдущая версия .
Отредактировано 22.06.2020 3:21 Lazytech . Предыдущая версия .
Отредактировано 22.06.2020 3:14 Lazytech . Предыдущая версия .
Re: HTML, CSS, JavaScript и все, все, все
От: Михaил  
Дата: 23.06.20 06:06
Оценка: 15 (1)
L>Дело в том, что модули .vue используются как есть путем подключения библиотеки Vue.js (Development Version или Production Version), а модули .svelte обязательно компилируются и вдобавок иногда пропускаются через транспилятор вроде babel для обеспечения совместимости со старыми браузерами. Поэтому при использовании Svelte не обойтись без Node.js и бандлера вроде rollup или webpack, что несколько повышает порог входа по сравнению с Vue.

Это как? вью точно так же пропускают через транспилер, кроме самых простейших случаев
Re[2]: HTML, CSS, JavaScript и все, все, все
От: Lazytech Ниоткуда  
Дата: 23.06.20 06:31
Оценка:
Здравствуйте, Михaил, Вы писали:

М>Это как? вью точно так же пропускают через транспилер, кроме самых простейших случаев


Я так понимаю, любой ES6+ можно прогнать через транспилятор, однако в случае Svelte, помимо опциональной транспиляции, обязательно делается еще и компиляция (термин, наверное, условный). То есть в простейшем случае использовать Svelte, наверное, будет несколько сложнее Vue.

Спасибо за поправку. В том небольшом проекте на Vue, в котором я поучаствовал, транспилятор не использовался, поскольку предполагалось, что у пользователей будет свежая версия десктопного Chrome, и никак иначе.
Отредактировано 23.06.2020 6:40 Lazytech . Предыдущая версия . Еще …
Отредактировано 23.06.2020 6:33 Lazytech . Предыдущая версия .
Re[3]: HTML, CSS, JavaScript и все, все, все
От: Lazytech Ниоткуда  
Дата: 29.06.20 08:23
Оценка:
Справедливости ради сообщаю, что мне так и не удалось добиться работы на iOS переделанной мною версии вышеупомянутого веб-приложения. За меня это сделал гораздо более опытный разработчик, о чем он рассказал здесь
Автор: Michael
Дата: 26.06.20
, заодно высказав свое мнение о моих невеликих способностях. Не буду вдаваться в подробности, но отчасти я с ним согласен.

P.S. Если кому-то интересно, справедливости ради — куда уж без нее — могу рассказать, что и как я сделал в ходе работы над тем проектом. Ссылку на Github-репозиторий не приведу, поскольку он закрыт от посторонних глаз и там есть не только мой код, но могу показать фрагменты своего кода, написанного без посторонней помощи. К примеру, я добавил npm-библиотеку для конвертации мелких картинок в формат base64 со встраиванием их в HTML-код на этапе сборки проекта, чего не было в оригинальном коде.
Отредактировано 30.06.2020 7:45 Lazytech . Предыдущая версия . Еще …
Отредактировано 30.06.2020 7:44 Lazytech . Предыдущая версия .
Отредактировано 29.06.2020 8:24 Lazytech . Предыдущая версия .
Re: HTML, CSS, JavaScript и все, все, все
От: The Minister Земля  
Дата: 15.08.20 05:49
Оценка: 12 (1) :)
Здравствуйте, Lazytech, Вы писали:

Начал бы пилить свое первое шароварное приложение. ИМХО самый быстрый путь к первым деньгам.
Re[2]: HTML, CSS, JavaScript и все, все, все
От: Lazytech Ниоткуда  
Дата: 15.08.20 05:49
Оценка:
Здравствуйте, The Minister, Вы писали:

TM>Начал бы пилить свое первое шароварное приложение. ИМХО самый быстрый путь к первым деньгам.


Мсье изволит шутить.
Re[3]: HTML, CSS, JavaScript и все, все, все
От: _AND Российская Империя За Русский мир! За Русь святую!
Дата: 15.08.20 07:17
Оценка: 12 (1) :)
TM>>Начал бы пилить свое первое шароварное приложение. ИМХО самый быстрый путь к первым деньгам.

L>Мсье изволит шутить.


Чаще всего эти деньги это от $50 до $100 в месяц. Но в главном он прав.
Re[3]: HTML, CSS, JavaScript и все, все, все
От: The Minister Земля  
Дата: 15.08.20 07:38
Оценка:
Здравствуйте, Lazytech, Вы писали:

L>Мсье изволит шутить.


Смог же разобраться в JavaScript за несколько месяцев, сможешь программить и на Qt (или тому подобное) — ненамного сложнее.
Re[4]: HTML, CSS, JavaScript и все, все, все
От: Lazytech Ниоткуда  
Дата: 15.08.20 07:44
Оценка:
Здравствуйте, _AND, Вы писали:

_AN>Чаще всего эти деньги это от $50 до $100 в месяц. Но в главном он прав.


Сильно подозреваю, что при моих-то знаниях в области программирования, а также в области маркетинга и бизнеса каждый месяц буду в минусе.
Re[4]: HTML, CSS, JavaScript и все, все, все
От: Lazytech Ниоткуда  
Дата: 15.08.20 07:45
Оценка:
Здравствуйте, The Minister, Вы писали:

TM>Смог же разобраться в JavaScript за несколько месяцев, сможешь программить и на Qt (или тому подобное) — ненамного сложнее.


Если я буду и дальше прыгать с одного ЯП на другой и с одной технологии на другую...
Re[5]: HTML, CSS, JavaScript и все, все, все
От: Lazytech Ниоткуда  
Дата: 23.09.20 14:18
Оценка:
Освоил основы самого популярного JS-фреймворка React. Оказывается, он не так страшен, как малюют (по крайней мере, если не использовать библиотеки вроде Redux, в которые я пока не совался). Ах да, React не фреймворк, а библиотека.
Re[6]: HTML, CSS, JavaScript и все, все, все
От: vsb Казахстан  
Дата: 01.10.20 10:27
Оценка: 4 (1)
Здравствуйте, Lazytech, Вы писали:

L>Освоил основы самого популярного JS-фреймворка React. Оказывается, он не так страшен, как малюют (по крайней мере, если не использовать библиотеки вроде Redux, в которые я пока не совался). Ах да, React не фреймворк, а библиотека.


Redux вообще простой. Понять за 5 минут можно. Вот только как в итоге это всё правильно использовать на практике — совсем другой вопрос. Там Redux и поверх него обычно ещё накручивают миллион библиотек, вот с ними голова кругом идёт порой.
Re[7]: HTML, CSS, JavaScript и все, все, все
От: Lazytech Ниоткуда  
Дата: 01.10.20 10:48
Оценка:
Здравствуйте, vsb, Вы писали:

vsb>Redux вообще простой. Понять за 5 минут можно. Вот только как в итоге это всё правильно использовать на практике — совсем другой вопрос. Там Redux и поверх него обычно ещё накручивают миллион библиотек, вот с ними голова кругом идёт порой.


Вроде бы в простых случаях, начиная с React 16.8, можно не использовать Redux, а обойтись useReducer.
Re[8]: HTML, CSS, JavaScript и все, все, все
От: vsb Казахстан  
Дата: 01.10.20 10:51
Оценка:
Здравствуйте, Lazytech, Вы писали:

vsb>>Redux вообще простой. Понять за 5 минут можно. Вот только как в итоге это всё правильно использовать на практике — совсем другой вопрос. Там Redux и поверх него обычно ещё накручивают миллион библиотек, вот с ними голова кругом идёт порой.


L>Вроде бы в простых случаях, начиная с React 16.8, можно не использовать Redux, а обойтись useReducer.


Да я бы вообще его не использовал, там же можно через state всё прокидывать. Видел, как так делали и нормально, работает. Писанины много, зато всё понятно, что куда. Но тут порой не ты же выбираешь, что использовать.

Хотя конечно у Redux есть свои уникальные фишки вроде hot reload, который прогоняет все действия, time travel. Может быть я и не прав.
Re[9]: HTML, CSS, JavaScript и все, все, все
От: Lazytech Ниоткуда  
Дата: 01.10.20 10:56
Оценка:
Здравствуйте, vsb, Вы писали:

vsb>Да я бы вообще его не использовал, там же можно через state всё прокидывать. Видел, как так делали и нормально, работает. Писанины много, зато всё понятно, что куда. Но тут порой не ты же выбираешь, что использовать.


vsb>Хотя конечно у Redux есть свои уникальные фишки вроде hot reload, который прогоняет все действия, time travel. Может быть я и не прав.


https://www.robinwieruch.de/redux-vs-usereducer

Если что, у меня пока нет опыта использования React на практике даже в мелких проектах, да и в теории я плаваю мелко-мелко.
Re[10]: HTML, CSS, JavaScript и все, все, все
От: Lazytech Ниоткуда  
Дата: 10.12.20 09:49
Оценка:
В качестве пробы сил сделал на React небольшое веб-приложение, которое получает данные с сайта RandomUser.me и позволяет их просматривать:
https://reactjs-random-users-20201209.netlify.app/

С исходниками приложения можно ознакомиться здесь:
https://github.com/Lazyt3ch/reactjs-random-users

Поначалу пытался прикрутить Material UI, но оказалось, что зачастую проще взять за основу образцы кода, найденные где-нибудь на просторах Интернета (например, на сайте w3schools.com), и допилить под свои нужды. Свое предварительное мнение о Material UI я высказал здесь
Автор: Lazytech
Дата: 09.12.20
.

P.S. Прикрутил Material UI, поскольку, как подсказали знающие люди, приложение должно не только работать, но и выглядеть прилично.
Отредактировано 21.12.2020 5:55 Lazytech . Предыдущая версия .
Re[11]: HTML, CSS, JavaScript и все, все, все
От: Lazytech Ниоткуда  
Дата: 08.01.21 09:00
Оценка:
Перевел вышеупомянутый
Автор: Lazytech
Дата: 10.12.20
проект на TypeScript.
Re[11]: HTML, CSS, JavaScript и все, все, все
От: Ватакуси Россия  
Дата: 08.01.21 15:01
Оценка: -1 :))
https://github.com/Lazyt3ch/reactjs-random-users/blob/main/package-lock.json

16k строк?????????????????
Все будет Украина!
Re[12]: HTML, CSS, JavaScript и все, все, все
От: Lazytech Ниоткуда  
Дата: 08.01.21 15:29
Оценка:
Здравствуйте, Ватакуси, Вы писали:

В>16k строк?????????????????


К счастью, этот файл был сгенерирован автоматически.

P.S. Нашел кое-что по этой теме:

Why is my package-lock.json file typically so long? : node

package-lock.json vs package.json: But what the hell is package-lock.json? – DEV Community

P.P.S. Если кто-то ранее не имел дела с великим и ужасным JavaScript, можете склонировать мой проект с гитхаба и установить у себя Node.js. Если после этого зайти в папку проекта и выполнить команду npm install, то будет создана папка node_modules, в которую будут установлены все необходимые библиотеки. Если заглянуть в папку node_modules, сразу станет понятно, почему в файле package-lock.json так много строк.
Отредактировано 08.01.2021 15:50 Lazytech . Предыдущая версия . Еще …
Отредактировано 08.01.2021 15:37 Lazytech . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.