์๋ ํ์ธ์ @et1975 , @MangelMaxime , @Zaid-Ajaj, @dbrattli์ ๋๋ค!
๋๋ ์์ผ๋ก Fable.Core 3.0 ์์ ํ์ ์ถ์ํ ์๊ฐ์ ๋๋ค. ๊ทธ๋ฌ๋ ์ด๊ฒ์ ์ฌ๋๋ค์ด Fable.Core๋ฅผ ์ ๋ฐ์ดํธํ๊ฑฐ๋ ์๋ก ๋ค์ด๋ก๋ํ๋ ๊ฒฝ์ฐ ์ฌ์ ํ Fable.Core 2.0์ ์์กดํ๋ ๋ค๋ฅธ ์์ ์ ์ธ ํจํค์ง์ ์ถฉ๋ํ ์ ์์์ ์๋ฏธํ๋ฏ๋ก ์ฐ๋ฆฌ ๋ชจ๋๊ฐ ์ ํจํค์ง์ ์์ ์ ์ธ ๋ฒ์ (Elmish 3)์ ์ถ์ํ ์ ์๋ค๋ฉด ์ด์์ ์ผ ๊ฒ์ ๋๋ค. , Thoth.Json 3, Fable.SimpleHttp ๋ฑ) ๊ฑฐ์ ๋์์.
์ด๋ป๊ฒ ์๊ฐํด? ํจํค์ง๊ฐ ์ค๋น๋์์ต๋๊น? ๋ค์ ์ฃผ์ ์ถ์ ๋ ์ง๋ฅผ ์ ํ๋ ๊ฒ์ด ๊ฐ๋ฅํ ๊น์?
๋๋ ์ด์ Elmish.Bridge๋ฅผ ์ ๋ฐ์ดํธํ๊ณ ์์์ต๋๋ค. ๊ทธ๋ ๊ฒ ํ๋ฉด ์ํํ์ ์ถ์ํ ํ์๊ฐ ์์ต๋๋ค! ๐
elmish 3 ์์ ํ๋ ๊ด์ฐฎ์ต๋๋ค.
prerelease
๋ ์ถ์๋์ง ์ค๋๋์ง ์์๊ธฐ ๋๋ฌธ์ Fable 2.2์ Fable.Core 3.0์ด ์์ ์ ์ธ์ง ์์ง ์ ์ ์์ต๋๋ค.
๊ทธ๋ฌ๋ ์ฐ๋ฆฌ๊ฐ ๊ณผ๊ฑฐ์ ๋ณด์๋ฏ์ด ๋๋ถ๋ถ์ ์ฌ๋๋ค์ prerelease
ํจํค์ง๋ฅผ ์๋ํ์ง ์์ต๋๋ค. :).
nuget์์ Fable.Core
๋ฅผ ์ฌ์ฉํ๋ ๋ชจ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ชฉ๋ก์ผ๋ก ๊ฐ์ ธ์ค๋ ๋ฐฉ๋ฒ์ด ์๋์ง ์๊ณ ์์ต๋๊น? ๋ฐ๋ผ์ ๋ชจ๋ ์ด์ํ๋ฉด ์ดํด๋ณผ ์ ์์ต๋๋ค.
์๋ ์ง๋ฌธ์ ๋ตํ๊ธฐ ์ํด ๋ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์์ ์ ์ธ ์ํ๋ก ๊ฒ์๋ ์ค๋น๊ฐ ๋์์ต๋๋ค.
ํด๋น ๋ชฉ๋ก ์ ์ข ์ ํญ๋ชฉ์ด ๋ก๋๋ ๋ ์ฑ์์ง์ง๋ง ์ข์ ์ถ๋ฐ์ ์ด ๋ ์ ์์ต๋๋ค.
์ด ๋ชฉ๋ก์์ ์ฌ๋ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ๋๋ฝ๋์์ต๋๋ค.
Fable.ReactLeaflet
Fulma.Extensions.Wikiki.*
(์๋ง๋ 6-7๊ฐ๊ฐ ๋๋ฝ๋จ)๊ทธ๋์ ์ผ๋ง๋ ์ข์์ง ๋ชจ๋ฆ ๋๋ค.
๋ด๊ฐ ์๋ค! ์์ ๋ฆด๋ฆฌ์ค ํ ๋ฉฐ์น ์์ ๋ชจ๋ ํจํค์ง๋ฅผ ์ ๋ฐ์ดํธํ ์ ์์ด์ผ ํฉ๋๋ค. ๊ฒ์๋๋ฉด ์ ์๊ฒ ํ์ ๋ณด๋ด์ฃผ์ธ์ ;)
๋ต๋ณํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค! ๊ทธ๋ฐ ๋ค์ ํ ์์ผ์ Fable.Core 3.0์ ๊ฒ์ํ๋ค๊ณ ๊ฐ์ ํด ๋ณด๊ฒ ์ต๋๋ค(์๋ฃ๋๋ฉด ์ฌ๊ธฐ์์ ๋ค์ ์๋ ค ๋๋ฆฌ๊ฒ ์ต๋๋ค). ๊ทธ๋ฌ๋ฉด ๋ค์ ์ฃผ์ ๋๋ฝ๋ ํญ๋ชฉ์ ์ ๋ฆฌํ ์ ์์ต๋๋ค.+1:
์ข์ ์์! ์ ์ง์ฅ ๋๋ฌธ์ ๋ฆฌ์ก์ ์ด ์กฐ๊ธ ๋ฆ์์ง๋ง Fable 3๋ฅผ ์ถ์ํด ์ฃผ์ธ์. ๋ค์ ๋ฌผ ์์ ๋ ์์ ๋๋ง๋ค ๋ฐ๋ผ์ก๊ฒ ์ต๋๋ค.
@alfonsogarciacaro https://github.com/SAFE-Stack/SAFE-BookStore/pull/388 ์ ๊ทธ๋ ์ด๋์ ๊ด๋ จ๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ๋๊น์ง ์์ ์ ์ธ ๋ฆด๋ฆฌ์ค๋ฅผ ์ฐ๊ธฐํ๊ณ ์ถ์ต๋๋ค.
์๋ํ๋ฉด ๋๋ ์ฌ๊ธฐ์ ์ง์ง ๋ฌธ์ ๊ฐ ๋ฌด์์ธ์ง ์ ํ ๋ชจ๋ฅด๊ณ ํด๊ฒฐ์ฑ ์ ๋ชจ๋ฅธ ์ฑ ๋ชจ๋ SAFE ํ๋ก์ ํธ๋ฅผ ์ค๋จํ์ง ์๋ ๊ฒ์ ์ ํธํ๊ธฐ ๋๋ฌธ์ ๋๋ค.
Fable.Core 3 _stablish_๋ ๋ด๊ฐ ์ง์ ๊ฒ์ํ ๋ค๋ฅธ ํจํค์ง(Fable.Promise, Fable.Fetch, Fable.Browser)์ ์ ๋ฒ์ ๊ณผ ํจ๊ป ๋ฐฉ๊ธ ์ถ์๋์์ต๋๋ค. * , Fable.React. ์ฌ๊ธฐ์ Fable.React 5์ ์๋ก์ด ๊ธฐ๋ฅ ์ ๋ํ ๊ฒ์๋ฌผ๋ ์์ต๋๋ค. ์๊ฐ๋ฝ์ด ๊ต์ฐจ ๐ค
Thoth.Json์ด ์์ ์ ์ธ ๋ฒ์ ์ผ๋ก ์ถ์๋์์ต๋๋ค.
Thoth.Elmish.*
๋ฐ Fulma
์ ์ผ๋ถ ํจํค์ง๊ฐ ์์กดํ๊ธฐ ๋๋ฌธ์ ๋๋ ์ง๊ธ Fable.Elmish๋ฅผ ๊ธฐ๋ค๋ฆฌ๊ณ ์์ต๋๋ค.
elmish, .react, .browser ๋ฐ .debugger๋ฅผ ์ถ์ํ์ต๋๋ค.
FontAwesome์ ์ฌ์ฉํ๋ฉด FSC๊ฐ ํ์๋ฉ๋๋ค. ์ค๋ฅ FS0193: ์ปดํ์ผ ๋จ์ 'Fable.React'์ ๋ชจ๋/๋ค์์คํ์ด์ค 'Fable.Import.React'์ ๋ค์์คํ์ด์ค, ๋ชจ๋ ๋๋ ์ ํ 'ReactElement'๊ฐ ํฌํจ๋์ง ์์์ต๋๋ค. [/Users/dbattli/Developer/GitHub/ .../src/์๋ฒ/์๋ฒ.fsproj]
Fable.Elmish.Reaction.3.0.0 ์ถ์
FontAwesome์ ์ฌ์ฉํ๋ฉด FSC๊ฐ ํ์๋ฉ๋๋ค. ์ค๋ฅ FS0193: ์ปดํ์ผ ๋จ์ 'Fable.React'์ ๋ชจ๋/๋ค์์คํ์ด์ค 'Fable.Import.React'์ ๋ค์์คํ์ด์ค, ๋ชจ๋ ๋๋ ์ ํ 'ReactElement'๊ฐ ํฌํจ๋์ง ์์์ต๋๋ค. [/Users/dbattli/Developer/GitHub/ .../src/์๋ฒ/์๋ฒ.fsproj]
prerelease
๋ฒ์ ์ ์ฌ์ฉํ์ง ์์ ๊ฒฝ์ฐ ์ด๋ ์ ์์
๋๋ค.
๋ค์ ํจํค์ง๋ ์์ง ์์ ์ ์ผ๋ก ์ถ์๋์ง ์์์ต๋๋ค.
Thoth.Elmish.*
Fulma
๊ด๋ จ ํจํค์งFable.FontAwesome
Elmish.HMR
์๋ฏธ์ฌ 3.0์ ๊ธฐ๋ค๋ฆฌ๊ณ ์์์ต๋๋ค. ์ด์ ์ด ํจํค์ง์ ์์ ์ ์ธ ๋ฒ์ ์ ์ค๋ ๋๋ ๋ด์ผ ์๊ฐ์ด ์์ ๋ ์ถ์ํ ์์ ์ ๋๋ค. :)
Elmish.Bridge
๋ ์ถ์๋จ
์ด๋ก ์์ผ๋ก ๋ด๊ฐ ๋์น ํจํค์ง๊ฐ ์์ผ๋ฉด ๋ชจ๋ ํจํค์ง๊ฐ ์ง๊ธ ์ถ์๋ฉ๋๋ค.
๋ด๊ฐ ๊ฐ์ง๊ณ ์๋ ๊ฐ๋จํ ์ฑ์ ์
๋ฐ์ดํธํ๋ ค๊ณ ํ์ผ๋ Fable.Elmish.Debugger
prerelease
๋ฅผ ์ ๊ฑฐํ๋ ๋ฐ ๋ฌธ์ ๊ฐ ์์์ต๋๋ค. ์ต์ ์์ ๋ฆด๋ฆฌ์ค๊ฐ 2.0.3
on nuget ์ ์๋ ๊ฒ ๊ฐ์ต๋๋ค. ๋น์ ์ด ๊ทธ๊ฒ์์๋ ๋์ ํ์ธํ ์ ์์ต๋๊น?
์ง๊ธ ์ค๋น๋์ด ์์ด์ผ ํฉ๋๋ค :) https://github.com/elmish/debugger/issues/27
Fable.Node ์๋ ์ผ๋ถ :heart:๋ ํ์ํฉ๋๋ค.
"ํจํท ์ ๋ฐ์ดํธ" ๋ช ๋ น์ผ๋ก ํ๋ก์ ํธ๋ฅผ ์ ๋ฐ์ดํธํ ํ ์ปดํ์ผ์ ๋ฌธ์ ๊ฐ ์์๊ธฐ ๋๋ฌธ์ ์ต์ ๋ฒ์ ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ํฌํจ๋ "Elmish ์์ฉ ํ๋ก๊ทธ๋จ ํ๋ก์ ํธ"์ ๋ํ ์ค์ ํ๋ก์ ํธ ํ ํ๋ฆฟ์ด ํ์ํฉ๋๋ค. ์ด๊ฒ ์ข ๋ด:
_์๋ชป๋ ์์ด ์ฃ์กํฉ๋๋ค_
์๋ ํ์ธ์ @frank-hliva ,
Fable.Elmish.HMR
์ด ์ต์ ๋ฒ์ ์ผ๋ก ์
๋ฐ์ดํธ๋์ง ์์์ผ๋ฏ๋ก 4.0.1
์ฌ์ผ ํฉ๋๋ค.
์๋ ํ์ธ์, ์ ๋ ๋ด ํ๋ก์ ํธ๋ฅผ fable.core 3.0์ผ๋ก ์ ๊ทธ๋ ์ด๋ํ๋ ค๊ณ ํ๊ณ ๋ชจ๋ TypedArrays๊ฐ fable.core์์ ์ฌ๋ผ์ง ๊ฒ์ ๋ฐ๊ฒฌํ์ต๋๋ค. ๋๊ธฐ๋ฅผ ์ดํดํ์ง๋ง Uint8Array(somebuffer, 10, 8)์ ๊ฐ์ ๋ทฐ๋ฅผ ๋ง๋ค ์ ์์์ต๋๋ค. ํ์ค ๋ฐฐ์ด์ ์ฌ์ฉํ์ฌ ๊ทธ๋ ๊ฒ ํ ์ ์๋ ๋ฐฉ๋ฒ์ด ์์ต๋๊น ์๋๋ฉด ๊ทธ๋ฅ emit์ ์ฌ์ฉํ์ฌ ์ง์ ์์ฑํด์ผ ํฉ๋๊น?
Btw Fable.Import.Browser๋ฅผ ์ฌ์ฉํ ๋ ๋ง์ ์ปดํ์ผ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ต๋๋ค(TypedArray๊ฐ ์๊ธฐ ๋๋ฌธ์). ์ข
์์ฑ์ ์๋ฏธ๋ก ์ ๋ฒ์ ๊ด๋ฆฌ๊ฐ ๋์์ด ๋ ์ ์์ต๋๊น?
๊ฑด๋ฐฐ
์๋ ํ์ธ์ @krauthaufen ์ ๋๋ค .
Fable-compiler 2.2 ๋ฐํ, Fable.Core 3 ๋ฐ ๊ธฐํ ๋ธ๋ก๊ทธ ๊ฒ์๋ฌผ์ ๋ณด์ จ์ต๋๊น?
Fable.Import.Browser
๋ ์ด์ ๋ ์ด์ ์ฌ์ฉ๋์ง ์์ผ๋ฉฐ ๋์ฒด ํจํค์ง ์ค ํ๋๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค. ์ ์ง ๊ด๋ฆฌ๊ฐ ๋ ์ฝ๊ณ ๋ง์ ๋ง๋ฒ์ ์ ๊ฑฐํ์ฌ IDE์ ์ฑ๋ฅ์ ํฅ์์ํค๊ธฐ ์ํด ์ฌ๋ฌ ํจํค์ง๋ก ๋ถํ ํ์ต๋๋ค. :)
Uint8Array
์ ๋ํด ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.
@alfonsogarciacaro Fable.Import.Browser
์ ์ ๋ฒ์ ์ ์ถ์ํด์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ฌ๊ธฐ์ [<Osbelete>]
์์ฑ์ ์ ํ ์์ ์ถ๊ฐํ์ฌ ์ฌ๋๋ค์ ๋ค๋ฅธ ํจํค์ง๋ก ๋ฆฌ๋๋ ์
ํ ์ ์์ต๋๋ค.
์ด๋ป๊ฒ ์๊ฐํด?
@MangelMaxime ์ค๋ช
๊ฐ์ฌํฉ๋๋ค.
= 2.*.*
๋์ ํจํค์ง์์ ์๋์ ์ผ๋ก >=
์ข
์์ฑ์ ์ฌ์ฉํ๊ณ ์์ต๋๊น?
๊ฑด๋ฐฐ
์ ํํ๋ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค^^
๊ทธ๊ฒ์ด ๋ฐ๋ก dotnet pack
๊ฐ ๊ธฐ๋ณธ์ ์ผ๋ก ์์ฑํ๋ ๊ฒ์
๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ด๊ฐ ๋ณธ ํ๋ก์ ํธ์ ๋๋ถ๋ถ์ >=
๋ ์ฌ์ฉํ๋ฏ๋ก ์ด ๋ฌธ์ ์ ๋ํด ์ค์ค๋ก์๊ฒ ์ง๋ฌธํ์ง ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๊ทธ๊ฒ์ ๋ํด ๋
ผ์ํ๊ณ ์ถ๋ค๋ฉด ๊ด๋ จ ๋ฆฌํฌ์งํ ๋ฆฌ์์ ์์ ๋กญ๊ฒ ๋ฌธ์ ๋ฅผ ์ฌ์ญ์์ค. :)
@Zaid-Ajaj Fable.Node ํจํค์ง์ ์ ์ ์ง ๊ด๋ฆฌ์์๊ฒ ๋ฌผ์ด๋ด์ผ ํฉ๋๋ค. :) Fable.Node ์ ์ฅ์์์ ๋ฌธ์ ๋ฅผ ์ฌ๋ ๊ฒ์ผ๊น์?
@krauthaufen ํ๋ก์ ํธ ์
๋ฐ์ดํธ์ ๋ฌธ์ ๊ฐ ์์ด ์ฃ์กํฉ๋๋ค. ๋ถํธํจ์ ์ดํดํ์ง๋ง ๋ชจ๋ ๊ฒ์ด ํผ์ ์ ์งํ๊ธฐ์๋ ๋๋ฌด ์ปค์ ธ์ "ํต์ฌ" ํจํค์ง์์ ๊ฐ๋ฅํ ๋ง์ ์ฝ๋๋ฅผ ์ ๊ฑฐํ๊ณ ๊ธฐ์ฌ์๊ฐ ๋ ์ฝ๊ฒ ๋์ธ ์ ์๋๋ก ๋ค๋ฅธ ํจํค์ง๋ฅผ ๋ถํ ํ๋ ค๊ณ ํ์ต๋๋ค. Maxim์ด ๋งํ๋ฏ์ด ์ง์นจ ๋ฐ ๋ค์์คํ์ด์ค ๋ณ๊ฒฝ์ ๋ํ ๋ธ๋ก๊ทธ ๊ฒ์๋ฌผ์ ์ฝ๊ณ ๋ช
ํํ์ง ์์ ๋ถ๋ถ์ด ์์ผ๋ฉด ์๋ ค์ฃผ์ญ์์ค. ํ์ํ๋ ๋ฐฐ์ด์ ๋ํด Fable์ด ๊ฐ์ ๋ฐฉ์(๋ฐฐ์ด, ์ ๊ท์)์ผ๋ก ์ปดํ์ผํ .NET/JS ์ ํ์ ํตํฉํ์ฌ ๋ ๋ง์ ๊ด์ฉ์ ๋ฐ์ธ๋ฉ์ ๋ง๋ค๋ ค๊ณ ํ์ต๋๋ค. Uint8Array
๋ ์๋ฅผ ๋ค์ด byte[]
๋ก ๋ํ๋ฉ๋๋ค. . ๊ทธ๋ฌ๋ ํน์ JS ๊ธฐ๋ฅ์ด ํ์ํ ๊ฒฝ์ฐ ์ด์ JS ์ ํ ๋ฐฐ์ด ๋ฐ์ธ๋ฉ์ ๋ค๋ฅธ ํจํค์ง์ ๊ฒ์ํ๊ฑฐ๋(์ด๋ฅผ ์ํด ์์ ๋ด์ฌ์๊ฐ ํ์ํจ) ํ๋ก์ ํธ์ ๋ณต์ฌ ํ์ฌ Global
๋ก ๋
ธ์ถํ ์ ์์ต๋๋ค. ์์ฑ, ์:
let [<Global>] Uint8Array: Uint8ArrayConstructor = jsNative
@frank-hliva ์
๋ฐ์ดํธ์ ํผ์ ์ ๋๋ ค ์ฃ์กํฉ๋๋ค . ๋ธ๋ก๊ทธ ๊ฒ์๋ฌผ์์ ๋ค์์คํ์ด์ค ๋ณ๊ฒฝ ์ฌํญ์ ํ์ธ ํ์ธ์. ๊ทํ์ ๊ฒฝ์ฐ Fable.Import.React
> Fable.React
& Elmish.Browser.Navigation
> Emish.Navigation
๋ณ๊ฒฝํด์ผ ํฉ๋๋ค.
@alfonsogarciacaro ์๋ฃ
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์ด๋ก ์์ผ๋ก ๋ด๊ฐ ๋์น ํจํค์ง๊ฐ ์์ผ๋ฉด ๋ชจ๋ ํจํค์ง๊ฐ ์ง๊ธ ์ถ์๋ฉ๋๋ค.