рдореИрдВ рдПрдХ рдмреНрд░реЗрдХрд┐рдВрдЧ рдмрджрд▓рд╛рд╡ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рджреЗрдиреЗ рд╡рд╛рд▓рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдкреИрдХреЗрдЬ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдЕрдВрддрд┐рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдФрд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд▓реЗрдЦрдХреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рдФрд░ рдХреЛрдИ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХреЛрдб рдкрд░рд┐рд╡рд░реНрддрди рдирд╣реАрдВ рд╣реЛрдЧрд╛ред
рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рд╣рдо 3 рд╕реЗ "рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛" рд╣рдЯрд╛ рджреЗрдВ? рдпрд╣ рдХрдИ рдореБрджреНрджреЛрдВ рдХреЛ рд╣рд▓ рдХрд░ рд╕рдХрддрд╛ рд╣реИ:
#if FABLE_COMPILER
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛ рд╕рд░реНрд╡рд░-рд╕рд╛рдЗрдб рдлрд╝реЗрд▓рд┐рдЬрд╝ рд░реЗрдВрдбрд░рд░ рдХреЛ рд▓рд┐рдЦрдирд╛ рднреА рдЖрд╕рд╛рди рдмрдирд╛ рд╕рдХрддрд╛ рд╣реИредрд▓рд┐рдлреНрдЯ рдкрд┐рдЪ рдХреЗ рд╕рд╛рде, рдЕрдЧрд░ рдЖрдкрдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдЕрдЪреНрдЫрд╛ рдХрджрдо рд╣реИ рддреЛ рд╣рдо рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдореИрдВрдиреЗ рдЕрднреА рддрдХ рдХреБрдЫ рднреА рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдирд╣реАрдВ рдХреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдореЗрд░реЗ рдорди рдореЗрдВ рдХреБрдЫ рдРрд╕рд╛ рд╣реИ:
type IViewElement = interface end
type IViewProp = interface end
// Later renderers can inherit these interfaces
type ReactElement = inherit IViewElement
// The basic renderer interface contains few methods
type IHTML =
abstract renderNative: tagName: string * props: IViewProp seq
// Most of the helpers would be extensions to the interface
type IHTML with
member this.div(props: IViewProp seq) = this.renderNative("div", props)
...
// Then we have different implementations
module Feliz.React
type ReactHTML() =
interface IHTML with
member _.RenderNative(tag, props, children) = ...
let Html = Feliz.ReactHTML()
// Consumer code
open Feliz.React
Html.div [...]
рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрдВрдЯреЗрд▓рд┐рдЬреЗрдВрд╕ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░реЗрдЧрд╛, рд╢рд╛рдпрдж рд╣рдореЗрдВ рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдмрдЬрд╛рдп рдПрдХ рдЕрдореВрд░реНрдд рд╡рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдпрд╣ рд╡рд┐рдЪрд╛рд░ рдорд┐рд▓ рдЬрд╛рдПрдЧрд╛ред рддреБрдо рдХреНрдпрд╛ рд╕реЛрдЪрддреЗ рд╣реЛ?
рд╣рд╛рдп @alfonsogarciacaro , рдЖрдкрдХреЗ рд╕рд╛рде рдИрдорд╛рдирджрд╛рд░ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ рдРрд╕рд╛ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпрд╣ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИред рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рд░реВрдк рд╕реЗ рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ: рдЖрдЗрдП Fable рдореЗрдВ HTML рдХреЗ рд▓рд┐рдП рдПрдХ рдорд╛рдирдХ API рдмрдирд╛рдПрдВред рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ, рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЕрдиреБрд╡рд╛рдж рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдпрд╣рд╛рдВ рдХреБрдЫ рдХрд╛рд░рдг рдмрддрд╛рдП рдЧрдП рд╣реИрдВ:
prop.children
рдЪреАрдЬрд╝ рдХреЛ рдкрд╕рдВрдж рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдХрд┐ рдмрд┐рд▓реНрдХреБрд▓ рдареАрдХ рд╣реИредрдЙрддреНрддрд░ @Zaid рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж! рдореИрдВ рдЖрдкрдХреЗ рддрд░реНрдХ рдХреЛ рд╕рдордЭрддрд╛ рд╣реВрдВ, рдпрд╣ рдЕрднреА рднреА рдЕрдлрд╝рд╕реЛрд╕ рдХреА рдмрд╛рдд рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЗрддрдиреЗ рд╕рд╛рд░реЗ рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзреА рдбреАрдПрд╕рдПрд▓ рд╣реИрдВ рд▓реЗрдХрд┐рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЕрдиреНрдп рд╕рдорд╛рдзрд╛рди рднреА рд╣реЛрдВ рдЬреИрд╕рд╛ рдЖрдк рдХрд╣рддреЗ рд╣реИрдВред рдЕрдЧрд░ рдореБрдЭреЗ рд╕рдордп рдорд┐рд▓рддрд╛ рд╣реИ рддреЛ рдореИрдВ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдПрдХ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рд▓рд┐рдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред
BTW, рдореИрдВрдиреЗ рдпрд╣рд╛рдБ рдХреБрдЫ рдХрд╛рдо рд╢реБрд░реВ рдХрд┐рдпрд╛ рд╣реИ: https://github.com/alfonsogarciacaro/Feliz.Engine/blob/main/src/HtmlEngine.fs
рдореИрдВрдиреЗ рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рд╕рднреА unbox
рдФрд░ рдЗрд╕реА рддрд░рд╣ рдХреА рдЪрд╛рд▓ рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ рдЗрд╕реЗ рдХрд┐рд╕реА рднреА рд░реЗрдВрдбрд░рд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рдЗрд╕ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ @dbrattli Feliz.ViewEngine рдХреЗ рд╕рд╛рде рд╕рдВрдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдирд╛ рдФрд░ рдпрд╣ рджреЗрдЦрдирд╛ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ SSR рдХреЛ Feliz рдХреЗ рд╕рд╛рде рд╕рд░рд▓ рдмрдирд╛рддрд╛ рд╣реИред
рдХреБрдЫ рдЪреАрдЬреЗрдВ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рд╕рдордЭрдиреЗ/рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА:
рдореИрдВ рдмрд╣реБрдд рдЦреБрд╢ рдирд╣реАрдВ рд╣реВрдВ рдХрд┐ рдореЗрд░реА рдЗрдВрдЯреЗрд▓рд┐рдЬреЗрдВрд╕ рдлрдВрдХреА рджрд┐рдЦреЗрдЧреА рдХреНрдпреЛрдВрдХрд┐ Html
рдХреЛ рдлреЗрд▓рд┐рдЬ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛:
let Html = HtmlEngine(renderer)
рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдорд╛рдореВрд▓реА рдорд╕рд▓рд╛ рдЬреНрдпрд╛рджрд╛ рд╣реИред
рд╣рдо рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рд╡реИрд╕рд╛ рд╣реА рд╣реЛ рдЬреИрд╕рд╛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╣реИ (рдпрд╛ рдмреЗрд╣рддрд░)ред рд╢рд╛рдпрдж Feliz.HtmlEngine
рдореЗрдВ рдПрдХ рдкреНрд▓рдЧрдЗрди рдЬреЛ рдХрдВрдкрд╛рдЗрд▓рд░ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдореЗрдВ рд▓рдкреЗрдЯрд╛ рдЧрдпрд╛ рд╣реИ? рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рд╕рдорд╛рдзрд╛рди рд╡реЗрдм рд╕рд░реНрд╡рд░реЛрдВ рдХреЛ Fable рдкрд░ рдирд┐рд░реНрднрд░рддрд╛ рдмрдирд╛ рджреЗрдЧрд╛ред
SSR рдХреЗ рд╕рд╛рде рд╕рдмрд╕реЗ рдмрдбрд╝реЗ рдореБрджреНрджреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдЬреИрд╕рд╛ рдХрд┐ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЕрдиреНрдп рдкреБрд╕реНрддрдХрд╛рд▓рдп рдмрд╕ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ, рдФрд░ рдЬреЛ рдХрд░рддреЗ рд╣реИрдВ (рдЬреИрд╕реЗ Feliz.Bulma
/ Feliz.Bulma.ViewEngine
) рдХреЛ рддрдм рддрдХ рд╕рдорд╛рдпреЛрдЬрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдЬрдм рддрдХ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рднреА рд╕рдорд╛рдпреЛрдЬрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рди рд╣реЛ рджреЛрдиреЛрдВ рдХреЗ рд╕рдВрджрд░реНрдн рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рд░ рдПрдкреАрдЖрдИ рдмрдирд╛рдПрдВ рдЬреЛ рдпрд╣ рд╣реИред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣рд╛рдВ рдореВрд▓ рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЬрдм рд╣рдо рдЗрдЪреНрдЫрд┐рдд рдкрд╣рд▓реЗ рдкреЗрдВрдЯ рдХрд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрдиреБрдХрд░рдг рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рдПрд╕рдПрд╕рдЖрд░ рд╕реНрд╡рдпрдВ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИред рд╣рдореЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ .NET рдХреЗ рд▓рд┐рдП ReactDOMServer
рдЬреИрд╕рд╛ рдХреБрдЫ рдЪрд╛рд╣рд┐рдПред рдореИрдВрдиреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕рдореЗрдВ рдмрд╣реБрдд рдЧрд╣рд░рд╛рдИ рддрдХ рдирд╣реАрдВ рдЦреЛрд▓рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреНрдпрд╛ React.NET (рд╢рд╛рдпрдж рдПрдХ рдПрдл # рд░реИрдкрд░ рдХреЗ рд╕рд╛рде) рдЖрдЧреЗ рдмрдврд╝рдиреЗ рдХрд╛ рдПрдХ рдмреЗрд╣рддрд░ рддрд░реАрдХрд╛ рд╣реЛрдЧрд╛?
рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж @Shmew рдФрд░ рджреЗрд░ рд╕реЗ рдЙрддреНрддрд░ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдЦреЗрдж рд╣реИ:
open type
рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИредрд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЗрд╕рдХреЗ рд▓рд┐рдП рдореИрдВ рди рдХреЗрд╡рд▓ SSR рдореЗрдВ рдмрд▓реНрдХрд┐ _beyond React_:wink: рдореЗрдВ рднреА рд╕реЛрдЪ рд░рд╣рд╛ рд╣реВрдБ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП F# рд╕рд░реНрд╡рд░ рдореЗрдВ html рдЬрдирд░реЗрдЯрд░ рдХреЗ рд▓рд┐рдП рдЬрд┐рдиреНрд╣реЗрдВ рд░рд┐рдПрдХреНрдЯ рдХреЗ рд╕рд╛рде рд╕рдВрдЧрдд рд╣реЛрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ рдФрд░ рдорд╛рдорд▓реЗ рдореЗрдВ рд╣рдо рдЕрдиреНрдп рд░реЗрдВрдбрд░рд░реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЕрдЧреНрд░рднрд╛рдЧ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд░реЗрдВред
рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж @Shmew рдФрд░ рджреЗрд░ рд╕реЗ рдЙрддреНрддрд░ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдЦреЗрдж рд╣реИ
рдЖрдкрдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИ, рдФрд░ рдХреЛрдИ рдЪрд┐рдВрддрд╛ рдирд╣реАрдВ!
рдЗрдВрдЯреЗрд▓рд┐рдЬреЗрдВрд╕: рд╣рдореНрдо, рдореИрдВрдиреЗ рдХреЗрд╡рд▓ рд╕рд╛рд░ рдПрдкреАрдЖрдИ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдЙрджрд╛рд╣рд░рдг рд▓рд┐рдЦрд╛ рд╣реИ рд▓реЗрдХрд┐рди рд╕реНрд╡рдд: рдкреВрд░реНрдгрддрд╛ рдХреЗ рд╕рд╛рде рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рджреЗрдЦреАред рдореИрдВ рдлрд┐рд░ рд╕реЗ рдЬрд╛рдБрдЪ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдБрдЧрд╛ред рдПрдХ рд╕реНрдерд┐рд░ рдкреНрд░рдХрд╛рд░ рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдХреЗ рдмрдЬрд╛рдп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдПрдХ рдореВрд▓реНрдп рддрдХ рдкрд╣реБрдБрдЪрддреЗ рд╣реИрдВред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдареАрдХ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдХрдИ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдХреЛрдб рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдЧреАред рдореБрдЦреНрдп рджреЛрд╖ рд╢рд╛рдпрдж рдпрд╣ рд╣реЛрдЧрд╛ рдХрд┐ рдЦреБрд▓реЗ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдореИрдВ рд╕реБрдкрд░ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рдерд╛ред Intellisense рдареАрдХ рд╣реИ, рдмрд▓реНрдХрд┐ рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ Html
рдПрдХ рдЕрд▓рдЧ рд░рдВрдЧ рд╣реЛрдЧрд╛ред рдЬреИрд╕рд╛ рдореИрдВрдиреЗ рдХрд╣рд╛, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдорд╛рдореВрд▓реА ред рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рд╣рдо open type
рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рдХрд╛рд░рдг рдЦреЛ рджреЗрддреЗ рд╣реИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдмрдбрд╝рд╛ рд╕реМрджрд╛ рд╣реИред рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдХреБрдЫ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рд╕рдм рдХреБрдЫ рдиреЗрдорд╕реНрдкреЗрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред
рдмрдВрдбрд▓ рдХрд╛ рдЖрдХрд╛рд░: рдореБрдЭреЗ рдпрд╣ рднреА рдЬрд╛рдВрдЪрдирд╛ рд╣реЛрдЧрд╛ред рдореЗрд░реА рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдирд╣реАрдВ рдмрджрд▓рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдХрдХреНрд╖рд╛ рдХреЗ рд╕рджрд╕реНрдпреЛрдВ рдХреЛ рдлреИрдмрд▓ рджреНрд╡рд╛рд░рд╛ рдЕрд▓рдЧ рдХрд┐рдП рдЧрдП рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ рдкреЗрдбрд╝ рд╣рд┐рд▓рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЫреЛрдЯрд╛ рднреА рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐ рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдЬрдирд░реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдХреЛрдб рдЙрддрдирд╛ рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд▓рдЧреЗрдЧрд╛, рдЬрд┐рддрдирд╛ рдЕрдм #284 . рдХреЗ рдмрд╛рдж рд╣реИ
рдореБрдЭреЗ рдпрд╣ рднреА рдирд╣реАрдВ рдкрддрд╛ рдерд╛ рдХрд┐ рдЗрдВрдЯрд░рдСрдк рдлрд╝рдВрдХреНрд╢рди рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрдирд▓рд╛рдЗрди рдирд╣реАрдВ рдереЗ, рдореИрдВ рдЙрдиреНрд╣реЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЕрдкрдиреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдореЗрдВ рдЗрдирд▓рд╛рдЗрди рдХрд░ рдЪреБрдХрд╛ рд╣реВрдВред рдореИрдВ рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдмрд╛рдд рдХрд░ рд░рд╣рд╛ рдерд╛ рдХрд┐ рдкреВрд░реЗ Html
рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдХреЛрдИ рдмрдВрдбрд▓ рдЖрдХрд╛рд░ рд╡реГрджреНрдзрд┐ рдирд╣реАрдВ рд╣реИ, рдЕрдЧрд░ рдпрд╣ рдЬреЗрдПрд╕ рдореЗрдВ рдореВрд▓ рд░реВрдк рд╕реЗ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕рд┐рд░реНрдл рдПрдХ рдЗрдирд▓рд╛рдЗрди рд░реИрдкрд░ рд╣реИред рдПрдХ рдареЛрд╕ рд╡рд░реНрдЧ рдХреЗ рд╕рд╛рде рдЬреЛ рдЕрдм рдорд╛рдорд▓рд╛ рдирд╣реАрдВ рдмрдирддрд╛ред
рдЕрдиреНрдп рдкреБрд╕реНрддрдХрд╛рд▓рдп: рд╣рд╛рдВ, рдЕрдореВрд░реНрдд рдПрдкреАрдЖрдИ рд╕реЗ рд▓рд╛рдн рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреНрдп рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдиреНрдпреВрдирддрдо рдмрджрд▓рд╛рд╡ рдХреЗ рд╕рд╛рдеред
рдЗрд╕рдХреЗ рд╕рд╛рде рдореБрджреНрджрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдореВрд▓ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдареАрдХ рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рдХреНрдпреЛрдВрдХрд┐ рд╕рднреА рдЖрдВрддрд░рд┐рдХ рдХреЗрд╡рд▓ рдЬреЗрдПрд╕ рд╣реИрдВред
рд╡рд┐рдХрд▓реНрдк: рдЯреАрдмреАрдПрдЪ, рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рдХрд┐ рд░рд┐рдПрдХреНрдЯ рдХреЗ рд╕рд╛рде рдПрд╕рдПрд╕рдЖрд░ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдлреИрдмрд▓ рдореЗрдВ (рдпреЛрдЧрджрд╛рди) рдХреЛрдб рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдПред рдпрд╣ рдмрд╣реБрдд рдЬрдЯрд┐рд▓ рдирд╣реАрдВ рджрд┐рдЦрддрд╛ рд╣реИ (рдореВрд▓ рд░реВрдк рд╕реЗ рдЬреЗрдирд░реЗрдЯ рдХрд┐рдП рдЧрдП рдПрдЪрдЯреАрдПрдордПрд▓ рдЯреИрдЧ рдореЗрдВ рдХреБрдЫ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдЬреЛрдбрд╝рдирд╛) рдЗрд╕рд▓рд┐рдП рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдЕрдЧрд░ React.NET рдЬреИрд╕реА рдХрд┐рд╕реА рдЪреАрдЬрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ рдпрд╛ рдирд╣реАрдВред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдлреЗрд▓рд┐рдЬ рдХреЗ рд╕рд╛рде рдкреНрд░рдпреЛрдЧ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдирд╣реАрдВ рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдлреЗрд▓рд┐рдЬ рдореЗрдВ рдлреИрдмрд▓ рдЯреНрд░рд┐рдХреНрд╕ (рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдХрд╛рд╕реНрдЯ) рд╢рд╛рдорд┐рд▓ рд╣реИрдВ рдЬреЛ .NET рдореЗрдВ рдлреЗрдВрдХ рджреЗрдВрдЧреЗред
рд╣рд╛рдБ, рдпрд╣ рд╕рд╛рдзрд╛рд░рдг рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрджрд┐ рдЖрдк Feliz.MaterialUI
рдореЗрдВ рдХреБрдЫ рдШрдЯрдХреЛрдВ рдХреА рддрд░рд╣ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдЪреАрдЬреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рдЬреЛ рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ, рдиреЛрдб.рдЬреЗрдПрд╕ рдкрд░ рдХрд┐рдП рдЬрд╛рдиреЗ рдкрд░ рд░рд┐рдПрдХреНрдЯ рдПрд╕рдПрд╕рдЖрд░ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдкреВрд░реНрдг рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рдереВрдХрдиреЗ рдХреЗ рд▓рд┐рдП ReactDOMServer
рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдкреГрд╖реНрда рдХрд╛ рдкрд╣рд▓рд╛ рдкреЗрдВрдЯ рд╣реИред рдореЗрд░реА рд╕рдордЭ рдпрд╣ рд╣реИ рдХрд┐ React.NET
рдареАрдХ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд┐рд░реНрдл рдПрдХ рдиреЛрдб.рдЬреЗрдПрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд▓рдкреЗрдЯ рд░рд╣рд╛ рд╣реИред
рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдлрд╝реЗрд▓рд┐рдЬрд╝ рдХреЛрдб рдХреЗ рд╕рд╛рде рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реЛрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрд╕ рддрд░рд╣ рдХреА рдЪреАрдЬреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреБрдЫ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реЛрдЧреА:
Fable compiles F# React
-> node.js process imports and returns html string
-> web server caches output
-> web server serves page
рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕реЗ рдкрд░реЗ
рдпрд╣ рдПрдХ рдорд╣рд╛рди рдмрд┐рдВрджреБ рд╣реИ, рдФрд░ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдХреБрдЫ рдРрд╕рд╛ рд╣реИ рдЬреЛ рдореИрдВ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдЕрдЧрд░ рдореИрдВ рд╢реБрджреНрдз HTML рдХреЛ рдмрд┐рдирд╛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдпрд╛ рдХреБрдЫ рднреА рдкреНрд░рд╕реНрддреБрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред
рдореИрдВрдиреЗ рдЗрд╕ рд╡рд┐рдЪрд╛рд░ рдХреЗ рд╕рд╛рде рдкреНрд░рдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИ, рдЖрдк рдореЗрд░реА рдкреНрд░рдЧрддрд┐ рдпрд╣рд╛рдБ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ: https://github.com/alfonsogarciacaro/Feliz.Engine
рдЕрднреА рднреА рдХрд╛рдо рдХрд░рдирд╛ рдмрд╛рдХреА рд╣реИ рдФрд░ рдореБрдЭреЗ рдХреБрдЫ рдЪреАрдЬреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рд╕рдВрджреЗрд╣ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ рдФрд░ рдЕрдзрд┐рдХрд╛рдВрд╢ рдлрд╝реЗрд▓рд┐рдЬрд╝ рдПрдкреАрдЖрдИ рдХреЛ рдХрд╡рд░ рдХрд░рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдореБрдЭреЗ рдХреБрдЫ рдмрджрд▓рд╛рд╡ рдХрд░рдиреЗ рдкрдбрд╝реЗ рдереЗ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рд╕рдЪ рд╣реИ рдХрд┐ рдлрд╝реЗрд▓рд┐рдЬрд╝ рдХреЛ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдмрджрд▓рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛрдЧрд╛ред рд▓реЗрдХрд┐рди рдлрд╝реЗрд▓рд┐рдЬрд╝ рдХрд╛ рдПрдХ рд╕рд╛рд░ рд╕рдВрд╕реНрдХрд░рдг рд░рдЦрдиреЗ рдореЗрдВ рдЕрднреА рднреА рдореВрд▓реНрдп рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдХрдИ рд╕рдВрднрд╛рд╡рдирд╛рдПрдВ рдЦреЛрд▓рддрд╛ рд╣реИред рдХреБрдЫ рдЙрджрд╛рд╣рд░рдг:
рдпреЗ рд╕рднреА рдорд╕реМрджреЗ рд╣реИрдВ рд▓реЗрдХрд┐рди рд╡реЗ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдмрд╣реБрдд рдХрдо рдХреЛрдб рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЗрд╕рд╕реЗ рднреА рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рд╡реЗ рд╕рднреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдПрдХ рдкреНрд░рд▓реЗрдЦрд┐рдд рдФрд░ рдкрд░рд┐рдЪрд┐рдд рдПрдкреАрдЖрдИ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рдПрдХреНрд╕реНрдЯреЗрдВрд╕рд┐рдмрд▓ рднреА рд╣реИ: рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЖрдк рдЖрд╕рд╛рдиреА рд╕реЗ рдПрдХ рдмреБрд▓реНрдорд╛рдЗрдВрдЬрд┐рди рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдЗрди рд╕рднреА (рдФрд░ рднрд╡рд┐рд╖реНрдп) рдРрдкреНрд╕ рдХреЗ рд╕рд╛рде рд╕рдВрдЧрдд рд╣реИред 2 рдФрд░ 3 рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдореИрдВ Fable рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рд╡реГрджреНрдзрд┐рд╢реАрд▓ рд╕рдВрдХрд▓рди .NET рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рддреЗрдЬ рд╣реИ рд▓реЗрдХрд┐рди Feliz.Engine .NET рдХреЗ рд╕рд╛рде рд╕рдВрдЧрдд рд╣реИ (рдореИрдВрдиреЗ рд╕рднреА unbox
рд╣рдЯрд╛ рджрд┐рдП рд╣реИрдВ) рдЗрд╕рд▓рд┐рдП рдпрд╣ рдЫреЛрдЯрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЙрдиреНрд╣реЗрдВ F# .NET рд╕рд░реНрд╡рд░ рдХреЗ рд╕рд╛рде рд╕рдВрдЧрдд рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдФрд░ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ HTML рдЬрдирд░реЗрдЯрд░ рдХреЛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рд╕рдВрдЧрдд рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рднреА рдЕрдзрд┐рдХ рдХрд╛рдо рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред
рдЖрдкрдХреЛ рдХреНрдпрд╛ рд▓рдЧрддрд╛ рд╣реИ @ рдЬреИрдж-рдЕрдЬрд╛рдЬ? рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╡рд░реНрддрдорд╛рди рдлреЗрд▓рд┐рдЬ рд░рд┐рдПрдХреНрдЯ рдПрдкреАрдЖрдИ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд╡рд┐рдЪрд╛рд░ рдХреЛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рдЖрдкрдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдРрд╕рд╛ рдХреБрдЫ "рдлреЗрд▓рд┐рдЬ рдкрд░рд┐рд╡рд╛рд░" (рд╢рд╛рдпрдж рдЗрд╕ рд░реЗрдкреЛ рдореЗрдВ) рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП? рдХреНрдпрд╛ рдЖрдк рдирд╛рдо рдХреЗ рд╕рд╛рде рдареАрдХ рд╣реИрдВ, рдпрд╛ рдЖрдк рдХреБрдЫ рдФрд░ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░реЗрдВрдЧреЗ?
рд╣рд╛рдп @alfonsogarciacaro , рдореИрдВ рдЗрд╕ рд╕рдкреНрддрд╛рд╣ рдХрднреА-рдХрднреА рдЗрди рдирдореВрдиреЛрдВ рдореЗрдВ рдПрдХ рдЧрд╣рд░рд╛ рдЧреЛрддрд╛
рдирдорд╕реНрддреЗ,
рдореИрдВрдиреЗ рдХреЛрдб рдкрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рддреНрд╡рд░рд┐рдд рд░реВрдк рд╕реЗ рджреЗрдЦрд╛ рдФрд░ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рд╕рд╛рд░ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдмрдВрдбрд▓ рдЖрдХрд╛рд░ рдкрд░ рдХреБрдЫ рдкреНрд░рднрд╛рд╡ рдкрдбрд╝реЗрдЧрд╛ред рдмрд╕ рдЗрд╕реЗ рдЗрдВрдЧрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЕрдкрдиреЗ рд╡рд░реНрддрдорд╛рди рд╕реНрд╡рд░реВрдк рдореЗрдВ рдлрд╝реЗрд▓рд┐рдЬрд╝ рдХреА рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рдереАред
рд╣рд╛рдВ, рдПрдХ рдкреНрд░рднрд╛рд╡ рдХреА рдЙрдореНрдореАрдж рд╣реИ, рд╕рд╡рд╛рд▓ рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдХрд┐рддрдирд╛ рдмрдбрд╝рд╛ рд╣реИ :) рдореИрдВ рдЙрдореНрдореАрдж рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдордзреНрдпрдо-рдмрдбрд╝реЗ рдРрдкреНрд╕ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рджреЛрдиреЛрдВ рд╢реИрд▓рд┐рдпреЛрдВ рдореЗрдВ рдлреБрд▓рдорд╛-рдбреЗрдореЛ рдЬреИрд╕рд╛ рдХреБрдЫ рд╣реЛрдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛, рдЗрд╕рд▓рд┐рдП рд╣рдо рддреБрд▓рдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЕрдиреБрдХреВрд▓рди рдЕрд╡рд╕рд░реЛрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдЬрд╛рдВрдЪрдирд╛ рднреА рджрд┐рд▓рдЪрд╕реНрдк рд╣реЛрдЧрд╛ рдХрд┐ рдлрд╝реЗрд▓рд┐рдЬрд╝ рд╣реЗрд▓реНрдкрд░реНрд╕ рдмрдВрдбрд▓ рдЖрдХрд╛рд░ рдХреЛ рдХреИрд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдпрд╛ рдирд╣реАрдВред рдЕрднреА, рдлрд╝реЗрд▓рд┐рдЬрд╝ рджреНрд╡рд╛рд░рд╛ рдЙрддреНрдкрдиреНрди рдХреЛрдб рдХрд╛рдлреА рдЕрдЪреНрдЫрд╛ рд╣реИ рдФрд░ рд╕рдВрдХрд▓рд┐рдд JSX рдЬреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдЫреЛрдЯрд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ .createElement("div")
рдЬреИрд╕реА рдХрдИ рдХреЙрд▓реЛрдВ рдХреЗ рджреЛрд╣рд░рд╛рд╡ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ (рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ gzip рд╕рдВрдкреАрдбрд╝рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВ рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпреЗ рдХреЙрд▓)ред
рд╣рд╛рдБ, рдореИрдВ рдХрд▓реНрдкрдирд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рдХрд┐ рдХреЛрдИ рднреА рдЕрдиреНрдп рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдЗрд╕ рдЕрджреНрднреБрдд рдПрдкреАрдЖрдИ/рд╢реИрд▓реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХрд╛ рд╡рд┐рд░реЛрдз рдХрд░реЗрдЧрд╛ред рдореЗрд░реА рдПрдХрдорд╛рддреНрд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЪрд┐рдВрддрд╛ рдпрд╣ рдереА рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдЗрд╕ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░реЗрдЧрд╛, рдФрд░ рдХреБрдЫ рдПрд░реНрдЧреЛрдиреЛрдорд┐рдХ рдореБрджреНрджреЗ рдЬрд┐рдиреНрд╣реЗрдВ рдореИрдВрдиреЗ рдКрдкрд░ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рдХрд┐рдпрд╛ рд╣реИред
рд╣рд╛рдп @alfonsogarciacaro , рдореИрдВрдиреЗ рдЙрджрд╛рд╣рд░рдг рдХреЛрдб рдкрд░ рдПрдХ рдЕрдЪреНрдЫреА рдирдЬрд╝рд░
ReactDOM
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реНрдерд┐рд░ html рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИред Feliz.ViewEngine рдбреЙрдЯрдиреЗрдЯ рдореЗрдВ рд╕реНрдерд┐рд░ HTML рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рдХрд░рддрд╛ рд╣реИред рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдПрдкреАрдЖрдИ рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХрд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрдиреНрдп рдЪреБрдиреМрддрд┐рдпреЛрдВ рд╕реЗ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛ рдЧрдпрд╛ рд╣реИ рдЬреИрд╕рд╛ рдХрд┐ @ рд╢рдореВ рдиреЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ: рддреАрд╕рд░реЗ-рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рджреЛрдиреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЙрддреНрдкрдиреНрди рдХреЛрдб рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЕрдм рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рд╛рдл рд╣реИред рдпрд╣ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ, рд╢реИрд▓рд┐рдпреЛрдВ рдФрд░ рдмрдЪреНрдЪреЛрдВ рдХреЛ рдПрдХ рд╕реВрдЪреА рдореЗрдВ рдорд┐рд▓рд╛рддрд╛ рд╣реИ рдЬреЛ рдлрд╝реЗрд▓рд┐рдЬрд╝ рдХреЗ рд╡рд░реНрддрдорд╛рди рдПрдкреАрдЖрдИ рдХреЛ рддреЛрдбрд╝рддрд╛ рд╣реИредрдХреБрд▓ рдорд┐рд▓рд╛рдХрд░, рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рдЕрднреНрдпрд╛рд╕ред рдЖрдкрдХреЗ рд╕рд╛рде рдИрдорд╛рдирджрд╛рд░ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдирдП рдПрдкреАрдЖрдИ рдХрд╛ рдмрд╣реБрдд рдмрдбрд╝рд╛ рдкреНрд░рд╢рдВрд╕рдХ рдирд╣реАрдВ рд╣реВрдВ рдФрд░ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рдорд╛рдирдХреАрдХреГрдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рд░рд┐рдПрдХреНрдЯ рдореЗрдВ рдЕрдзрд┐рдХ рдбреЙрдХреНрд╕, рдЙрджрд╛рд╣рд░рдгреЛрдВ рдФрд░ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рд╡рд░реНрддрдорд╛рди рдЕрдиреБрднрд╡ рдХреЛ рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рдореЗрдВ рд╕рдордп рдмрд┐рддрд╛рдКрдВрдЧрд╛ред рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдЕрдЧрд░ рдореИрдВ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝рд╛ рдирдХрд╛рд░рд╛рддреНрдордХ рдЖ рд░рд╣рд╛ рд╣реВрдВ, рддреЛ рдЖрдкрдиреЗ рд╢рд╛рдпрдж рдЗрд╕ рдкрд░ рдмрд╣реБрдд рдХрд╛рдо рдХрд┐рдпрд╛ рд╣реИред рдореБрдЭреЗ рдлрд╝реЗрд▓рд┐рдЬрд╝ рдХреЗ рд╕рдорд╛рди рдирд╛рдо рд░рдЦрдиреЗ рдореЗрдВ рдХреЛрдИ рдЖрдкрддреНрддрд┐ рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╕реЗ рдкреНрд░реЗрд░рд┐рдд рдерд╛ред
рдирдореВрдиреЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж @ рдЬреИрдж-рдЕрдЬрд╛рдЬ! рдореИрдВ рдЖрдкрдХреА рдИрдорд╛рдирджрд╛рд░реА рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХрд░рддрд╛ рд╣реВрдВред Feliz.Engine рдХреЛ рд╕рдВрднрд╛рд╡рд┐рдд рдЙрдкрдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдирд╛ рдХрд┐рддрдирд╛ рдЖрд╕рд╛рди/рдХрдард┐рди рдерд╛ (рдореБрджреНрд░рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдХреЗрд╡рд▓ 50 рд▓рд╛рдЗрдиреЗрдВ рд╣реИ) рдпрд╣ рдЬрд╛рдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рд╕реАрдПрд╕рдПрд╕ рдФрд░ рдПрдЪрдЯреАрдПрдордПрд▓ рдкреНрд░рд┐рдВрдЯрд░ рдХреЗрд╡рд▓ рддреНрд╡рд░рд┐рдд рдЙрджрд╛рд╣рд░рдг рдереЗред рдореИрдВрдиреЗ Fable & рдиреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдХреНрдпреЛрдВрдХрд┐ рд╡реГрджреНрдзрд┐рд╢реАрд▓ рд╕рдВрдХрд▓рди рдмрд╣реБрдд рддреЗрдЬрд╝ рд╣реИ, рд▓реЗрдХрд┐рди "рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ" рдЗрд╕реЗ .net рдкрд░ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред Snabbdom рдПрдбреЗрдкреНрдЯрд░ рдХрд╛ рдорддрд▓рдм рдПрдХ рдФрд░ рддреНрд╡рд░рд┐рдд рдЙрджрд╛рд╣рд░рдг рднреА рдерд╛, рд▓реЗрдХрд┐рди рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкрд╕рдВрдж рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдПрдХ рдФрд░ рдорд╛рдорд▓рд╛ рд╣реИ :)
рд╡реИрд╕реЗ рднреА, рдореИрдВрдиреЗ рдЕрдВрддрддрдГ рдорд╣рд╕реВрд╕ рдХрд┐рдпрд╛ рд╣реИ рдХрд┐ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рддреЛрдбрд╝реЗ рдмрд┐рдирд╛ рд╡рд░реНрддрдорд╛рди рдлрд╝реЗрд▓рд┐рдЬрд╝ рд░рд┐рдПрдХреНрдЯ рдРрдкреНрд╕ рдХреЛ рдЕрдореВрд░реНрдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИ (рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рд╢реБрд░реБрдЖрдд рд╕реЗ рдХрд╣ рд░рд╣реЗ рдереЗ ) рддреЛ рдЪрд▓рд┐рдП рдЗрд╕реЗ рдЙрди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдорд╛рдирд╛рдВрддрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд░реВрдк рдореЗрдВ рд░рдЦрддреЗ рд╣реИрдВ рдЬреЛ рдЕрдиреНрдп рд░реЗрдВрдбрд░рд░реНрд╕ рдХреЗ рд╕рд╛рде рдкреНрд░рдпрд╛рд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдПрдХ рдлреЗрд▓рд┐рдЬ рдЬреИрд╕рд╛ рдПрдкреАрдЖрдИ
@alfonsogarciacaro рдпрд╣ рдЕрджреНрднреБрдд рд▓рдЧ рд░рд╣рд╛ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ #262 рдореЗрдВ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдХреЗрд╡рд▓ рдПрдХ рдЪреАрдЬ рдЬрд┐рд╕реЗ рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╛рдж рдХрд░рддрд╛ рд╣реВрдВ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ Fable.React рд╕реЗ Feliz рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рд╕реЗ 'рдпрд╣ рд╕рд┐рд░реНрдл рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ' SSR рд╣реИред Feliz рдФрд░ Feliz.ViewEngine рджреЛрдиреЛрдВ рд╣реА рдЕрджреНрднреБрдд рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╣реЛрдиреЗ рд╕реЗ рдХреЛрдб рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдХреЛрдб рдХрд╛ рдХреЛрдИ рднреА рдЯреБрдХрдбрд╝рд╛ рдЬреЛ ifdefs рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдХреЗрд╡рд▓ рдЕрдиреНрдп рдХреЛрдб рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ ifdefs рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ - рдХреЗрд╡рд▓ рдЬреЗрдПрд╕ рдХреЗ рд▓рд┐рдП рд╕рд╛рдЗрд▓реЛ рдмрдирд╛рдирд╛, рдбреЙрдЯрдиреЗрдЯ- рдХреЗрд╡рд▓ рдФрд░ рджреЛрдиреЛрдВ-рджреБрдирд┐рдпрд╛-рдХреЛрдбред рдХреБрдЫ рднреА рдЬреЛ рдЙрд╕ рдЕрдВрддрд░ рдХреЛ рдмрдВрдж рдХрд░рддрд╛ рд╣реИ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдлреЗрд▓рд┐рдЬ рдФрд░ .Net рд╕рд░реНрд╡рд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рдЬреАрд╡рди рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░реЗрдЧрд╛ред
рд╣рд╛рдВред рдпрд╣ рдПрдХ рдЕрдЪреНрдЫрд╛ рдЙрдкрдпреЛрдЧ рдорд╛рдорд▓рд╛ рд╣реЛрдЧрд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЕрдВрдд рдореЗрдВ Feliz.Engine рдореЗрдВ Feliz рдХреЗ рд╕рд╛рде рдХреБрдЫ рдорддрднреЗрдж рд╣реИрдВ , рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рд╣рдореЗрдВ Feliz.Engine React рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛ рдЬреЛ Feliz рдХреЗ рд╕рд╛рде рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзрд╛ рдХрд░реЗрдЧрд╛, рдХреБрдЫ рдРрд╕рд╛ рдЬрд┐рд╕реЗ рдореИрдВ рдЯрд╛рд▓рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ;) рд▓реЗрдХрд┐рди рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рд╣рдо рдПрдХ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ рд╕рдорд╛рдзрд╛рдиред
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
@alfonsogarciacaro рдпрд╣ рдЕрджреНрднреБрдд рд▓рдЧ рд░рд╣рд╛ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ #262 рдореЗрдВ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдХреЗрд╡рд▓ рдПрдХ рдЪреАрдЬ рдЬрд┐рд╕реЗ рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╛рдж рдХрд░рддрд╛ рд╣реВрдВ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ Fable.React рд╕реЗ Feliz рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рд╕реЗ 'рдпрд╣ рд╕рд┐рд░реНрдл рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ' SSR рд╣реИред Feliz рдФрд░ Feliz.ViewEngine рджреЛрдиреЛрдВ рд╣реА рдЕрджреНрднреБрдд рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╣реЛрдиреЗ рд╕реЗ рдХреЛрдб рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдХреЛрдб рдХрд╛ рдХреЛрдИ рднреА рдЯреБрдХрдбрд╝рд╛ рдЬреЛ ifdefs рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдХреЗрд╡рд▓ рдЕрдиреНрдп рдХреЛрдб рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ ifdefs рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ - рдХреЗрд╡рд▓ рдЬреЗрдПрд╕ рдХреЗ рд▓рд┐рдП рд╕рд╛рдЗрд▓реЛ рдмрдирд╛рдирд╛, рдбреЙрдЯрдиреЗрдЯ- рдХреЗрд╡рд▓ рдФрд░ рджреЛрдиреЛрдВ-рджреБрдирд┐рдпрд╛-рдХреЛрдбред рдХреБрдЫ рднреА рдЬреЛ рдЙрд╕ рдЕрдВрддрд░ рдХреЛ рдмрдВрдж рдХрд░рддрд╛ рд╣реИ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдлреЗрд▓рд┐рдЬ рдФрд░ .Net рд╕рд░реНрд╡рд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рдЬреАрд╡рди рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░реЗрдЧрд╛ред