Feliz: рдбреЙрдЯрдиреЗрдЯ рд╕рд░реНрд╡рд░ рд╕реЗ рдПрд╕рдПрд╕рдЖрд░ рдХреЛрдб рдЪрд▓рд╛рдиреЗ рдореЗрдВ рд╕рд╣рд╛рдпрддрд╛

рдХреЛ рдирд┐рд░реНрдорд┐рдд 20 рджрд┐рд╕ре░ 2019  ┬╖  19рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: Zaid-Ajaj/Feliz

рдореБрдЭреЗ рдлрд╝реЗрд▓рд┐рдЬрд╝ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓рдЧрднрдЧ рд╕рдм рдХреБрдЫ рдкрд╕рдВрдж рд╣реИ, рд▓реЗрдХрд┐рди рдПрд╕рдПрд╕рдЖрд░ рдХреА рдХрдореА рдХреЗ рдХрд╛рд░рдг рдореБрдЭреЗ рдХреБрдЫ рдЪрд┐рдВрддрд╛ рд╣реЛрддреА рд╣реИред

рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдореИрдВ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдлреЗрд▓рд┐рдЬ рдХреЗ рд╕рд╛рде рдкреНрд░рдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВ рдЗрд╕реЗ рд╕рдордЭрддрд╛ рд╣реВрдВ, рдПрд╕рдПрд╕рдЖрд░ рдХрд┐рд╕реА рднреА рдкреНрд░рдХрд╛рд░ рдХреА рдПрд╕рдИрдУ/рдЦреЛрдЬ рдпреЛрдЧреНрдпрддрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд░реВрд░реА рд╣реИред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдореИрдВ рдПрд╕рдПрд╕рдЖрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рдЬрд╛рдирддрд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ред (SSR рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдмрдирд╛рдирд╛ рдХрд┐рддрдирд╛ рдЖрд╕рд╛рди/рдХрдард┐рди рд╣реЛрдЧрд╛ рд╕рд╣рд┐рддред)

SSR рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрдЧрд╛? рдХреНрдпрд╛ рдпрд╣ рдПрдХ рдмрдбрд╝рд╛ рдЙрдкрдХреНрд░рдо рд╣реИ? рдХреНрдпрд╛ рдЗрд╕ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдпрд╛ рдпрд╣ рддрддреНрдХрд╛рд▓-рдХрд░реАрдм рдЕрднреНрдпрд╕реНрдд рдлрд┐рдХреНрд╕ рд╣реИ?

рд░рд┐рдХреЙрд░реНрдб рдХреЗ рд▓рд┐рдП, SSR рд╕рдорд░реНрдерди рдХреЛ рдкрд╣рд▓реЗ #31 рдФрд░ #49 рдореЗрдВ рдЫреБрдЖ рдЧрдпрд╛ рд╣реИред рд▓реЗрдХрд┐рди #31 SSR рдкрд░ рдХреЗрдиреНрджреНрд░рд┐рдд рдирд╣реАрдВ рдерд╛, рдФрд░ #49 рдХреЗрд╡рд▓ #31 рд╕реЗ рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЙрджреНрдзреГрдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рддреЛ рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ рдХрд┐ рдореИрдВ "рдЖрдзрд┐рдХрд╛рд░рд┐рдХ" рд╡рд┐рдЪрд╛рд░ рдХреЗ рд▓рд┐рдП "рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдПрд╕рдПрд╕рдЖрд░ рдореБрджреНрджрд╛" рдмрдирд╛рдЙрдВрдЧрд╛ред

рд╕рднреА 19 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдореБрдЭреЗ рдЗрд╕реЗ рддреЛрдбрд╝рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рджреЛред

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рд╕рд░реНрд╡рд░-рд╕рд╛рдЗрдб рд░реЗрдВрдбрд░рд┐рдВрдЧ рдХреНрдпрд╛ рд╣реИ? рдпрд╣ рдХреЗрд╡рд▓ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд░реЗрдВрдбрд░ рдкрд░ рд╕реАрдзреЗ рд╕рд░реНрд╡рд░ рд╕реЗ Html рдХреЛ рд░реЗрдВрдбрд░ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд░рдЦрддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рд╕рд╛рде рдЕрдкрдиреЗ рдЖрдВрддрд░рд┐рдХ рд╡рд░реНрдЪреБрдЕрд▓-рдбреЛрдо рдХреЛ рд╣рд╛рдЗрдбреНрд░реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП Html рдХреЛ рд░рд┐рдПрдХреНрдЯ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд░рдЦрддрд╛ рд╣реИред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдПрдЪрдЯреАрдПрдордПрд▓ рд╕реЗ рдЖрдкрдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рд╡рд░реНрдЪреБрдЕрд▓-рдбреЛрдо рдмрдирд╛рдирд╛ рдЬреЛ рд╕рд░реНрд╡рд░ рдкрд░ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рдкрд░реЛрд╕рд╛ рдЧрдпрд╛ рдерд╛ред рдпрд╣ рд╡реЗрдм рдХреНрд░реЙрд▓рд░ рдХреЛ рдЖрдкрдХреЗ рдХреНрд▓рд╛рдЗрдВрдЯ-рд╕рд╛рдЗрдб рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╕рд░реНрд╡рд░ рд╕реЗ рд▓реМрдЯрд╛рдП рдЧрдП рдПрдЪрдЯреАрдПрдордПрд▓ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

рддреЛ рдпрд╣ SSR рдорд╛рдорд▓рд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рд░реНрд╡рд░ / рдмреИрдХрдПрдВрдб рд╕реЗ Feliz рдХреЛ рдЪрд▓рд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ:

// Server-side code
let initialState, unusedCommand = Shared.init()
let dispatch msg = ignore()
let userInterface : ReactElement = Shared.render initialState dispatch
let staticHtml : string = ReactDOM.renderToStaticMarkup userInterface 

рдиреЛрдб.рдЬреЗрдПрд╕ рдкрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рдорд░реНрдерд┐рдд

рдХреНрдпрд╛ рдлреЗрд▓рд┐рдЬ рдПрд╕рдПрд╕рдЖрд░ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдХреЛрдб рдХреЛ рдЪрд▓рд╛рдиреЗ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ? рд╣рд╛рдВ, рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╣реИ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рддрднреА рдЬрдм рдЖрдк рдиреЛрдб.рдЬреЗрдПрд╕ рд╕рд░реНрд╡рд░ рд╕реЗ рдХреЛрдб рдЪрд▓рд╛рддреЗ рд╣реИрдВ, рдбреЙрдЯрдиреЗрдЯ рд╕реЗ рдирд╣реАрдВред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЖрдк рдЕрднреА Feliz рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕реНрдерд┐рд░ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ Gatsby рдпрд╛ Next.js рдЬреИрд╕реЗ рдЖрдзреБрдирд┐рдХ рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░

рдлрд┐рд░ Fable.React рдПрдХ рдбреЙрдЯрдиреЗрдЯ рд╕рд░реНрд╡рд░ рдкрд░ рдХреИрд╕реЗ рдЪрд▓ рд╕рдХрддрд╛ рд╣реИ? рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╡рд╣ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╕рдВрдХрд▓рдХ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдЬреИрд╕реЗ рдХрд┐ рдЬрдм рдЗрд╕реЗ рдбреЙрдЯрдиреЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ Fable/React рд╡рд╛рд▓реЗ рдХреЗ рдмрдЬрд╛рдп рдбреЙрдЯрдиреЗрдЯ рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдЪрдЯреАрдПрдордПрд▓ рдкреНрд░рд╕реНрддреБрдд рдХрд░реЗрдЧрд╛ред рдпрд╣ рдПрдХ рд╣реА рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдПрдкреАрдЖрдИ рд╣реИ рд▓реЗрдХрд┐рди рдпрд╣ Fable рдпрд╛ dotnet рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВ, рдЗрд╕ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИред

рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореБрджреНрджрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдбреЙрдЯрдиреЗрдЯ рд╕реЗ рдПрд╕рдПрд╕рдЖрд░ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлреЗрд▓рд┐рдЬ рдХреЛ

рдХреНрдпрд╛ рд╣рдо Fable.React рдХреЗ рд╕рдорд╛рди рдХреБрдЫ рдХрд░рддреЗ рд╣реИрдВ? рдареАрдХ рд╣реИ, рдпрджрд┐ рдЖрдк рдЖрдВрддрд░рд┐рдХ рдХреЛрдб рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рд╕рднреА рдЬрдЧрд╣ рд╕рднреА рдХрдВрдкрд╛рдЗрд▓рд░ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдмрдбрд╝реА рдЧрдбрд╝рдмрдбрд╝реА рд╣реИред рдореИрдВ рдЗрд╕рдХреЗ рдмрд┐рд▓реНрдХреБрд▓ рдЦрд┐рд▓рд╛рдл рд╣реВрдВ рдФрд░ рдХреБрдЫ рд░рд┐рдПрдХреНрдЯ рдПрдкреАрдЖрдИ рдХреА рд╕реАрдорд╛рдУрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд┐рдП рдмрд┐рдирд╛ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЛ рд╢реБрджреНрдз рд░рд┐рдПрдХреНрдЯ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд┐рдХрд╕рд┐рдд рдХрд░реВрдВрдЧрд╛ рдЬреЛ рдбреЙрдЯрдиреЗрдЯ рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ "рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЕрдиреБрд╡рд╛рдж" рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред

рдлрд╝реЗрд▓рд┐рдЬрд╝ рджрд░реНрдЬ рдХрд░реЗрдВред рд╕рд░реНрд╡рд░

рдореИрдВ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЗ рд╕рдорд╛рдзрд╛рди рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдХрд░рддрд╛ рд╣реВрдВ рдЬреЛ рдлрд╝реЗрд▓рд┐рдЬрд╝ рдХреЗ рд░рд╛рд╕реНрддреЗ рдореЗрдВ рдирд╣реАрдВ рдЦрдбрд╝рд╛ рд╣реЛрдЧрд╛ рдФрд░ рдЕрднреА рднреА рдбреЙрдЯрдиреЗрдЯ рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдлреА рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛: рдПрдХ рд╣реА рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдПрдкреАрдЖрдИ рдХреЗ рд╕рд╛рде Feliz.Server рдирд╛рдордХ рдПрдХ рдЕрд▓рдЧ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдмрдирд╛рдПрдВ рдЬрдм рдпрд╣ рдЖрддрд╛ рд╣реИ рдлреЗрд▓рд┐рдЬ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдЪрдЯреАрдПрдордПрд▓/рд╕реНрдЯрд╛рдЗрд▓/рдкреНрд░реЛрдк рдПрдкреАрдЖрдИ рдФрд░ рд░рд┐рдПрдХреНрдЯ рдШрдЯрдХ/рд╣реБрдХ рдЬреЛ рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рдПрдЪрдЯреАрдПрдордПрд▓ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбреЙрдЯрдиреЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред

рдЙрдкрднреЛрдХреНрддрд╛ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ, рдЖрдк рдЗрд╕ рдХреЛрдб рдХреЛ рдбреЙрдЯрдиреЗрдЯ рдореЗрдВ рд▓рд┐рдЦрддреЗ рд╣реИрдВ:

#if FABLE_COMPILER
open Feliz
#else
open Feliz.Server
#endif 

let initialState, unusedCommand = Shared.init()
let dispatch msg = ignore()
let userInterface : ReactElement = Shared.render initialState dispatch
let staticHtml : string = ReactDOM.renderToStaticMarkup userInterface 

рдЙрдкрд░реЛрдХреНрдд рд╕реНрдирд┐рдкреЗрдЯ рдореЗрдВ, рдлрд╝рдВрдХреНрд╢рди Shared.render Shared.init рдХреНрд▓рд╛рдЗрдВрдЯ рдФрд░ рд╕рд░реНрд╡рд░ рдХреЗ рдмреАрдЪ рд╕рд╛рдЭрд╛ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред

Feliz.Server рдХрдм рдЙрдкрд▓рдмреНрдз рд╣реЛрдЧрд╛?

рдЬрдм рдХреЛрдИ рдХрджрдо рдмрдврд╝рд╛рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдмрдирд╛рддрд╛ рд╣реИред рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд░реЛрдб рдореИрдк рдкрд░ рд╣реИ рд▓реЗрдХрд┐рди рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдирд╣реАрдВ рд╣реИ рдФрд░ рдореИрдВ рдЗрд╕реЗ рд╕реНрд╡рдпрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдбрд░ рд╣реИ рдХрд┐ рдЬрд▓реНрдж рд╣реА рдХрд┐рд╕реА рднреА рд╕рдордп рдирд╣реАрдВ рд╣реЛрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рдХрдИ рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВ рдкреНрд░рдЧрддрд┐ рдкрд░ рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП Feliz.AntDesign , рдЗрд╕реЗ рджреЗрдЦреЗрдВ) рдФрд░ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдлрд╝реЗрд▓рд┐рдЬрд╝ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░реЗрдВрдЧреЗ рд╕реНрд╡рдпрдВ рдФрд░ рдЗрд╕рдХреЗ рдкрд╛рд░рд┐рд╕реНрдерд┐рддрд┐рдХреА рддрдВрддреНрд░ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдирд╛ред

рдХреЛрдИ рдПрд╕рдПрд╕рдЖрд░ рдирд╣реАрдВ =/= рдХреЛрдИ рдЦреЛрдЬ рдпреЛрдЧреНрдпрддрд╛ рдирд╣реАрдВ

рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВ рдЗрд╕реЗ рд╕рдордЭрддрд╛ рд╣реВрдВ, рдПрд╕рдПрд╕рдЖрд░ рдХрд┐рд╕реА рднреА рдкреНрд░рдХрд╛рд░ рдХреА рдПрд╕рдИрдУ/рдЦреЛрдЬ рдпреЛрдЧреНрдпрддрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд░реВрд░реА рд╣реИред

AFAIK рдЖрдзреБрдирд┐рдХ рд╡реЗрдм рдХреНрд░реЙрд▓рд░/рдЗрдВрдбреЗрдХреНрд╕рд░реНрд╕ рдЖрдкрдХреА рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рд╕рд╛рдордЧреНрд░реА рдХреЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрдиреЗ рдХреА рдЦреБрд╢реА рд╕реЗ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВрдЧреЗ, рднрд▓реЗ рд╣реА рдпрд╣ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд░реЗрдВрдбрд░ рдкрд░ рдЙрдкрд▓рдмреНрдз рди рд╣реЛ (рдФрд░ рдбреЗрдЯрд╛ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдЗрд╕реЗ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ)ред Google рдХрд╛ Googlebot рдкреГрд╖реНрда рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рджреЗрдЦрдиреЗ рдФрд░ рдЙрд╕рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд▓рд┐рдВрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реЗрдбрд▓реЗрд╕ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдкрдврд╝реЗрдВ https://vuejsdevelopers.com/2018/04/09/single-page-app-seo/

рд╡рд┐рд╕реНрддреГрдд рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж! рдореИрдВ рдЕрдм рдмрд╣реБрдд рдмреЗрд╣рддрд░ рд╕рдордЭрддрд╛ рд╣реВрдВред

рддрдм рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпрд╣ рдХреЛрдИ рдЧрдВрднреАрд░ рдореБрджреНрджрд╛ рд╣реИред SSR рд╕рдорд░реНрдерд┐рдд рд╣реИ, рдмрд╕ .NET рд╕рд░реНрд╡рд░ рдкрд░ рдирд╣реАрдВ, рдФрд░ SSR рдХреЛ рд╡реИрд╕реЗ рднреА рдЦреЛрдЬрдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

рдмреЗрдЭрд┐рдЭрдХ рдмрдВрдж рдХрд░реЗрдВ рдпрд╛ рдЦреБрд▓рд╛ рдЫреЛрдбрд╝ рджреЗрдВред

@cmeeren рдореИрдВрдиреЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдорд╕реНрдпрд╛ рдХреЛ рджрд░реНрд╢рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рдирд╛рдо рдмрджрд▓ рджрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕реЗ рдЦреБрд▓рд╛ рд░рдЦреВрдВрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ рдХрд┐ Feliz.Server (рд╢рд╛рдпрдж Feliz.Dotnet?) рдЬреИрд╕рд╛ рдкреИрдХреЗрдЬ рд╕рд░реНрд╡рд░-рд╕рд╛рдЗрдб рдПрдЪрдЯреАрдПрдордПрд▓ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдЪреНрдЫрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЙрд╕реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдлреЗрд▓рд┐рдЬрд╝ рдХреЗ рд╕рд╛рде рд╣реИ, рднрд▓реЗ рд╣реА рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ SSR рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реЛ

@ рдЬреИрдж-рдЕрдЬрд╛рдЬ, рдЗрд╕ рдорд╣рд╛рди рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж! рдореИрдВрдиреЗ рдЗрд╕рдХреЗ рд╕рд╛рде рдЦреЗрд▓рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдФрд░ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрд╢реНрдЪрд░реНрдпрдЬрдирдХ рд▓рдЧрддрд╛ рд╣реИред рдХреЗрд╡рд▓ рдПрдХ рдЪреАрдЬ рдЬреЛ рд╣рдореЗрдВ рдЙрддреНрдкрд╛рджрди рдореЗрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХрддреА рд╣реИ, рд╡рд╣ рд╣реИ рдбреЙрдЯрдиреЗрдЯ рдкрд░ рдПрд╕рдПрд╕рдЖрд░ рдХреА рдХрдореАред рдпрд╣ рдмрд╣реБрдд рджреБрд░реНрднрд╛рдЧреНрдпрдкреВрд░реНрдг рд╣реИред Feliz.Dotnet рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рдирд┐рд░реНрдорд╛рдг рдкрд░ рдЖрдкрдХрд╛ рдХреНрдпрд╛ рдЕрдиреБрдорд╛рди рд╣реИ? рдпрд╣ рдХрд┐рддрдирд╛ рдХрдард┐рди рд╣реЛрдЧрд╛?

рд╣реИрд▓реЛ рдорд┐рдЦрд╛рдЗрд▓, рдореБрдЭреЗ рдпрд╣ рд╕реБрдирдХрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЦреБрд╢реА рд╣реБрдИ рдХрд┐ рдлреЗрд▓рд┐рдЬ рдиреЗ рдпрд╣ рдЫрд╛рдк рдЫреЛрдбрд╝реА рд╣реИ рдХрд┐ рдпрд╣ :рдореБрд╕реНрдХрд╛рди рдХреЗ рд▓рд┐рдП рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛:

Feliz.Dotnet рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рдирд┐рд░реНрдорд╛рдг рдкрд░ рдЖрдкрдХрд╛ рдХреНрдпрд╛ рдЕрдиреБрдорд╛рди рд╣реИ?

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

рдПрдХ рдЬрдЯрд┐рд▓рддрд╛ рдмрд┐рдВрджреБ рд░рд┐рдПрдХреНрдЯ рд╕реНрдЯреЗрдЯрдлреБрд▓ рдШрдЯрдХреЛрдВ рдФрд░ рд╣реБрдХ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдбреЙрдЯрдиреЗрдЯ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рд╕рдВрдЧрдд рдмрдирд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рд▓рд┐рдП рдореИрдВ рдпрд╣ рджреЗрдЦреВрдВрдЧрд╛ рдХрд┐ рдПрд╕рдПрд╕рдЖрд░ рдореЗрдВ рд░рд┐рдПрдХреНрдЯ рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЙрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░рддрд╛ рд╣реИред

рд╣рд╛рд▓рд╛рдВрдХрд┐ рдХреБрдЫ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ:

  • рдЪреВрдВрдХрд┐ рдлрд╝реЗрд▓рд┐рдЬрд╝ Fable.React рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ, рдЖрдк рдмрд╕ Fable рдкрд░ рд╡рд╛рдкрд╕ рдЖ рд╕рдХрддреЗ рд╣реИрдВред SSR рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдЖрдкрдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╕рд╛рдЭрд╛ UI рднрд╛рдЧреЛрдВ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд░реЗрдВ рдФрд░ рд╢реЗрд╖ рдлреНрд░рдВрдЯ-рдПрдВрдб рдХреЛ Feliz рдХреЗ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
  • Feliz.Dotnet рдХреЗ рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рдореЗрд░реА рдорджрдж рдХрд░реЗрдВ рдФрд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рдХрд┐рдХ-рд╕реНрдЯрд╛рд░реНрдЯ рдХрд░реЗрдВ рд▓реЗрдХрд┐рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╡рд╣ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдкреВрдЫ рд░рд╣рд╛ рд╣реЛ

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкреНрд░рддрд┐рдкрд╛рджрди рдмрд╣реБрдд рдХрдард┐рди рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬреЛ рдореИрдВрдиреЗ рд╣рдореЗрд╢рд╛ рд╕реЛрдЪрд╛ рд╣реИ рдХрд┐ рд╕рд░реНрд╡рд░ рд╕рд╛рдЗрдб рдХреНрд▓рд╛рдЗрдВрдЯ рд╕рд╛рдЗрдб рдРрдк рдореЗрдВ рд╕рд╛рдорд╛рди "рд╣реБрдХ" рдХреИрд╕реЗ рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛ рд╣реИред рдореЗрд░рд╛ рдорддрд▓рдм рд╣реИ, рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкреНрд░рд╛рд░рдВрднрд┐рдХ рджреГрд╢реНрдп рд╣реИ рддреЛ рдЧреНрд░рд╛рд╣рдХ рдХреЛ рдЗрд╕реЗ рдкрд╣рдЪрд╛рдирдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╕рд╛рде рд╣реА, рдкреНрд░рд╛рд░рдВрднрд┐рдХ рджреГрд╢реНрдп рд╣реЛрдиреЗ рдХрд╛ рдорддрд▓рдм рдпрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕реНрдерд┐рддрд┐ рднреА рд╣реИ рдФрд░ рдпрд╣ рдЧреНрд░рд╛рд╣рдХ рдХреЛ рдХреИрд╕реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ? рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЕрд╡рд╕реНрдерд╛ рд╡рд╛рд▓реЗ рдХреБрдЫ рдЫрд┐рдкреЗ рд╣реБрдП рддрддреНрд╡ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдХреЗ рдпрд╣ рд╕рдВрднрд╡ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рдпрд╣ рдЕрдирд╕реБрдирд╛ рд╣реИ?

@mastoj рдореИрдВ reactroot рдЬреИрд╕реА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рдЬрд╛рдирдХрд╛рд░реА рдЬреЛрдбрд╝ рд░рд╣реЗ рд╣реИрдВред рд╕реНрд░реЛрдд

рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрдкрдХреЛ рдПрд▓реНрдорд┐рд╢ рдХреЗ рдкреНрд░рд╛рд░рдВрдн рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рдЖрд╡реЗрджрди рдХреА рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕реНрдерд┐рддрд┐ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╕реБрд░рдХреНрд╖рд┐рдд рд╕реНрдЯреИрдХ рд░рд╛рдЬреНрдп рдХреЛ рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░ __INIT_MODEL__ рдореЗрдВ рдХреНрд░рдордмрджреНрдз рдХрд░рдХреЗ рдХрд░рддрд╛ рд╣реИред

рдлрд┐рд░ рдЕрдкрдиреЗ рдПрд▓реНрдорд┐рд╢ рдЗрдирд┐рдЯ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ, рдЖрдк рдЬрд╛рдВрдЪрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рдЖрдкрдХреЗ рдкрд╛рд╕ __INIT_MODEL__ рдЪрд░ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕реНрдерд┐рддрд┐ рд╣реИ рдпрд╛ рдирд╣реАрдВред

рдореБрдЭреЗ рдЬреЛ рдпрд╛рдж рд╣реИ, рдЕрдЧрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореМрдЬреВрджрд╛ рдбреЛрдо рд╕реЗ рд╡рд░реНрдЪреБрдЕрд▓рдбреЙрдо рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИ, рдЕрдЧрд░ рдЙрд╕рдиреЗ рдЕрднреА рддрдХ рдЗрд╕реЗ рдкреНрд░рд╛рд░рдВрдн рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред

рдЬрд┐рд░рд╛рдлрд╝ рдХреЗ рд╕рд╛рде рдлрд╝реЗрд▓рд┐рдЬрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП https://github.com/dbrattli/Feliz.Giraffe рдкрд░ рдкрд╣рд▓рд╛ рдЫреБрд░рд╛ред рд╡рд░реНрддрдорд╛рди рдореЗрдВ Feliz рдпрд╛ Fable.React рдкрд░ рдХреЛрдИ рдирд┐рд░реНрднрд░рддрд╛ рдирд╣реАрдВ рд╣реИред рд░рд┐рдПрдХреНрдЯ рд╢реИрд▓реА рд╕реЗ рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдирд╛рдо рдмрджрд▓рдиреЗ рдФрд░ рдЙрдиреНрдирдд рд╢реИрд▓рд┐рдпреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рд╕рд╛рде рдХреБрдЫ рдФрд░ рдХрд╛рдо, рд▓реЗрдХрд┐рди рдмреБрдирд┐рдпрд╛рджреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛рдо рдХрд░ рд░рд╣реА рд╣реИред

рдХрдорд╛рд▓ рд╣реИ @dbrattli! рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрдм рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдХреНрдпрд╛ Html рдФрд░ Styles рдЬреИрд╕реА рдлрд╛рдЗрд▓реЛрдВ рдкрд░ рдПрдХ рдкреИрдХреЗрдЯ рдЬреАрдердм рдирд┐рд░реНрднрд░рддрд╛ рдФрд░ рдЗрдВрдЯрд░рдСрдк рдХреЙрд▓ рдХреЛ рдЫрд╛рдпрд╛ рджреЗрдирд╛ рдЖрдкрдХреЗ рд▓рд┐рдП рдЖрд╕рд╛рди рдмрдирд╛ рджреЗрдЧрд╛?

рд╢рд╛рдпрдж рдЕрднреА рдХреЗ рд▓рд┐рдП рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХрд░рдирд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реИред рд╕рд╣реА рдЕрдореВрд░реНрддрддрд╛ рдЦреЛрдЬрдиреЗ рдореЗрдВ рдХреБрдЫ рд╕рдордп рд▓рдЧреЗрдЧрд╛ред Properties.fs рдФрд░ Styles.fs рдХрд╛рдлреА рдмрджрд▓рд╛рд╡ рд╣реЛрдВрдЧреЗ рдХреНрдпреЛрдВрдХрд┐ рд░рд┐рдПрдХреНрдЯ рдХрд╛ рдЪреАрдЬреЛрдВ рдХреЗ рдирд╛рдордХрд░рдг рдХрд╛ рдЕрдкрдирд╛ рддрд░реАрдХрд╛ рд╣реИред рдореИрдВрдиреЗ рдЬрд┐рд░рд╛рдл рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рднреА рд╣рдЯрд╛ рджрд┐рдпрд╛ рд╣реИ, рддрд╛рдХрд┐ рдЖрдк рдЗрд╕реЗ Fable рдХреЗ рд╕рд╛рде рднреА рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХреЗрдВ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдИрдореЗрд▓ рдкреАрдврд╝реАред рдпрд╣ рдЪреАрдЬреЛрдВ рдХреЛ рдереЛрдбрд╝рд╛ рдФрд░ рдЕрдзрд┐рдХ рднреНрд░рдорд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдмрдирд╛рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рджреЛрд╣рд░рд╛рд╡ рдФрд░ рдЕрд▓рдЧ рдирд╛рдорд╕реНрдерд╛рди рд╣реЛрддреЗ рд╣реИрдВред рдРрд╕реЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рд╢реБрдн рдирд╛рдо рдХреНрдпрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ?

  • рдлреЗрд▓рд┐рдЬред рдЬрд┐рд░рд╛рдл, рдЕрдм рдЬрд┐рд░рд╛рдл рдкрд░ рд╣рдорд╛рд░реА рдирд┐рд░реНрднрд░рддрд╛ рдирд╣реАрдВ рд╣реИ
  • Feliz.StaticHtml, рдЬрдирд░реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд░рдирдЯрд╛рдЗрдо, рдЗрд╕рд▓рд┐рдП рд╕реНрдерд┐рд░ рдирд╣реАрдВ
  • Feliz.Server, рдХреНрд▓рд╛рдЗрдВрдЯ рд╕рд╛рдЗрдб рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬреИрд╕реЗ рдИрдореЗрд▓ рдЬрдирд░реЗрд╢рди рдХреЗ рд▓рд┐рдП
  • Feliz.HtmlView, рдХрд╛ рдЙрдкрдпреЛрдЧ XML рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднреА рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
  • Feliz.Markup, HTML рдФрд░ XML рдЬреЗрдирд░реЗрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реИред
  • Feliz.ViewEngine, Giraffe/Suave ViewEngine.fs рд╕реЗ рдХреЛрдб рдЙрдзрд╛рд░ рд▓реЗрддрд╛ рд╣реИ

рддреБрдо рдХреНрдпрд╛ рд╕реЛрдЪрддреЗ рд╣реЛ? @ рдЬреИрдж-рдЕрдЬрд╛рдЬреВ

рдореБрдЭреЗ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рд╡реНрдпреВрдЗрдВрдЬрд┐рди рдкрд╕рдВрдж рд╣реИред

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

рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж @dbrattli ! рдорд╣рд╛рди рдХрд╛рдо! рдЙрд▓реНрд▓реЗрдЦ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрд╛рдд рд▓рд╛рдкрддрд╛ рд╣реБрдХ рд╣реИред рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ рдХрд┐ рдпрджрд┐ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рдХреЛрдб рд╕рдВрдХрд▓рд┐рдд рдирд╣реАрдВ рд╣реЛрдЧрд╛ред

рд╣рд╛рдБ, рдпрд╣ рд╕рд╣реА рд╣реИ @mvsmal ред рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╣реА React.functionComponent рдЬреЛрдбрд╝ рд▓рд┐рдпрд╛ рд╣реИ рдФрд░ рдЬреИрд╕реЗ-рдЬреИрд╕реЗ рд╣рдо v1 рдХреА рдУрд░ рдмрдврд╝реЗрдВрдЧреЗ, рдореИрдВ рдФрд░ рдЬреЛрдбрд╝реВрдВрдЧрд╛ред

рд╕рднреА рдХреЛ рдирдорд╕реНрдХрд╛рд░, ViewEngine рдкрд░ рдмрдврд╝рд┐рдпрд╛ рдХрд╛рдо @dbrattli! рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдФрд░ рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдореИрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реНрдерд┐рд░ рд╡реЗрдмрд╕рд╛рдЗрдЯреЛрдВ рдХреЗ рд▓рд┐рдП рдлрд╝реЗрд▓рд┐рдЬрд╝ рдПрд╕рдПрд╕рдЖрд░ рдЯреЗрдореНрдкрд▓реЗрдЯ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рд╕реАрдзреЗ рдПрдЬрд╝реВрд░ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдФрд░ рд╕реНрдЯреЛрд░реЗрдЬ рдХреЗ рд╕рд╛рде рд╣реЛрд╕реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдПрд╕рдПрд╕рдЖрд░ рдХреЗ рд╕рд╛рде рдлрд╝реЗрд▓рд┐рдЬрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╡рд┐рдЪрд┐рддреНрд░рддрд╛рдУрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдЪрд▓ рд░рд╣рд╛ рд╣реИ! рдХреБрдЫ рдЪреАрдЬреЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ:

  • рдЗрд╕реЗ рдЖрд╕рд╛рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдПрдХ Feliz.Isomorphic рдкреИрдХреЗрдЬ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдЬрд┐рд╕рдореЗрдВ "рдкреЙрд▓реАрдореЙрд░реНрдлрд┐рдХ" рдкреНрд░рдХрд╛рд░ рдХреЗ рдЙрдкрдирд╛рдо рд╣реЛрдВрдЧреЗ, рдЪрд╛рд╣реЗ рдЖрдк рдлреИрдмрд▓ рдХрдВрдкрд╛рдЗрд▓рд░ рд╣реЛрдВред рдореИрдВ рдЗрд╕реЗ рдЕрднреА рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдФрд░ рд╢рд╛рдпрдж рд╕рд┐рд░рджрд░реНрдж рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рднреА рдХреЛ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдЕрд╕реЗрдВрдмрд▓реА рд╕реЗ рдкреНрд░рддрд┐рдмрд┐рдВрдм рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЙрдкрдирд╛рдо рдЙрддреНрдкрдиреНрди рд╣реЛрдВрдЧреЗред

  • (рдпрд╣ Feliz.ViewEngine рдХреЗ рд▓рд┐рдП рд╣реИ); рд╣рдореЗрдВ рд░рд┐рдПрдХреНрдЯ рдкреНрд░рдХрд╛рд░ рдкрд░ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рдбрдореА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рддрд╛рдХрд┐ рдпрд╣ рд╕рд░реНрд╡рд░ рд╕рд╛рдЗрдб рдкрд░ рд╕рдВрдХрд▓рд┐рдд (рдФрд░ рдХреБрдЫ рдирд╣реАрдВ) рдХрд░ рд╕рдХреЗред рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдкрд░ рд╢реБрд░реБрдЖрдд рдХреА рдФрд░ рдЕрдЧрд░ рд╕рд╣рдорддрд┐ рд╣реБрдИ рддреЛ рдореИрдВ Feliz.ViewEngine рдХреЛ рдЖрдЧреЗ рдмрдврд╝рд╛рдКрдВрдЧрд╛ред

рд╕рднреА рдХрдбрд╝реА рдореЗрд╣рдирдд рдХреЗ рд▓рд┐рдП рдлрд┐рд░ рд╕реЗ рдзрдиреНрдпрд╡рд╛рдж!

рд╣рд╛рдВ, Feliz.ViewEngine рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ ReactElement, рдИрд╡реЗрдВрдЯреНрд╕ рдХреЗ рд▓рд┐рдП рдФрд░ рдЕрдзрд┐рдХ рдбрдореА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ ... рдореИрдВ рдПрдХ SSR рдЙрджрд╛рд╣рд░рдг рднреА рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рд╣рд░ рджрд┐рди рдореБрджреНрджреЛрдВ рдореЗрдВ рднрд╛рдЧ рд▓реЗрддрд╛ рд╣реВрдВред рдХреГрдкрдпрд╛ рдкреАрдЖрд░ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рддрдВрддреНрд░ рдорд╣рд╕реВрд╕ рдХрд░реЗрдВред рдмреАрдЯреАрдбрдмреНрд▓реНрдпреВ, Feliz.Isomorphic рдкреИрдХреЗрдЬ рдХреИрд╕реЗ рдорджрдж рдХрд░реЗрдЧрд╛? рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдореИрдВ рдкреНрд░рддреНрдпреЗрдХ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ #if рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдФрд░ рдореИрдВ рдЪреАрдЬреЛрдВ рдХреЛ рдЖрд╕рд╛рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдиреЗрдорд╕реНрдкреЗрд╕ рдореИрдЪ рдлреЗрд▓рд┐рдЬ рдХрд╛ рдирд╛рдо рдмрджрд▓рдиреЗ рдХрд╛ рд▓реБрддреНрдл рдЙрдард╛ рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдЗрд╕рд╕реЗ рд╡реНрдпреВрдЗрдВрдЬрд┐рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛ рдЬрд╛рдПрдЧрд╛ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП Fable рдХреЗ рднреАрддрд░ рдИрдореЗрд▓ рдЙрддреНрдкрдиреНрди рдХрд░рдирд╛ред рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ Fable рдХреЗ рднреАрддрд░ ViewEngine рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдРрд╕рд╛ рдХреБрдЫ рд╣реИ рдЬреЛ рдХреЛрдИ рднреА рдХрд░реЗрдЧрд╛ рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рд╕рд░реНрд╡рд░ рд╕реЗ рд╣рдореЗрд╢рд╛ рдЕрдкрдиреЗ рд▓рд┐рдП HTML рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВред

#if FABLE_COMPILER
open Feliz
open Feliz.Bulma
#else
open Feliz.ViewEngine
open Feliz.Bulma.ViewEngine
#endif

рдЖрдЗрд╕реЛрдореЛрд░реНрдлрд┐рдХ рдкреИрдХреЗрдЬ рдЗрд╕реЗ рдРрд╕рд╛ рдмрдирд╛ рджреЗрдЧрд╛, рдЖрдкрдХреА рд╕рд╛рдЭрд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ, рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рдЙрд╕реЗ рдЦреЛрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рдФрд░ рдЕрддрд┐рд░рд┐рдХреНрдд рдЙрдкрдирд╛рдореЛрдВ рдХреЗ рдХрд╛рд░рдг рдЖрдкрдХреЛ рдкреНрд░рддреНрдпреЗрдХ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдХрдВрдкрд╛рдЗрд▓рд░ рдЪреЗрдХ рдирд╣реАрдВ рдХрд░рдирд╛ рдкрдбрд╝реЗрдЧрд╛ред

рдЙрджрд╛рд╣рд░рдг рд╕рдорд░реВрдкрддрд╛:

namespace Feliz.Isomorphic

#if FABLE_COMPILER
open Feliz
open Feliz.Bulma

type Html = Feliz.Html

#else
open Feliz.ViewEngine
open Feliz.Bulma.ViewEngine

type Html = Feliz.ViewEngine.Html
#endif

рдлрд┐рд░, рд╕рд╛рдЭрд╛ рдХреА рдЧрдИ рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ, рдмрд╕ Feliz.Isomorphic рдЦреЛрд▓реЗрдВ рдФрд░ рдЕрдм рдЖрдкрдХреЛ рдХрдВрдкрд╛рдЗрд▓рд░ рдЬрд╛рдБрдЪ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдЗрд╕ рд╕рдкреНрддрд╛рд╣ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдореИрдВ рд╡реНрдпреВрдЗрдВрдЬрд┐рди рдореЗрдВ рдЖрдЗрд╕реЛрдореЛрд░реНрдлрд┐рдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ, рдпрд╛ рдореИрдВ рдЕрдкрдирд╛ рдЦреБрдж рдХрд╛ рд░реЗрдкреЛ рд╣реЛрд╕реНрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреМрди рд╕рд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛, рдореИрдВ рдЗрд╕реЗ рдЕрдкрдиреЗ рдкреИрдХреЗрдЬ рдореЗрдВ рд░рдЦрдиреЗ рдХреА рд╕реЛрдЪ рд░рд╣рд╛ рдерд╛, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдХреА рдЕрдкрдиреА рдирд┐рд░реНрдорд╛рдг рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣реИ рдФрд░ рдпрджрд┐ рд╣рдо рдЕрдиреНрдп рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рд╕реЗ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЙрдкрдирд╛рдореЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рдЗрд╕реЗ рдЕрдзрд┐рдХ рдмрд╛рд░ рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛ рдкрдбрд╝ рд╕рдХрддрд╛ рд╣реИред

рддреБрдо рдХреНрдпрд╛ рд╕реЛрдЪрддреЗ рд╣реЛ?

рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд▓рдЧрддрд╛ рд╣реИ! рдЗрд╕реЗ рдЖрдЬрдорд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рджреЗрдЦ рд░рд╣реЗ рд╣реИрдВред рд╢рд╛рдпрдж рдПрдХ рдЕрд▓рдЧ рд░реЗрдкреЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реИред рдореИрдВрдиреЗ Feliz.Bulma.ViewEngine рдХреЛ Feliz.ViewEngine рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдмрджреНрдз рдХрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдм рдореИрдВ рдЗрд╕реЗ Feliz.ViewEngine рдХреА рддрд░рд╣ рд╣реА рд░рд┐рд▓реАрдЬрд╝ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рдЬреЛ рдХрд┐ рдХреЗрд╡рд▓ рдПрдХ рдЯреИрдЧ рдХреЛ рдзрдХреНрдХрд╛ рджреЗрдХрд░ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдореИрдВ рдирд╣реАрдВ рдЪрд╛рд╣рддрд╛ рдХрд┐ рдЙрдирдХреЗ рдкрд╛рд╕ рд╕рдорд╛рди рд░рд┐рд▓реАрдЬрд╝ рд╕рдВрд╕реНрдХрд░рдг рд╣реЛрдВред рд╢рд╛рдпрдж Feliz.Bulma.ViewEngine рдХреЛ рдПрдХ рдЕрд▓рдЧ рд░реЗрдкреЛ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджреЗрдЧрд╛, рдЗрд╕реЗ рдФрд░ рдЕрдзрд┐рдХ рдЖрд╕рд╛рдиреА рд╕реЗ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рд╣рд╛рдп @dbrattli , рдмрд╕ Feliz.Isomorphic nuget рдХреЗ рдкрд╣рд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдзрдХреНрдХрд╛ рджрд┐рдпрд╛ред рдореВрд▓ рд░реВрдк рд╕реЗ рдореИрдВрдиреЗ рдирд╛рдорд╕реНрдерд╛рдиреЛрдВ рдХреЛ рдореИрдк рдХрд┐рдпрд╛ Feliz.X.Y -> Feliz.Isomorphic.Feliz.X.Y ред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрднреА рдХреЗ рд▓рд┐рдП рдХрд╛рдлреА рд╢рд╛рд▓реАрдирддрд╛ рд╕реЗ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИред рдпрд╣рд╛рдБ рд░реЗрдкреЛ рд╣реИ: https://github.com/bengobeil/feliz.isomorphicред рдПрдХ рдирдпрд╛ Feliz рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╢реАрдШреНрд░ рд╣реА рдХреБрдЫ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдЬреЛрдбрд╝реЗрдВрдЧреЗ, рдЕрднреА рдХреЗ рд▓рд┐рдП рдореЗрд░реЗ рдкрд╛рд╕ Feliz рдФрд░ Feliz.Bulma рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдореБрдЭреЗ рдмрддрд╛рдирд╛ рдпрд╣ рдХреИрд╕рд╛ рдЧрдпрд╛!

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдореИрдВрдиреЗ рдереЛрдбрд╝рд╛ рдФрд░ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ред рдпрд╣ рдХреЗрд╡рд▓ рдПрдХ рд╕реНрдерд┐рд░ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдПрдХ рдмрд╛рд░ рдЬрдм рдореИрдВ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрддрд╛ рд╣реВрдВ рддреЛ рдмрд╣реБрдд рд╕реНрдкрд╖реНрдЯ рд╣реЛрддрд╛ рд╣реИред NuGet рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░реЗрдВ, рд╕рдорд╛рдзрд╛рди рдореЗрдВ Feliz.Isomorphic рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЬреЛрдбрд╝реЗрдВ, рдФрд░ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕