Изучить JS 2020
От: Aleksey82  
Дата: 31.10.20 10:40
Оценка:
Всем привет
По долгу службы надо с С++ переехать на java script. Сначала надо писать на нем UI для Electron electronjs.org, а потом что-то делать на React. Вероятно еще придется править V8 Engine — опенсорсный движок JavaScript на С++.

Что бы вы посоветовали оптимально почитать\посмотреть, чтобы побыстрее освоить JS, и не слишком поверхностно. Т.е. что будет оптимально по отношению время\знания на старте?
Re: Изучить JS 2020
От: Je suis Mamut  
Дата: 31.10.20 10:42
Оценка:
A>Вероятно еще придется править V8 Engine — опенсорсный движок JavaScript на С++.

а можно чуть подробнее об этом?
Re[2]: Изучить JS 2020
От: Aleksey82  
Дата: 31.10.20 10:45
Оценка:
JSM>а можно чуть подробнее об этом?

Я пока сам точно не знаю. Это я с chromium работаю, на его базе обычно делают какой-то "свой браузер" и есть какой-то план чтобы добавить некую "дополнительную" функциональность (объекты?) и сделать их доступными в этом форке. В общем, я хз) Но для начала надо хоть понимать с чем я вообще работаю, а я туда два раза лазил и все.
Re: Изучить JS 2020
От: Lazytech Ниоткуда  
Дата: 31.10.20 11:09
Оценка: 10 (2) +1
Здравствуйте, Aleksey82, Вы писали:

A>Что бы вы посоветовали оптимально почитать\посмотреть, чтобы побыстрее освоить JS, и не слишком поверхностно. Т.е. что будет оптимально по отношению время\знания на старте?


Я бы порекомендовал начать с этого:

https://www.youtube.com/watch?v=Bv_5Zv5c-Ts

Это вводный курс, где говорится об уже устаревшем ES5, тогда как сейчас в ходу ES6+, зато автор раскладывает всё по полочкам.

P.S. О современных версиях JavaScript и их отличиях от ES5, по-моему, хорошо рассказывает Kyle Simpson.

И, наконец, весьма полезный источник информации о JavaScript:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference

P.S. Еще несколько толковых англоязычных каналов на YouTube:

Fireship

Steve Griffith

Web Dev Simplified
Отредактировано 31.10.2020 13:57 Lazytech . Предыдущая версия . Еще …
Отредактировано 31.10.2020 11:16 Lazytech . Предыдущая версия .
Отредактировано 31.10.2020 11:15 Lazytech . Предыдущая версия .
Отредактировано 31.10.2020 11:11 Lazytech . Предыдущая версия .
Re[3]: Изучить JS 2020
От: bnk СССР http://unmanagedvisio.com/
Дата: 31.10.20 11:55
Оценка:
Здравствуйте, Aleksey82, Вы писали:

JSM>>а можно чуть подробнее об этом?


A>Я пока сам точно не знаю. Это я с chromium работаю, на его базе обычно делают какой-то "свой браузер" и есть какой-то план чтобы добавить некую "дополнительную" функциональность (объекты?) и сделать их доступными в этом форке. В общем, я хз) Но для начала надо хоть понимать с чем я вообще работаю, а я туда два раза лазил и все.


До форка и правки кода v8 от этого вроде далеко как до луны
Можно посмотреть в сторону node-ffi, node addon, если хочешь вызывать свои функции на c++.
Но вообще электрон создавался для того, чтобы убрать зависимость от платформы.
Твре приложение планируется запускать на лиуксе, маке, винде? А твои обьекты тоже доступны на этих платформах?
Re[4]: Изучить JS 2020
От: Aleksey82  
Дата: 31.10.20 12:04
Оценка:
bnk>Твре приложение планируется запускать на лиуксе, маке, винде? А твои обьекты тоже доступны на этих платформах?

Что там планируется править в V8 я еще не знаю. Электрон используется для быстрого прототипирования в другом месте. Там требуется прокидывать функциональность из С++ ядра (хромиума) в java script, там все более-менее понятно, за исключением что я js не знаю.
Re: Изучить JS 2020
От: The Minister Земля  
Дата: 31.10.20 12:35
Оценка:
Здравствуйте, Aleksey82, Вы писали:

A>Что бы вы посоветовали оптимально почитать\посмотреть, чтобы побыстрее освоить JS, и не слишком поверхностно. Т.е. что будет оптимально по отношению время\знания на старте?


Присоединяюсь к вопросу, но желательно на русском.
Re[2]: Изучить JS 2020
От: Lazytech Ниоткуда  
Дата: 31.10.20 13:48
Оценка:
Здравствуйте, The Minister, Вы писали:

TM>Присоединяюсь к вопросу, но желательно на русском.


На YouTube есть некий Владилен Минин, вроде толково излагает материал. Но, по-моему, это все-таки перепевки.

А на сайте MDN есть информация на русском языке:
https://developer.mozilla.org/ru/docs/Web/JavaScript
Отредактировано 31.10.2020 13:50 Lazytech . Предыдущая версия .
Re[5]: Изучить JS 2020
От: Mystic Artifact  
Дата: 31.10.20 19:32
Оценка: +1
Здравствуйте, Aleksey82, Вы писали:

A>Там требуется прокидывать функциональность из С++ ядра (хромиума) в java script, там все более-менее понятно, за исключением что я js не знаю.

Это делается исключительно за счет публичного апи V8. Можно подсмотреть в том же хроме в blink как экспортируются нативные API. Можно и в документации V8. Сам V8 трогать для этого не нужно. Да и противопоказано, т.к. форки надо потом поддерживать.
Re[5]: Изучить JS 2020
От: PM  
Дата: 31.10.20 20:08
Оценка: 78 (1)
Здравствуйте, Aleksey82, Вы писали:

bnk>>Твре приложение планируется запускать на лиуксе, маке, винде? А твои обьекты тоже доступны на этих платформах?


A>Что там планируется править в V8 я еще не знаю. Электрон используется для быстрого прототипирования в другом месте. Там требуется прокидывать функциональность из С++ ядра (хромиума) в java script, там все более-менее понятно, за исключением что я js не знаю.


Как-то немного сумбурно у вас. Про современный JavaScript не скажу, это наверно нужно гуглить про EcmaScript.

V8 это один из интерпретаторов (+JIT компилятор) JavaScript, который можно встроить в свое С++ приложение, если нужно вызывать JavaScript код из C++, или наоборот. Никакой библиотеки, привычной веб-разработчиками с V8 не идёт, нет даже console.log(). Актуальная doxygen документация к V8 API находится на https://v8docs.nodesource.com

Есть Node.js = V8 + асинхронный ввод/вывод, сокеты, плюс куча полезных библиотек, написанных как на С++, так и на JavaScipt; можно писать свои. Используется в серверной части современного веба.

Chromium = V8 + HTTP клиент.

Electron = Node.js + Chromium, используется чтобы быстро превратить веб-приложение в десктопное. Раскрывая правую часть выражения, получаем что Electron = (V8 + async IO) + (V8 + HTML render). То есть, имеем в одном приложении 2 экземпляра V8, которым надо между собой взаимодействовать, что, к счастью, возможно.

Я сделал https://github.com/pmed/v8pp чтобы упростить работу с V8 из С++, ну и чтобы Node.js addons делать.

Сборка гугловских проектов из исходников (V8 или Chromium) — это отдельная тема, одним кликом не получится.
Re[6]: Изучить JS 2020
От: Aleksey82  
Дата: 31.10.20 21:09
Оценка:
Здравствуйте, PM, Вы писали:

Спасибо. Ну, вкратце, мне надо более-менее въехать в JS чтобы писать UI С плюсами и тд все нормально, там вопросов нет)
Re: Изучить JS 2020
От: Reset  
Дата: 31.10.20 22:58
Оценка: :)))
https://learn.javascript.ru/

Поймешь, что JS, как язык, начиная со стандарта 2015 не отличается от Python, а по количеству разработчиков и, соответственно, множеству и удобству библиотек и инфраструктуры далеко впереди Python (и, вообще, Python — отстой, его фанаты — ретрограды-старперы, кроме нескольких узких ниш, куда JS, пока, не пришел).

Потом поймешь, что языки с динамической типизацией — отстой (когда на входе функции не знаешь тип переменной — это неудобно, потому что проще явно преобразовывать тип переменной, чем проверять его на входе) и начнешь мечтать об аннотациях или о TypeScript (который статический, но компилируется в JS, и на TS, кстати, написали очередной генератор парсеров, который генерит самый супербыстрый парсер HTTP для Node на C++, который быстрее предыдущего супербыстрого раза в 2).

Чтобы понять простоту, гибкость и мощь JS — напиши на нем сайт на node + Express. Express — лучшее, что сделали в софтостроительстве (но он во многом такой благодаря инфраструктуре Node.JS). Гибкость, мощь, простота, удобство, огромные возможности — такого нет ни в каком другом софте.
Re[2]: Изучить JS 2020
От: bnk СССР http://unmanagedvisio.com/
Дата: 01.11.20 16:58
Оценка: +3
Здравствуйте, Reset, Вы писали:

R> Express — лучшее, что сделали в софтостроительстве (но он во многом такой благодаря инфраструктуре Node.JS). Гибкость, мощь, простота, удобство, огромные возможности — такого нет ни в каком другом софте.


Вспомнился старый анекдот про Вовочку — Хочу жить в Советском Союзе!

Express удалось чего-то добиться за счет того что они первыми промисы прикрутили. А сейчас async/await почти в каждом языке есть, и тот же .net core порвет этот Express как тузик грелку, по всем параметрам.
Отредактировано 01.11.2020 17:01 bnk . Предыдущая версия .
Re[3]: Изучить JS 2020
От: Je suis Mamut  
Дата: 01.11.20 17:01
Оценка:
R>> Express — лучшее, что сделали в софтостроительстве (но он во многом такой благодаря инфраструктуре Node.JS). Гибкость, мощь, простота, удобство, огромные возможности — такого нет ни в каком другом софте.
bnk>Express удалось чего-то добиться за счет того что они первыми сделали async/await. А сейчас async/await почти в каждом языке есть, и тот же .net core порвет этот Express как тузик грелку, по всем параметрам.

интересно, какие такие возможности он в express нашел
в любом другом языке что-то похожее на экспресс называлось бы микрофреймворк, как мне кажется
Re[7]: Изучить JS 2020
От: bnk СССР http://unmanagedvisio.com/
Дата: 01.11.20 17:18
Оценка:
Здравствуйте, Aleksey82, Вы писали:

A>Здравствуйте, PM, Вы писали:


A>Спасибо. Ну, вкратце, мне надо более-менее въехать в JS чтобы писать UI С плюсами и тд все нормально, там вопросов нет)


В JS и учить-то особо нечего. Надо скорее не javascript учить, а фреймворк который будешь использовать для написания UI.
Надеюсь что ты не собираешься в 2020 году фигачить голый HTML и скрипты к нему на jQuery.

Самое ходовое — React. Еще есть Vue и Angular. Последний скорее корпоратив, и тебе скорее всего такое не надо.
Есть ReactNative на котором можно писать и десктопные приложения, может тебе тогда и Electron не понадобится.

Я бы рекомендовал взять курс какой на https://www.pluralsight.com/ например, если область для меня новая, мне например так удобнее.
Re[3]: Изучить JS 2020
От: Reset  
Дата: 01.11.20 18:59
Оценка: 12 (1) -1 :))
R>> Express — лучшее, что сделали в софтостроительстве (но он во многом такой благодаря инфраструктуре Node.JS). Гибкость, мощь, простота, удобство, огромные возможности — такого нет ни в каком другом софте.

bnk> Вспомнился старый анекдот про Вовочку — Хочу жить в Советском Союзе!


bnk>Express удалось чего-то добиться за счет того что они первыми промисы прикрутили. А сейчас async/await почти в каждом языке есть, и тот же .net core порвет этот Express как тузик грелку, по всем параметрам.


Нисколько не сомневаюсь, что в .net core есть async/await, но твой тузик зубы пообломает тягаться с Express в его нише по всем перечисленным мной параметрам. Собственно, потому .net'а и нет в той нише.

Простота. Начать с Node.JS и Express сильно проще, чем с .net. Тузик повизгивает, но все еще пыжится.

Мощь. Express позволяет начать с нуля довольно быстро и писать примитивные приложения в один файл .js. Также он позволяет писать довольно сложные приложения. Грубо говоря, любой другой фреймворк либо bottle.py, либо монстр Django. Express объединяет простоту одного и мощь другого. Уверен, в .net все еще хуже. Тузик снова обломался.

Гибкость. Express не навязывает единственно правильный подход к написанию больших приложений. Стиль раскладки файлов и используемые модули (ORM, например) ты выбираешь сам. При этом все стыкуется друг с другом гармонично. Попробуй к Django или рельсам прикрутить другой ORM и половину фреймворка ты использовать не сможешь. Вряд ли в .net ситуация сильно лучше. Тузик опять в пролете.

Удобство. Инфраструктура Node.JS не стала бы такой популярной без удобства. И не надо мне тут гнать стереотипную пургу про мух. Даже если бы вначале что-то было не удобно, миллионы разработчиков постоянно вкладывающиеся в развитие системы сделают инфраструктуру удобной (остальные решения просто не будут использовать). Это характерно для любой ниши, где много разработчиков (Java, Android, Node.JS). Миллионы человекочасов вложенные в развитие приводят к переписыванию и выкидыванию всего неудобного. Даже MS не сможет в одиночку тягаться с разработчиками JS. Тузик причмокивает.

Огромные возможности. Ну, если сравнить нишу, занимаемую нодой и .net, то твой тузик давно сдох.

Прозрачность.

Приведу пример. Тебе нужна авторизация в веб приложении. Ты знаешь, что она реализована через куки. В любом фреймворке, что я видел, тебе придется прочитать документацию, залезть в конфиг, что-то там настроить. При этом у тебя будет прослойка между куками на нижнем уровне и авторизацией, которую ты используешь и как это работает тебе будет не понятно. Затем влезть в документацию, чтобы начать использовать авторизацию. Если чего-то в документации нет, или тебе нужно что-то дополнительно, то ты в сложной ситуации, потому что придется разбираться с тем, как работает прослойка.

В Express, если тебе нужна авторизация, ты гуглишь про сессии, находишь модуль, подключаешь его (одна строка кода) и конфигурируешь его (еще одна строка в коде). В результате ты будешь четко понимать, как оно работает. Документации — первые два абзаца описания модуля. Если что-то нужно добавить — разберешься, потому что модуль все нужные данные навешивает на объект запроса и ты их можешь просмотреть глазами. Все просто, понятно как работает, понятно причем тут куки и где они хранятся, понятно как расширять... Ни один фреймворк за пределами node.js тебе такой простоты и понятности не даст.

Закапывай своего тузика.
Re[4]: Изучить JS 2020
От: takTak  
Дата: 01.11.20 19:22
Оценка:
R>В Express, если тебе нужна авторизация, ты гуглишь про сессии, находишь модуль, подключаешь его (одна строка кода) и конфигурируешь его (еще одна строка в коде).

не не так: выбираешь один из 20 точно таких же через жопу сделанных пакетов, пробуешь его,потом выкидываешь его, пробуешь следующий и т.д. всё это продолжается до тех пор, пока макаки, которые пишут фронтенд, пишут и бэкенд, чтобы капиталист мог сэкономить пару копеек на одной вместо двух позиций, в итоге получается полное говно, которое жрёт немеряно ресурсов, а макаки уже успели сбежать на другой проект

R>Закапывай своего тузика.


это капитализм, детка: поимей ближнего своего и вовремя слиняй
Re[4]: Изучить JS 2020
От: Reset  
Дата: 01.11.20 19:29
Оценка:
JSM>в любом другом языке что-то похожее на экспресс называлось бы микрофреймворк, как мне кажется

Express расширяется сколь угодно модулями Node.JS. А так как все, что написано на JS, рассчитано на использование в Node (иначе оно никому не нужно), то все эти модули довольно хорошо стыкуются друг с другом. При наличии пакетного менеджера это все делается элементарно. Никакой жестко навязанной архитектуры и выбранных компонентов. Разработчик сам решит, какой ORM или шаблонизатор использовать и как раскладывать файлы по папкам.

А Express мне понравился тем, что в любом другом фреймворке доступны либо элементарные вещи и там более менее понятно, как оно работает, либо монстр, в котором доступна конфигурация и дальше творится магия без понимания ее внутреннего устройства. С Express'ом доступна простота и прозрачность одновременно с безграничными возможностями расширения. Все делается просто (насколько это возможно) и удобно. При этом сам Express по сути элементарное приложение. Это тонкая прослойка над модулем http из Node.JS, который добавляет методы для реализации роутера и обработку ошибок. Обработка любого запроса делается цепочкой единообразных функций (при этом функция-обработчик от middleware ничем не отличается). Роутер тоже не накладывает требований использования "единственно правильной по мнению создателя фреймворка реализации REST". Потому что единственно правильного ничего не бывает. Express дает функции по количеству методов в HTTP и ты сам можешь реализовать любой роутер (для REST или своего собственного способа). Проще, наверное, придумать не возможно, но эти простые методы не ограничивают по возможностям.

В общем, Express сам простой и позволяет на нем писать просто. Никаких ненужных навязанных решений, потому что какой-то умник так решил. При этом он позволяет неограниченно расширяться и реализовать любое, сколь угодно сложное приложение.
Re[4]: Изучить JS 2020
От: Je suis Mamut  
Дата: 01.11.20 19:43
Оценка:
ну если ты такой чоткий — делись, какими модулями пользуешься
если прям очень много — хотя бы топчик
Re[5]: Изучить JS 2020
От: takTak  
Дата: 01.11.20 19:53
Оценка:
JSM>ну если ты такой чоткий — делись, какими модулями пользуешься
JSM>если прям очень много — хотя бы топчик

а толку-то? через 3 месяца, ну или максимум через полгода, все эти пакеты устареют, и этот список можно будет спокойно выкинуть на помойку

хотя зачем ждать полгода? можно сделать это сразу
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.