
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рд╢рд╛рдпрдж рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЬрд╛рдирддреЗ рд╣реИрдВ, рдХреЛрдгреАрдп рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрдИ рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдкрд░ рдореМрдЬреВрдж рд╣реИ:
рдЦреИрд░, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдпрд╣рд╛рдВ рдкрд░реНрдпрд╛рдкреНрдд рдбреЗрд╕реНрдХрдЯреЙрдк рдирд╣реАрдВ рдерд╛ (рдЪрд▓реЛ рдЕрднреА рддрдХ рдЗрд▓реЗрдХреНрдЯреНрд░реЙрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ)ред
рдбреЗрд╕реНрдХрдЯреЙрдк рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХрдИ рд╕рдорд╛рдзрд╛рди рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬрд╛рд╡рд╛рдПрдлрдПрдХреНрд╕, рдХреНрдпреВрдЯреА, рдбрдмреНрд▓реНрдпреВрдкреАрдПрдл рдЬреИрд╕реЗ рд╕рдорд╛рдзрд╛рдиред рдЙрдирдореЗрдВ рд╕реЗ рд╕рднреА, рдЕрдВрддрд┐рдо рдХреЛ рдЫреЛрдбрд╝рдХрд░, рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рд╣реИрдВред
рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рд╣рдо рдкрд░рд┐рдЪрд┐рдд рдврд╛рдВрдЪреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдФрд░ рдЙрд╕ рдкрд░ рдПрдХ рджреЗрд╢реА рдЖрд╡реЗрджрди рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ? рджрд░рдЕрд╕рд▓, рдореИрдВрдиреЗ рдпрд╣реА рдХрд┐рдпрд╛ рд╣реИред
рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рджреЗрдЦрд╛ рдХрд┐ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдХреНрдпрд╛ рдЙрдкрд▓рдмреНрдз рд╣реИ, рдФрд░ рдХреНрдпрд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХреЛрдгреАрдп рдХреЗ рддрд╣рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЗрд╕ рддрд░рд╣ рд╕реЗ рдореИрдВ рдпрд╣ рджрд┐рдЦрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдк рдХреЛрдгреАрдп рдкрд░ рдХреБрдЫ рднреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдХрдИ рд╡рд░реНрд╖реЛрдВ рд╕реЗ рдореИрдВ рдЙрд╕рдХреЗ рд▓рд┐рдП рд╕рднреА рддрд░рд╣ рдХреЗ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВ ред
рдЦреЛрдЬ
libui рдиреЛрдб
рдпрд╣ рдПрдХ рд╣рд▓реНрдХрд╛, рдкреЛрд░реНрдЯреЗрдмрд▓ рдЬреАрдпреВрдЖрдИ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИ рдЬреЛ рдкреНрд░рддреНрдпреЗрдХ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдХреЗ рд▓рд┐рдП рдЬреАрдпреВрдЖрдИ рдХреА рдореВрд▓ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рд▓рд╛рдн рдЙрдард╛рддрд╛ рд╣реИред рдпрд╣ рдЗрд▓реЗрдХреНрдЯреНрд░реЙрди рдХреЗ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд░реВрдк рдореЗрдВ рдЖрддрд╛ рд╣реИред
рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдЖрд╡реЗрджрди рдЙрджрд╛рд╣рд░рдг:
const win = new libui.UiWindow('Test window', 800, 600, false);
рд╣реБрдб рдХреЗ рддрд╣рдд, рдЙрд╕рдХреЗ рдкрд╛рд╕ рд╕рд╛рдзрд╛рд░рдг рд▓рд┐рдмреБрдИ рдмрд╛рдЗрдВрдбрд░реНрд╕ рд╣реИрдВред (libui: C рдХреЗ рд▓рд┐рдП рдПрдХ рдкреЛрд░реНрдЯреЗрдмрд▓ GUI рд▓рд╛рдЗрдмреНрд░реЗрд░реА)ред рдпрд╣ рд╕рдм рдиреЛрдб-рдЬрд┐рдк рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣реЛ рд░рд╣рд╛ рд╣реИ, рдПрдХ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдЬрд┐рд╕реЗ Node.js. рдХреЗ рд▓рд┐рдП рджреЗрд╢реА рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред libui- рдиреЛрдб рдореЗрдВ 30 рд╕реЗ рдЕрдзрд┐рдХ рддреИрдпрд╛рд░ рдШрдЯрдХ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ, рдФрд░ рдпрджрд┐ рдЖрдк рдЕрдЪрд╛рдирдХ рдХреБрдЫ рдХрд╕реНрдЯрдо рдмрдирд╛рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓реЗрддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рд╕реА рдореЗрдВ рдХреЛрдб рдореЗрдВ рдЧреЛрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рдФрд░ рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдШрдЯрдХ рд╕реНрд╡рдпрдВ 2 рд╕рд╛рд▓ рдкрд╣рд▓реЗ рд▓рд┐рдЦреЗ рдЧрдП рдереЗ, рдФрд░ рддрдм рд╕реЗ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ред рд╢рд╛рдпрдж рд╕рдм рдХреБрдЫ рдЗрддрдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реИ рдХрд┐ рдмрджрд▓рд╛рд╡ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдпреЗ 30 рдШрдЯрдХ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИрдВ, рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ, рдпрд╛ рдХрд┐рд╕реА рдХреЛ рднреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
рдареАрдХ рд╣реИ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╕рдорд╛рдкреНрдд рдЖрд╡реЗрджрди рдЗрд╕ рддрд░рд╣ рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ:
libui рдиреЛрдб
рдкреНрд░реЛрдЯреЙрди-рджреЗрд╢реА рдФрд░ рд╡реБрдЗрдбреЛ
рдФрд░ рдпрд╣рд╛рдБ рдпрд╣ рдереЛрдбрд╝рд╛ рдФрд░ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ, рдкреНрд░реЛрдЯреЙрди-рджреЗрд╢реА рдФрд░ рд╡реВрдбреЛ рдПрдХ рд╣реА рд▓рд┐рдмреНрдпреБ-рдиреЛрдб рд╣реИ, рдЬреЛ рдХреЗрд╡рд▓ рд░рд┐рдПрдХреНрдЯ рдФрд░ рд╡реАрдпреВ рдХреЗ рддрд╣рдд рд╣реИред рд╕рдВрдмрдВрдзрд┐рдд рдЖрд╡рд░рдг рд▓рд┐рдмрдИ-рдиреЛрдб рдХреЗ рдШрдЯрдХреЛрдВ рдХреЗ рддрд╣рдд рд▓рд┐рдЦреЗ рдЧрдП рд╣реИрдВред рдЧрд┐рдердм (9k рдФрд░ 6k) рдкрд░ рд╕рд┐рддрд╛рд░реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рдмрд╛рд╡рдЬреВрдж, рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рд▓рдЧрднрдЧ рдХреЛрдИ рднреА рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЙрди рд╕рднреА рдореЗрдВ рд╕реЗ рдЬреЛ рдореБрдЭреЗ рдорд┐рд▓ рд╕рдХрддреЗ рдереЗ, рдпреЗ рдмрд╣реБрдд рд╣реА рд╕рд░рд▓ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдереЗред рдПрдХ рдФрд░ рд╕рдорд╕реНрдпрд╛ рдЬреЛ рдореБрдЭреЗ рдкрддрд╛ рдЪрд▓реА рд╣реИ рд╡рд╣ рдпреВрдЖрдИ рдХреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдЕрдиреБрдХреВрд▓рди рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВ, рдпрд╣ рдХрд╛рдореЗрдЪреНрдЫрд╛ рдХреЗ рднреАрддрд░ рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИ, рдФрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓реЗрдЦрдХ рдХреНрдпреВрдЯреА рдореЗрдВ рд╕рдм рдХреБрдЫ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░ рд░рд╣реЗ рд╣реИрдВред
рд▓рд┐рдмреБрдИ рдЦреБрдж рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдХрд╛рдлреА рд▓реЛрдХрдкреНрд░рд┐рдп рд╣реИ, рдЙрддреНрд╕рд╛рд╣реА рд▓реЛрдЧреЛрдВ рдиреЗ рдЗрд╕реЗ php рдореЗрдВ рднреА рдЦреАрдВрдЪ рд▓рд┐рдпрд╛
рд╕рдорд╛рдкреНрдд рдЖрд╡реЗрджрди рдЗрд╕ рддрд░рд╣ рджрд┐рдЦ рд╕рдХрддрд╛ рд╣реИ:
рдкреНрд░реЛрдЯреЛрди-рджреЗрд╢реА
рдЕрдиреБрдХреВрд▓рди рдХреЗ рдмрд┐рдирд╛ рдПрдХ рдЙрдмрд╛рдК рдЗрдВрдЯрд░рдлрд╝реЗрд╕, рдЗрд╕рд▓рд┐рдП рдпрд╣ рд╡рд┐рдХрд▓реНрдк рддреБрд░рдВрдд рдЧрд╛рдпрдм рд╣реЛ рдЧрдпрд╛ред
рдпрд╛ рд╢рд╛рдпрдж рдХреНрдпреВрдЯреА рд▓реЗ?
рдХреНрдпреВрдЯреА, рдЬреЗрдПрд╕, рд╕реАрдПрд╕рдПрд╕
рдмреЗрд╢рдХ рдЖрдкрдиреЗ рдХреНрдпреВрдЯреА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реБрдирд╛ рд╣реИ, рдФрд░ рдпрд╣ рддрдереНрдп рдХрд┐ рдпрд╣ рд╣рд░ рдЬрдЧрд╣ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдмрд╣реБрддреЛрдВ рдиреЗ рдирд╣реАрдВ рд╕реБрдирд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЕрдм рдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде рдПрдХреАрдХреГрдд рд╣реИред QML рд╕рдВрдкрддреНрддрд┐ рдмрд╛рдЗрдВрдбрд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рдШреЛрд╖рдгрд╛рддреНрдордХ рдирд┐рд░реНрдорд╛рдг рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдореМрдЬреВрджрд╛ рдХреНрдпреВрдПрдордПрд▓ рддрддреНрд╡реЛрдВ рдХреА рдХреНрд╖рдорддрд╛ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рд╣реЛрддрд╛ рд╣реИред рдмреЗрд╢рдХ, рдпрд╣ рд╡реЗрдм рдкрд░ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдХрдареЛрд░ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИред рдЖрдк QML рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ ES5 рдХреЗ рд╕рдорд╛рди рдХреБрдЫ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЖрдкрдХреЗ рдкрд╛рд╕ DOM API рдирд╣реАрдВ рд╣реЛрдЧрд╛ред
рдмрд╕ рдПрдХ рддреНрд╡рд░рд┐рдд рдЯрд┐рдкреНрдкрдгреА, рдЖрдк C ++ рдХреЗ рддрд╣рдд Qt рдореЗрдВ рдХреИрд╕реЗ рд▓рд┐рдЦреЗрдВрдЧреЗ:
#include <QApplication> #include <QPushButton> int main(int argc, char *argv[]) { QApplication app(argc, argv); *// Important * QPushButton hello("Hello world!"); hello.resize(100, 30); hello.show(); return app.exec(); *// Important *}
Qml рдореЗрдВ рдЖрдкрдХрд╛ рдХреЛрдб рдХреИрд╕рд╛ рджрд┐рдЦ рд╕рдХрддрд╛ рд╣реИ:
Item { function factorial(a) { a = parseInt(a); if (a <= 0) return 1; else return a * factorial(a - 1); } MouseArea { anchors.fill: parent onClicked: console.log(factorial(10)) } }
рдЗрди рдШрдЯрдХреЛрдВ рдХреЛ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдХреНрдпреВрдПрдордПрд▓ рдореЗрдВ рдПрдХ рдмрдбрд╝реА рдкреНрд░рдХрд╛рд░ рдХреА рдкреНрд░рдгрд╛рд▓реА рднреА рд╣реИ, рдЬреЛ рдирд┐рд╕реНрд╕рдВрджреЗрд╣ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдпрд╣ рд╕рдм рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╕рдордп рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧреАред
рдЖрдк рдЖрд╕рд╛рдиреА рд╕реЗ рдШрдЯрдХреЛрдВ рдХреЛ рднреА рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
Reactangle { id: redRectId width: 50 color: red }
рд▓рдЧрднрдЧ рд╕реАрдПрд╕рдПрд╕, рд╣реИ рдирд╛?
рд╕рднреА рдХреЛ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ Qt рдЕрдзрд┐рдХрд╛рдВрд╢ рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдкрд░ рдХреНрдпрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рдФрд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ Node.js рд╣реЛрдЧрд╛
"рдиреЛрдбрдЬ + рдХреНрдпреВрдЯреА" рдХреА рдЦреЛрдЬ рдХрд░рддреЗ рд╕рдордп, рд╣рдо рддреБрд░рдВрдд рдиреЛрдб-рдХреНрдпреВрдЯреА рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдпрд╣ рддреБрд░рдВрдд рдЖрдВрдЦ рдХреЛ рдкрдХрдбрд╝рддрд╛ рд╣реИ рдХрд┐ рдЙрддреНрдкрд╛рдж рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдореГрдд рд╣реЛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдЖрдЦрд┐рд░реА рдмрд╛рд░ 8 рд╕рд╛рд▓ рдкрд╣рд▓реЗ рдЬреАрд╡рди рдХреЗ рд▓рдХреНрд╖рдг рджрд┐рдЦрд╛рдИ рджрд┐рдП рдереЗред
рдлрд┐рд░ рднреА, рдЦреЛрдЬ рдореЗрдВ рдЖрдк рдПрдХ рдмрд╣реБрдд рд╣реА рддрд╛рдЬрд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ - рдиреЛрдбреЗрдЧреБрдИред
NodeGui
рдЧреБрдИ рдХреЗ рд▓рд┐рдП рдХрдИ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреА рддрд░рд╣, рдХреНрдпреВрдЯреА рд╡рд┐рдЧреЗрдЯреНрд╕ рд╕реЗ рдШрдЯрдирд╛рдУрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рдИрд╡реЗрдВрдЯ / рд╕рдВрджреЗрд╢ рд▓реВрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЬрдм рд╣рдо рд╕рд╢рд░реНрдд рд░реВрдк рд╕реЗ app.exec () рдХрд╣рддреЗ рд╣реИрдВ, рддреЛ Qt рд╕рдВрджреЗрд╢ рд▓реВрдк рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рд╡рд╣рд╛рдВ рдЕрд╡рд░реБрджреНрдз рдХрд░рддрд╛ рд╣реИред рдпрд╣ рд╕рдм рдЕрдЪреНрдЫрд╛ рд╣реИ рдЬрдм рдкреВрд░реЗ рдЖрд╡реЗрджрди рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рд╕рдВрджреЗрд╢ рд▓реВрдк рд╣реИред рд▓реЗрдХрд┐рди рдЪреВрдБрдХрд┐ рд╣рдореЗрдВ NodeJs рдХреЗ рд╕рд╛рде Qt рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдФрд░ рдмрд╛рдж рдореЗрдВ рдЗрд╕рдХрд╛ рдЕрдкрдирд╛ рдИрд╡реЗрдВрдЯ рд▓реВрдк рднреА рд╣реЛрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рдЗрддрдиреА рдЖрд╕рд╛рдиреА рд╕реЗ рдПрдХреАрдХреГрдд рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИред рд▓реЗрдХрд┐рди рдЗрд╕ рддрд░рд╣ рдХреЗ рдирд┐рд░реНрдгрдп рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрд┐рдП рдЧрдП рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд▓реЗрдХреНрдЯреНрд░реЙрди рдпрд╛ рдпреЛрдб рдХреЗ рд╕рд╛рде рдПрдХ рд╣реА рдмрдВрдбрд▓ред рдЗрди рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреА рдЕрдкрдиреА рдЦрд╝рд╛рд╕рд┐рдпрдд рд╣реИ, рд╡реЗ рдХрдо рд╕реЗ рдХрдо 2 рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдмрдврд╝рд╛рддреЗ рд╣реИрдВ - рдореБрдЦреНрдп рдзрд╛рдЧреЗ рдХреЗ рд▓рд┐рдП, рдФрд░ рд░реЗрдВрдбрд░рд░ рдХреЗ рд▓рд┐рдПред рдЗрд╕рдХреЗ рдмрд╛рд╡рдЬреВрдж, рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд▓рд╛рдн рд╣реИ, NodeJs рдпрд╛ рдХреНрд░реЛрдорд┐рдпрдо рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
NodeGui рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╕реНрдерд┐рддрд┐ рдереЛрдбрд╝реА рдЕрд▓рдЧ рд╣реИ, рд╕рдм рдХреБрдЫ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣реИ, рдФрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рдмреАрдЪ рдШрдЯрдирд╛рдУрдВ рдХреЛ рдзреВрдорд┐рд▓ рдХрд░рдиреЗ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдЗрд╕рдХреЗ рд▓рд┐рдП рдиреЙрдбрдЬ рдХреЛ рдлреЛрд░реНрдХ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ - рдФрд░ рдХреНрдпреВрдЯреА рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рдмрд╛рдЗрдВрдбрд░реЛрдВ рдореЗрдВ рдорд╛рдореВрд▓реА рд╕реБрдзрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдФрд░ рдЕрдм рдЖрдкрдХреЛ рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣ main.js рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ qode main.js. рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╢реБрд░реВ рдХрд░рдиреА рд╣реЛрдЧреАред рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, qode рдХреЛ @ nggui / qode рдкреИрдХреЗрдЬ рдореЗрдВ npm рдореЙрдбреНрдпреВрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╣реИрд▓реЛ рджреБрдирд┐рдпрд╛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдХреБрдЫ рдФрд░ рдкреИрдХреЗрдЬреЛрдВ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдкреНрд░рддреНрдпреЗрдХ рдУрдПрд╕ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рд╡рд┐рд╡рд░рдг рдХреЗ рд▓рд┐рдП рдЖрдк рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ: https://docs.nodegui.org/docs/guides/getting-started
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдиреЛрдбрдЧрдИ рдореЗрдВ, рд╕рдм рдХреБрдЫ рдПрдХ рд╡рд┐рдЬреЗрдЯ рд╣реИ, рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╡рд┐рднрд┐рдиреНрди рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рдореЗрдВ рдЦрд░рд╛рдм рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдиреЛрдбрдЧрдИ рдореЗрдВ 2 рдкреНрд░рдХрд╛рд░ рдХреЗ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рд╣реИрдВ: рдлреНрд▓реЗрдХреНрд╕рд▓реИрдЯ рдФрд░ рдХреНрдпреВрдЧреНрд░рд┐рдб рд▓рдпрдЖрдЙрдЯред
рдиреЛрдбреНрдЧреБрдИ рдореЗрдВ рд╢реИрд▓рд┐рдпрд╛рдБ
рдлрд┐рд▓рд╣рд╛рд▓, рдЖрдк рд╡рд┐рдЬреЗрдЯреНрд╕ рдХреЛ рдЗрдирд▓рд╛рдЗрди рдФрд░ рд╕реНрдЯрд╛рдЗрд▓рд╢реАрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
widget.setInlineStyle(`color: green`) view.setStyleSheet(` `#helloLabel { color: red; padding: 10px; } #worldLabel { color: green; padding: 10px; } #rootView { background-color: black; } `);
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ Qt рд╕рднреА CSS2 рдЪрдпрдирдХрд░реНрддрд╛рдУрдВ ( https://doc.qt.io/qt-5/stylesheet-syntax.html#selector-types ) рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ
рдпрд╣ рд╕реНрдЯрд╛рдЗрд▓ рдШрдЯрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд╕реНрдЯрдо рдЧреБрдгреЛрдВ рдХреЗ рдмрд┐рдирд╛ рднреА рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдЗрд╕ рддрд░рд╣ рдХреЗ рдЧреБрдгреЛрдВ рдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХреНрдпреВрдЯреА рдХреЗ рдбреЙрдХреНрд╕ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рд╕реНрдЯреИрдХрдУрд╡рд░рдлреНрд▓реЛ рдкрд░ рдЪрдмрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред
*QPushButton* { qproperty-iconsize: 20px 20px; }
рдХреЛрдгреАрдп
рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓реЗрдЦрдХ рдиреЗ рдкрд╣рд▓реЗ рд╣реА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рд▓рд╛рдЧреВ рдХрд░ рджрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рд╣рд░ рдХреЛрдИ рдПрдВрдЧреБрд▓рд░ рдХреЗ рдЕрд╕реНрддрд┐рддреНрд╡ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреВрд▓ рдЧрдпрд╛ред
рдЬреИрд╕рд╛ рдХрд┐ рд╢реБрд░реБрдЖрдд рдореЗрдВ рдкрд╣рд▓реЗ рд╣реА рд▓рд┐рдЦрд╛ рдЬрд╛ рдЪреБрдХрд╛ рд╣реИ, рдХреЛрдгреАрдп рдЕрдзрд┐рдХрд╛рдВрд╢ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрднреА рддрдХ рдбреЗрд╕реНрдХрдЯреЙрдк рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдордВрдЪ рдирд╣реАрдВ рд╣реИред рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдП рдЧрдП рдФрд░ рд╕рдВрд░рдЪрд┐рдд рдПрдВрдЧреБрд▓рд░ рдПрдкреАрдЖрдИ рдХреЗ рдХрд╛рд░рдг, рдХреЛрдгреАрдп рдХреЗ рддрд╣рдд рдиреЛрдбрдЧреБрдИ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд░реЗрдВрдбрд░рд░ рдХреЗ рд╕рд╛рде рдПрдХ рдХрд╕реНрдЯрдо рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдордмреЙрд░реНрд╕реЗрдбрд░ рдбрд╛рдпрдирд╛рдорд┐рдХ рд▓рд┐рдЦрдиреЗ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдиреАрдЪреЗ рдЖрддрд╛ рд╣реИред
рд▓реЗрдХрд┐рди рдпрд╣ рд╕рдм рдЕрдВрджрд░ рд╕реЗ рдмрд╛рд╣рд░ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ?
рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рд╕рд╢рд░реНрдд main.ts рд╣реИ, рдФрд░ рд╣рдо рдЗрд╕рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░реЗрдВрдЧреЗред
рдмреВрдЯ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рджреЛ рднрд╛рдЧ рд╣реЛрддреЗ рд╣реИрдВ: рдПрдХ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдмрдирд╛рдирд╛ рдФрд░ рдЙрд╕рдореЗрдВ рдПрдХ рд╕реНрдЯрд╛рд░реНрдЯ рдореЙрдбреНрдпреВрд▓ рдлреЗрдВрдХрдирд╛ред
platformBrowserDynamic().bootstrapModule(AppModule);
CreatePlatformFactory рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣рдо рдЖрдкрдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдХрд┐рд╕реА рднреА рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХреЛ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рд╣рдорд╛рд░реЗ рд▓рд┐рдП, рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╣рдо рд╕рд╛рдорд╛рдиреНрдп DOM рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдФрд░ рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рд╣рдо рд░реЗрдВрдбрд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рддрддреНрд╡реЛрдВ рдХреА рдЗрдВрдЯрд░реИрдХреНрд╢рди рд╕реНрдХреАрдо рдХреЗ рд╡рд┐рд╡рд░рдг рдкрд░ рднреА рдХрд╛рдо рдХрд░реЗрдВрдЧреЗред рдордВрдЪ рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рд╕реНрд░реЛрдд рдореЗрдВ рдкрд╛рдИ рдЬрд╛ рд╕рдХрддреА рд╣реИред
рдкреНрд░рд╛рд░рдВрдн рдореЙрдбреНрдпреВрд▓ рдореЗрдВ, рд╣рдо рдкрд╣рд▓реЗ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреМрди рд╕реЗ рдШрдЯрдХ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВред рдПрдХ рдШрдЯрдХ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рддреЗ рд╕рдордп, рдХреЛрдгреАрдп, renderComponent
рдХреЙрд▓ renderComponent
рдФрд░ рдЗрд╕реЗ рд╡рд╛рдВрдЫрд┐рдд рдШрдЯрдХ рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рдХрд░, рдЙрд╕ рдШрдЯрдХ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред рд╕рдм рдХреБрдЫ рдЬреЛ рдХрд┐ рдХреЛрдгреАрдп рдШрдЯрдХ рдХреЗ рдкреНрд░рддрд┐рдкрд╛рджрди (рддрддреНрд╡реЛрдВ рдХреЛ рдмрдирд╛рдиреЗ, рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ, рдШрдЯрдирд╛рдУрдВ рдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрдиреЗ рдЖрджрд┐) рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХрд░реЗрдЧрд╛, рдЗрд╕ рд░реЗрдВрдбрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕рд▓рд┐рдП, рд╣рдореЗрдВ RendererFactory рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, Renderer рдореЗрдВ рд╣рдо createElement рдореЗрдердб рдореЗрдВ рд░реБрдЪрд┐ рд▓реЗрдВрдЧреЗред рдЗрд╕ рдкрджреНрдзрддрд┐ рдореЗрдВ, рд╣рдореЗрдВ рдЯреИрдЧ рдХрд╛ рдирд╛рдо рдорд┐рд▓рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕рдореЗрдВ рд╕реЗ рд╣рдореЗрдВ рд╡рд╛рдВрдЫрд┐рдд рдШрдЯрдХ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдиреЛрдбрдЧреБрдИ рдХреЗ рдкрд╛рд╕ рдШрдЯрдХреЛрдВ рдХрд╛ рдПрдХ рдореВрд▓ рд╕реЗрдЯ рд╣реИ, рдЬрд┐рд╕реЗ рдореИрдВрдиреЗ рд╕рд╛рд╡рдзрд╛рдиреА рд╕реЗ рдЪрд┐рддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдФрд░ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдХрд┐ рдХреИрд╕реЗ рдЙрдиреНрд╣реЗрдВ рд╕рд╛рдорд╛рдиреНрдп рдШрдЯрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд╕рдм рдХреБрдЫ рдлреЗрдВрдХрддреЗ рд╣реБрдП, рдХреЛрдгреАрдп рдХреЗ рдврд╛рдВрдЪреЗ рдХреЗ рднреАрддрд░ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдорд╛рдирдХ рдШрдЯрдХреЛрдВ рдХреЗ рд╕рд╛рде рдЕрдиреНрдп рдХреНрд░рд┐рдпрд╛рдПрдВ рднреА рдЗрд╕ рд░реЗрдВрдбрд░рд░ рд╕реЗ рдЧреБрдЬрд░реЗрдВрдЧреАред рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА ред
https://blog.nrwl.io/
рд░реЗрдВрдбрд░рд░ рдореЗрдВ рдШрдЯрдирд╛рдУрдВ рдХреЛ рд╕реБрдирдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрд╡реЗрдВрдЯ рдХрд╛ рдирд╛рдо рдлреЗрдВрдХрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЗрди рдШрдЯрдХреЛрдВ рдХреЗ рд▓рд┐рдП рд╣рдо рд╕рд╛рдорд╛рдиреНрдп рдИрд╡реЗрдВрдЯрд▓рд┐рд╕реНрдЯ рдХреЛ рд▓рдЯрдХрд╛рддреЗ рд╣реИрдВред
listen(target: any, eventName: string, callback: (event: any) => boolean | void): () => void { const callbackFunc = (e: NativeEvent) => callback.call(target, e); target.addEventListener(eventName, callbackFunc); return () => target.removeEventListener(eventName, callbackFunc); }
рдШрдЯрдХ рдИрд╡реЗрдВрдЯ рдмрд┐рд▓реНрдХреБрд▓ Qt рдХреЗ рд╕рдорд╛рди рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рд╛рдорд╛рдиреНрдп (click)=тАЭclickFunc($event)тАЭ
рдмрдЬрд╛рдп (click)=тАЭclickFunc($event)тАЭ
рдЖрдкрдХреЛ рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛ (clicked) = тАЭclickFunc($event)тАЭ
ред
рд╡рд░реНрддрдорд╛рди рдореЗрдВ 16 рдорд╛рдирдХ рдШрдЯрдХ рдЙрдкрд▓рдмреНрдз рд╣реИрдВред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдХрд╕реНрдЯрдо рдШрдЯрдХ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ QWidget рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣рдореЗрд╢рд╛ рдРрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рд╣реЛрддрд╛ рд╣реИред
рдПрдВрдЧреБрд▓рд░ рдХреЗ рд╕рд╛рде рд╣рдорд╛рд░реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдпрдерд╛рд╕рдВрднрд╡ рд╕рдВрдЧрдд рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд░рд╛рдЙрдЯрд░ рднреА рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред
const appRoutes: Routes = [ { path: 'home', component: HomeComponent }, { path: 'about', component: AboutComponent } ]; // AppModule imports ... NodeguiRouterModule.forRoot(appRoutes),

рдХреЛрдгреАрдп рдиреЛрдбрдЧрдИ рдРрдк

рдореМрд╕рдо рдРрдк
рд╣рдо рдареЗрд╕ рдореЗрдВ рдЗрдХрдЯреНрдард╛ рдХрд░рддреЗ рд╣реИрдВ
рд░реЗрдбреА-рдореЗрдб рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдиреЛрдбрдЧрдИ рдХрд╛ рдЕрдкрдирд╛ рдкреИрдХрд░ рд╣реИ - @nodegui/packer.
рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ, рдЕрдм рддрдХ 2 рдЯреАрдо рд╢рд╛рдорд┐рд▓ рд╣реИрдВред
npx рдиреЛрдбрдЧрдИ-рдкреИрдХрд░ - рдЗрдирд┐рдЯ рдорд╛рдпрдк
рдпрд╣ рдХрдорд╛рдВрдб рдЯреЗрдореНрдкрд▓реЗрдЯ рдпреБрдХреНрдд рдПрдХ рдкреИрдХреЗрдЬрд┐рдВрдЧ рдлрд╝реЛрд▓реНрдбрд░ рдмрдирд╛рдПрдЧрд╛ред рдЖрдк рдПрдХ рдЖрдЗрдХрди рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╛рдордЧреНрд░реА рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ, рдирд╛рдо, рд╡рд┐рд╡рд░рдг рдФрд░ рдЖрд╡реЗрджрди рдХреА рдЕрдиреНрдп рдЬрд╛рдирдХрд╛рд░реА рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ, рд╕рд╛рде рд╣реА рдЖрд╡рд╢реНрдпрдХ рдирд┐рд░реНрднрд░рддрд╛ рднреА рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред
npx рдиреЛрдбрдЧрдИ-рдкреИрдХрд░ - рдкреИрдХ
рдпрд╣ рдХрдорд╛рдВрдб рдкреИрдХреЗрдЬрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдЙрдкрдХрд░рдг рд▓реЙрдиреНрдЪ рдХрд░рддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореИрдХ рдХреЗ рд▓рд┐рдП macdeployqt) рдФрд░ рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдкреИрдХ рдХрд░рддрд╛ рд╣реИред
рдирд┐рд╖реНрдХрд░реНрд╖ рдореЗрдВ
рдЕрдВрдд рдореЗрдВ, рдореИрдВ рдбреЗрд╕реНрдХрдЯреЙрдк рдкрд░ рдЕрдиреНрдп рд╡реЗрдм рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреЗ рд╕рд╛рде рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ (рдореИрдХ рдУрдПрд╕ рдХреЗ рддрд╣рдд рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХреЗ рдкрд░рд┐рдгрд╛рдо)ред
рдбрд╛рдЙрдирд▓реЛрдб рдХрд╛ рдЖрдХрд╛рд░
рдореЗрдореЛрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ
рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕реЗ рд▓рд┐рдВрдХ рдХрд░реЗрдВ:
irustm / рдХреЛрдгреАрдп-рдиреЛрдбрдЧреБрдИ
* рдПрдВрдЧреБрд▓рд░ рдХреЗ рд╕рд╛рде рдкреНрд░рджрд░реНрд╢рди, рджреЗрд╢реА рдФрд░ рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдбреЗрд╕реНрдХрдЯреЙрдк рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдВред рдХреЛрдгреАрдп NodeGUI рдХреЛрдгреАрдп рджреНрд╡рд╛рд░рд╛ рд╕рдВрдЪрд╛рд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА:
https://t.me/ngFanatic
рдореЗрд░реЗ рдУрдкрди рд╕реЛрд░реНрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА
https://twitter.com/irustm