рдЕрд▓рд╡рд┐рджрд╛ HTML, рд╣рд╛рдп рдХреНрдпреВрдПрдордПрд▓

HTML рдореЗрд╕


рдореИрдВ HTML рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛ рдПрдХ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреИрд╕реЗ рдмрдирд╛ рд╕рдХрддрд╛ рд╣реВрдВ? рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдЪрд╛рд╣рд┐рдП: рдЬрд╛рд╡рд╛ рдореЗрдВ рдПрдХ рдирдпрд╛ рдмреНрд░рд╛рдЙрдЬрд╝рд░, рдХреНрдпреВрдПрдордПрд▓ рдФрд░ рдмреИрдХ-рдПрдВрдбред


рдереЛрдбрд╝рд╛ рд╕рд╛ рдЗрддрд┐рд╣рд╛рд╕


HTML рдХреЛ CERN рдХреЗ рд╡реИрдЬреНрдЮрд╛рдирд┐рдХреЛрдВ рджреНрд╡рд╛рд░рд╛ рд╡реИрдЬреНрдЮрд╛рдирд┐рдХ рд▓реЗрдЦреЛрдВ рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЗ рд░реВрдк рдореЗрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдлрд┐рд░ рдпрд╣ рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рдЬрд╛рдирдХрд╛рд░реА рдкреЛрд╕реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рддрд░реАрдХрд╛ рдмрди рдЧрдпрд╛ред рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЧрдпрд╛ рдХрд┐ рд╣рд╛рдЗрдкрд░рд▓рд┐рдВрдХреНрд╕ рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рдереА, рдФрд░ рдлрд┐рд░ рдШрдЯрдХреЛрдВ, рд░реВрдкреЛрдВ, рд╕реАрдПрд╕рдПрд╕ рдХреЛ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдиреЗ рд▓рдЧрд╛ред рд▓реЗрдХрд┐рди рдпрд╣ рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рдерд╛, рд╣рдореЗрдВ рдЧрддрд┐рд╢реАрд▓рддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереА, рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЬреЛрдбрд╝рд╛ред рд▓реЗрдХрд┐рди рдЗрд╕ рд╕рдм рдкрд░ рдпрд╣ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рднрд╡рд┐рд╖реНрдп рдХреЗ рдЬреЗрдПрд╕ рдХреЗ рдврд╛рдВрдЪреЗ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ред рд╡реЗ HTML рдХреА рдЦрд╛рдорд┐рдпреЛрдВ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд▓рдХреНрд╖рдгреЛрдВ рдХреЗ рдореБрдХрд╛рдмрд▓реЗ рдЗрд╕ рдмреАрдорд╛рд░реА рдХрд╛ рдЗрд▓рд╛рдЬ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИред QML рдЗрд╕рдореЗрдВ рд╣рдорд╛рд░реА рдорджрдж рдХрд░реЗрдЧрд╛ред


рдЪрд▓реЛ рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП рдиреАрдЪреЗ рдЙрддрд░реЛ


рдореИрдВ рддреБрд░рдВрдд рдзреНрдпрд╛рди рджреЗрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рд╕рдорд╛рдзрд╛рди рдЙрддреНрдкрд╛рджрди-рддреИрдпрд╛рд░ рдирд╣реАрдВ рд╣реИред рдпрд╣ "рд╣реИрд▓реЛ рд╡рд░реНрд▓реНрдб!" рдПрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЬреЛ рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдХрд┐ рдЗрди рдЙрдкрдХрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреНрдпрд╛ рд╣рд╛рд╕рд┐рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред


рдмреНрд░рд╛рдЙрдЬрд╝рд░


рдЪреВрдВрдХрд┐ рд╣рдореЗрдВ HTML рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо Qt5, QML рдФрд░ C ++ рдореЗрдВ рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд▓рд┐рдЦреЗрдВрдЧреЗред рд╣рдорд╛рд░реЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЛ рдмреИрдХ-рдПрдВрдб рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП рдФрд░ рд╕реНрдХреНрд░реАрди рдкрд░ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреА рдЪрд╛рд╣рд┐рдПред


рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╡рд░реНрдХрдлрд╝реНрд▓реЛ:


  • рдПрдбреНрд░реЗрд╕ рдмрд╛рд░ рдореЗрдВ, рд╕рдВрд╕рд╛рдзрди рдХрд╛ URL рдЯрд╛рдЗрдк рдХрд░реЗрдВ рдФрд░ рдПрдВрдЯрд░ рджрдмрд╛рдПрдБ
  • HTTP рдЕрдиреБрд░реЛрдз рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣рд╛рд░реНрдб рдбреНрд░рд╛рдЗрд╡ рдкрд░ qml рдлрд╝рд╛рдЗрд▓ рд▓реЛрдб рдХрд░реЗрдВ
  • HTTP рдЕрдиреБрд░реЛрдз рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, qml рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рд▓реЛрдб рдХрд░реЗрдВ
  • рд▓реЛрдбрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ qml рдлрд╝рд╛рдЗрд▓ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдВ

TabComponent.qml


 ... TextInput { onAccepted: { var result = siteLoader.loadSite(addressIpt.text) if (result === LoadResultType.SUCCESS) { var props = siteLoader.loadProperties(addressIpt.text) var qmlPath = siteLoader.getMainQmlPath(addressIpt.text) pageLoader.setSource(qmlPath, props) } else { ... } } } ... Loader { id: pageLoader } 

рдпрд╣рд╛рдБ siteLoader C ++ рд╡рд░реНрдЧ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ рдЬрд┐рд╕реЗ qml рдореЗрдВ рдЖрдпрд╛рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд▓реЙрдЬрд┐рдХ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред


TextInput рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдПрдбреНрд░реЗрд╕ рдмрд╛рд░ рдХрд╛ рдПрдХ рдШрдЯрдХ рд╣реИред рдЬрдм рдЖрдк рдПрдВрдЯрд░ рджрдмрд╛рддреЗ enter , рддреЛ onAccepted рд╡рд┐рдзрд┐ рдХреЛ onAccepted рдФрд░ рд╕рд╛рдЗрдЯ рд▓реЛрдбрд┐рдВрдЧ рд▓реЙрдЬрд┐рдХ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред


QML рдореЗрдВ рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рдлрд╝рд╛рдЗрд▓ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпрд╣ рдПрдХ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рд╣реИред рднрд╡рд┐рд╖реНрдп рдореЗрдВ, рдЖрдк рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рд╕реНрдХреНрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдпрджрд┐ рд╕рдВрд╕реНрдХрд░рдг рдореЗрд▓ рдЦрд╛рддреЗ рд╣реИрдВ рддреЛ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рди рдХрд░реЗрдВ, рд▓реЗрдХрд┐рди рдЬреЛ рд╣реИ рдЙрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред


рд╡рд╣ рдкреВрд░рд╛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╣реИред рдЪрд▓реЛ рдмреИрдХ-рдПрдВрдб рдФрд░ UI рдкрд░ рдЪрд▓рддреЗ рд╣реИрдВред


рдмреИрдХ-рдПрдВрдб рдФрд░ рдпреВрдЖрдИ


рдмреИрдХ-рдПрдВрдб рдФрд░ UI рд╕реАрдзреЗ рд╣рдорд╛рд░реЗ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╣реИрдВред рдХреНрдпреВрдПрдордПрд▓ рдореЗрдВ рд╣рдо рдпреВрдЖрдИ рднрд╛рдЧ рд▓рд┐рдЦреЗрдВрдЧреЗ, рдФрд░ рдмреИрдХ-рдПрдВрдб spring boot рдореЗрдВ рд▓рд┐рдЦрд╛ рдЬрд╛рдПрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдЬрд╛рд╡рд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рд╣реВрдВред рдкрд╣рд▓реА рдЪреАрдЬ рдЬреЛ рд╣рдореЗрдВ рдЪрд╛рд╣рд┐рдП рд╡рд╣ рд╣реИ рд╣рдорд╛рд░реЗ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд╡рд┐рд╡рд░рдг рдХреЗ рд╕рд╛рде рдПрдХ qml рдлрд╝рд╛рдЗрд▓ред


main.qml


 import QtQuick 2.0 Rectangle { color: "lightgray" property alias textValue: helloText.text Text { id: helloText anchors.horizontalCenter: parent.horizontalCenter font.pointSize: 24 } } 

рдпрд╣рд╛рдБ рд╕рдм рдХреБрдЫ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИред


 property alias textValue: helloText.text 

text рд╕рдВрдкрддреНрддрд┐ рдХреЛ рдЦреАрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдкрдВрдХреНрддрд┐ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдЖрдк рдЗрд╕реЗ Loader рдореЗрдВ рдбрд╛рд▓ рд╕рдХреЗрдВред
рдЕрдм рджреЛ рд╕рдорд╛рдкрди рдмрд┐рдВрджреБ рдЬреЛрдбрд╝реЗрдВ:


 @RestController public class HelloController { @GetMapping( value = "/main.qml", produces = MediaType.APPLICATION_OCTET_STREAM_VALUE) public byte[] mainQml() throws IOException { ClassPathResource resource = new ClassPathResource("main.qml"); return IOUtils.toByteArray(resource.getInputStream()); } @GetMapping( value = "/getProperties", produces = MediaType.APPLICATION_JSON_VALUE) public Object getProperties() { return "{\"textValue\": \"Hello World!\"}"; } } 

рдкрд╣рд▓рд╛ рдЕрдВрдд-рдмрд┐рдВрджреБ qml-file рд▓реМрдЯрд╛рдПрдЧрд╛, рдФрд░ рджреВрд╕рд░рд╛ - рдЖрд╡рд╢реНрдпрдХ рдбреЗрдЯрд╛ред рдХреНрд▓рд╛рд╕рдкреИрде рдореЗрдВ рдлрд╛рдЗрд▓ рд╕реНрдЯреЛрд░ рдХрд░рдирд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдЙрдкрд╛рдп рдирд╣реАрдВ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, QML рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдХрдИ qml рдФрд░ js рдлрд╛рдЗрд▓реЗрдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВред рд▓реЗрдХрд┐рди рд╣рдордиреЗ рдЗрд╕реЗ рд╕рд╛рджрдЧреА рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ред


рдирддреАрдЬрддрди, рд╣рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ:


рдирдорд╕реНрддреЗ рд╡рд┐рд╢реНрд╡ рдЙрджрд╛рд╣рд░рдг


рдкреЗрд╢реЗрд╡рд░реЛрдВ рдФрд░ рд╡рд┐рдкрдХреНрд╖


рдЖрдЗрдП рдЕрдм рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рдкреЗрд╢реЗрд╡рд░реЛрдВ рдФрд░ рд╡рд┐рдкрдХреНрд╖реЛрдВ рдХреЛ рджреЗрдЦреЗрдВ


рдЖрдХрд░реНрд╖рдг рдЖрддреЗ рд╣реИрдВ


  • рдХреНрд▓рд╛рдЗрдВрдЯ рдпреВрдЖрдИ рдХреЛрдб рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рд╕рд░рд▓ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рд╕рдорд╛рди рдКрдВрдЪрд╛рдИ рдХреЗ 2 рдХреЙрд▓рдо рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рднреА CSS рд╣реИрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
  • рдЧреНрд░рд╛рдлрд┐рдХ рдбрд┐рдЬрд╛рдЗрдирд░ рдХреНрдпреВрдЯреА рдХреНрд░рд┐рдПрдЯрд░ рдореЗрдВ рдпреВрдЖрдИ рд╡рд┐рдХрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
  • рд╕рдВрднрд╡рддрдГ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЧрддрд┐ HTML рд╕реЗ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╣реЛрдЧреА
  • рдбреЗрд╕реНрдХрдЯреЙрдк рдпреВрдЖрдИ рдШрдЯрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛

рд╡рд┐рдкрдХреНрд╖


  • рджреВрд╕рд░рд╛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╣реЗ RLY? рдЬрдм рддрдХ рд╕реБрд░рдХреНрд╖рд╛ рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рдирд╣реАрдВ рд╣реЛ рдЬрд╛рддреА, рддрдм рддрдХ рдХреЛрдИ рднреА рдХреЛрдб рдХреЛ рдореБрдЦреНрдпрдзрд╛рд░рд╛ рдХреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛, рдФрд░ рдХреЛрдИ рднреА "рдЕрд▓рдЧ рдкреНрд░рдХрд╛рд░ рдХреА рд╕рд╛рдЗрдЯреЛрдВ" рдХреЗ рд▓рд┐рдП рджреВрд╕рд░рд╛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред
  • рд╕реБрд░рдХреНрд╖рд╛ред рдЕрдм рд╡рд╣ рдмрд╕ рдЕрдиреБрдкрд╕реНрдерд┐рдд рд╣реИред рдЖрдк рдПрдХ рдкреГрд╖реНрда рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рд╣рд╛рд░реНрдб рдбреНрд░рд╛рдЗрд╡ рдХреЛ рдкреНрд░рд╛рд░реВрдкрд┐рдд рдХрд░рддрд╛ рд╣реИред
  • рдЙрддреНрдкрд╛рджрди рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд╕реМ рдкреНрд░рд╢реНрдиреЛрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ: рдорд╛рдирдХ, рд╕рддреНрд░, рдбреЗрдЯрд╛ рдХреИрд╢рд┐рдВрдЧ, рд╕реБрд░рдХреНрд╖рд╛, рдЖрджрд┐ред
  • рд╕рдм рдХреБрдЫ рдЕрдкрдиреА рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЕрд╡рд╕реНрдерд╛ рдореЗрдВ рд╣реИ
  • рдпреВрдЖрдИ рдШрдЯрдХреЛрдВ рдХреА рдПрдХ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреА рдХрдореА, рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рддреЗрдЬ

рдЕрдм рддрдХ, рдкреНрд▓рд╕рд╕ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдорд┐рдиреНрдпреВрдЬрд╝ рд╣реИрдВред рдЦреИрд░, рдпрд╣ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ, рдпрд╣ рд╕рд┐рд░реНрдл рдПрдХ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рд╣реИ, рдЬреЛ рдХреБрдЫ рджрд┐рдиреЛрдВ рдореЗрдВ рдореЗрд░реЗ рдШреБрдЯрдиреЛрдВ рдкрд░ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛ред рд▓реЗрдХрд┐рди рд╕рднреА рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣рд▓ рд╣реЛ рдЬрд╛рддреА рд╣реИрдВ, рдХрдо рд╕реЗ рдХрдо рдореБрдЭреЗ рдЧрдВрднреАрд░ рдмреНрд▓реЙрдХрд░реНрд╕ рдирд╣реАрдВ рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рд╣реИрдВред


рдлрд┐рд░ рдпрд╣ рд▓реЗрдЦ, рдЖрдк рдХреНрдпреЛрдВ рдкреВрдЫрддреЗ рд╣реИрдВред


рдореБрдЭреЗ рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдХреБрдЫ рднреА рд╕рдорд╛рди рдирд╣реАрдВ рдорд┐рд▓рд╛, рд╢рд╛рдпрдж рдореИрдВ рдмреБрд░реА рддрд░рд╣ рд╕реЗ рджреЗрдЦ рд░рд╣рд╛ рдерд╛, рдФрд░ рдРрд╕рд╛ рд╣реА рдХреБрдЫ рдкрд╣рд▓реЗ рд╕реЗ рдореМрдЬреВрдж рд╣реИред рдпрд╛ рдХрд┐рд╕реА рдХреЛ рдЗрд╕рдХреА рдЬрд░реВрд░рдд рд╣реА рдирд╣реАрдВ рд╣реИред рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ, рдореИрдВ рдЖрдкрд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕реБрдирдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдФрд░ рдЙрдирд╕реЗ рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рд╡реНрдпрд╡рд╕рд╛рдп рдХрд░рдиреЗ рдХреЗ рд▓рд╛рдпрдХ рд╣реИред


рд╕рд╛рдзрди



PS рдореИрдВ рдпрд╣ рдиреЛрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рд╡рд┐рдзрд┐ QmlWeb рд╕реЗ рдореВрд▓рднреВрдд рд░реВрдк рд╕реЗ рднрд┐рдиреНрди рд╣реИ ред QmlWeb , HTML + JS рдХреЛрдб qml рдлрд╝рд╛рдЗрд▓ рд╕реЗ QmlWeb рд╣реИ рдФрд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

Source: https://habr.com/ru/post/hi473302/


All Articles