์ง๊ธ ์ฐ๋ฆฌ๋ ์๋น์ค์ ๋ํ ์์ ํ CRUD ์์ ์ ๊ฐ์ง๊ณ ์์ง๋ง GUI๋ ์์ต๋๋ค. ์ฌ์ฉ์ ์ ๋ ฅ์ ์ํ ๊ฐ๋จํ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ด ์๋ค๋ฉด ์ข์ ๊ฒ์ ๋๋ค. ํํ ๋ฆฌ์ผ์ด๋ ์ฝ๋ ์๋ ์์ฑ๊ธฐ๋ฅผ ํตํด ๊ฐ๋ฅํฉ๋๋ค. Feather๋ ๋ชจ๋ ํ๋ก์ ํธ์ ๋ฏธ์น ์จ์์ด ๋ ๊ฒ์ ๋๋ค.๋์:
@takaaptech ์ ์ ๊ฐ์ฌํฉ๋๋ค! ์ฐ๋ฆฌ๋ @feathersjs/core-team ์ฌ์ด์์ ์ด๊ฒ์ ๋ํด ๊ฝค ๋ง์ด ์ด์ผ๊ธฐํ์ต๋๋ค. ํ์คํ ์ ํ์ ํ๋ฌ๊ทธ์ธ์ด์ด์ผ ํ์ง๋ง ํ์คํ ํ ์ ์์ต๋๋ค. ๋๋ 3.0 ์ด์ ํ์ ์ด๊ฒ์ ์ ์ ์ ์ผ๋ก ๋๋ฆด ๊ฒ์ด๋ค.
@ekryski ์ ๋ง ๊ฐ์ฌํฉ๋๋ค! ๊นํธ์ ์ ๋ง ๊ต์ฅํฉ๋๋ค!
์๋ ํ์ธ์, ์ ๋ CRUD ์์ ์ ์ํ ๊ฐ๋จํ GUI๊ฐ ์๋ค๋ ์์ด๋์ด๊ฐ ๋ง์์ ๋๋๋ฐ, ์ด๋ฅผ ์ด๋ป๊ฒ ์ฒ๋ฆฌํ ๊ณํ์ธ์ง ์์ธํ ์๊ณ ์ถ์ต๋๋ค. ORM์ด ๋ด๋ถ์์ ์ฌ์ฉ๋๋ ๊ฒ๊ณผ๋ ๋ณ๊ฐ๋ก ๋ชจ๋ธ ์ ์๋ฅผ ํ์คํํ๊ธฐ ์ํด JSON ์คํค๋ง์ ๊ฐ์ ๊ฒ์ด ํ์ํ์ง ์์ต๋๊น? ์ ๋ ์คํค๋ง์ ๋ฐ๋ผ GUI๋ฅผ ์๋์ผ๋ก ์์ฑํ๋ ์์ ์ ๋ง์ด ํด์๊ณ ํด๋น ์คํค๋ง๋ฅผ ํด๋น ํ๋์ ํจ๊ป ๋ ธ์ถํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ๋ํ ๋ฐ์ดํฐ ์ ํจ์ฑ ๊ฒ์ฌ(์ต๋ ๊ธธ์ด, ๋ฌธ์์ด ์ ๊ท์ ๋ฑ), ์์ฑ ํธ์ง๊ธฐ(๋ ์ง ์ ํ ํ๋์ ๋ ์ง, ๋ ์ง/์๊ฐ ๋๋ ์๊ฐ ํธ์ง) ๋ฑ์ ๋ํด ์๊ฐํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
์ด๋ฌํ ์คํค๋ง ์ ์(bookshelf์ ๊ฐ์ ์ผ๋ฐ์ ์ธ ๋ฐฑ๋ณธ ์คํ์ผ ํ์ฅ์ด ์๋ ๋ธ๋ผ์ฐ์ ํธํ ๋จ์ JSON ๊ธฐ๋ฐ)๋ฅผ ์ฐ๊ด๊ณผ ํจ๊ป ๊ตฌํํ๊ณ ๋ค๋ฅธ ORM์ ๋ํ ์คํค๋ง ์ด๋ํฐ๋ฅผ ์์ฑํ๋ ๊ฒ์ด ํฉ๋ฆฌ์ ์ด์ง ์์ต๋๊น?
์ด๋ ๊ฒ ํ๋ฉด ๋ชจ๋ธ์ ๋ค์ ์์ฑํ ํ์๊ฐ ์์ผ๋ฏ๋ก swagger๋ฅผ ๊ตฌํํ๊ณ ORM ๊ฐ์ ์ ํํ๋ ๊ฒ์ด ๋ ์ฌ์์ง๋๋ค.
ํธ์ง: ๋ฐ์ดํฐ ๋ถ๊ฐ์ง๋ก ์๊ฐ ์ผ๋ง๋ ๋ง์ ๊นํธ์ด ํ์ํ์ง ์๊ฐํ๋ ๊ฒ์ด ๋งค์ฐ ์ค์ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ํ์ง๋ง ๋ฐ์ดํฐ ๋๊ธฐํ, ์คํ๋ผ์ธ ๊ธฐ๋ฅ ๋ฑ์ ๊ตฌํํ๊ธฐ ์ํด ๋ง์ ๋ ธ๋ ฅ์ ํ๊ณ ์๋ ๊ฒ์ ์ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ํนํ ํด๋ผ์ด์ธํธ ์ธก ๊ธฐ๋ฅ์ ๋ํด ์๊ฐํ๋ ๊ฒฝ์ฐ ๊นํธ์ด ๋ฐ์ดํฐ ๋ชจ๋ธ๊ณผ ๋ ๋ฐ์ ํ๊ฒ ์ฐ๊ฒฐ๋์ด์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
๋๋ ๊ทธ๊ฒ์ด Strapi๊ฐ ์ ๊ณตํ๋ ๊ฒ๊ณผ ์ ์ฌํด์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ๊ทธ์ studio
๋ฐ admin panel
๋ฅผ ๋ณด์ญ์์ค.
Strapi๋ ์์ ๊ณผ ๋ฐ์ ํ๊ฒ ์ฐ๊ฒฐ๋์ด ์์ผ๋ฏ๋ก ์ด ๊ธฐ๋ฅ์ ๊ตฌํํ๊ธฐ๊ฐ ๋ ์ฝ์ต๋๋ค.
๊ทธ๊ฑด ๊ทธ๋ ๊ณ , parse-dashboard(https://github.com/ParsePlatform)๋ผ๋ parse๋ ์ ๊ณตํฉ๋๋ค. ์ฌ๊ธฐ์๋ ORM ์ค์์ ์ ํํ๊ธฐ ์ํ ๊นํธ๊ณผ ๊ฐ์ ์ ์ฐ์ฑ์ ์์ต๋๋ค.
๊นํธ์ด ์ค์ ๋ก ์ด ๊ธฐ๋ฅ์ ์ ๊ณตํ๊ธฐ๋ก ๊ฒฐ์ ํ๋ค๋ฉด ๊นํธ์ด ์ด ๋ฌธ์ ๋ฅผ ์ด๋ป๊ฒ ํด๊ฒฐํ ์ง ๊ธฐ๋๋ฉ๋๋ค.
๋ด๊ฐ ๋ณด๋ ์๋ฃจ์ ์ ๊ธฐ๋ฅ์ ๋ ๊ฐ์ง ์ ํ์ ๋ชจ๋๋ก ๋ถํ ํ๋ ๊ฒ์ ๋๋ค.
๋ฐ๋ผ์ ์ฐ๋ฆฌ๋ ๊ฐ ORM์ ๋ํด ํ๋์ฉ ๊ณ ์ ํ ํ๋ฌ๊ทธ์ธ๊ณผ ๋ง์ ์ด๋ํฐ๋ฅผ ๊ฐ๊ฒ ๋ฉ๋๋ค.
์ฌ๊ธฐ์ ๋ช ๊ฐ์ง ์์ด๋์ด๊ฐ ์์ผ๋ฉฐ ์ฌ๊ธฐ์๋ ๋ค๋ฅธ ๋ถ๋ถ์ด ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
1) API๋ฅผ ์๊ฐ์ ์ผ๋ก ํตํฉํ๋ UI ์ธํฐํ์ด์ค. ํํฌ์ ์๋น์ค์ ํ๋ฆ์ผ๋ก ์ฌ๊ธฐ์๋ ์๋นํ ์ ์ฌ๋ ฅ์ด ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
2) API๋ก ์์
ํ๊ณ ์๋น์ค๋ฅผ ํ์ํ ์ ์๋ ๋ณ๋์ ๊ด๋ฆฌ ์ธํฐํ์ด์ค. Postman ๊ณผ ๋น์ทํ์ง๋ง ํนํ Feathers์ฉ์
๋๋ค.
3) ์ฑ์์ CRUD ๊ด๋ฆฌ์ ๋ฐฑ์๋ ์์ฑ. ์ด๊ฒ์ ์๋ง๋ ๊ฐ์ฅ ์ด๋ ต๊ณ ๊ฐ์ฅ ๊น๋ค๋ก์ธ ๊ฒ์
๋๋ค. ์๋ก ๋ค๋ฅธ ํ๋ก ํธ์๋ ํ๋ ์์ํฌ์ ๋ํด ์๋ก ๋ค๋ฅธ ๊ตฌํ์ ์์ฑํด์ผ ํ๋ฉฐ(Feathers ์์ "๊ณต์" ํ๋ก ํธ์๋ ์คํ์ด ์๋ ๊ฒฝ์ฐ) ์์ฑ๊ธฐ๋ ์ ์ง ๊ด๋ฆฌํ๊ณ ๋๋ฒ๊ทธํ๊ธฐ ์ด๋ ต์ต๋๋ค.
์ ๋ CRUD๋ฅผ ์์ฑํ์ง ์์ผ๋ ค๊ณ ํฉ๋๋ค. ๊ฐ์น๊ฐ ์๊ธฐ ๋๋ฌธ์ tcomb
, tcomb-form
, feathers-tcomb
๋ฐ feathers-action
๋ฅผ ์ฌ์ฉํ์ฌ ๋ด ํ๋ก์ ํธ์์ ์ด๋ฏธ ์ด ์์
์ ์ํํ๊ณ ์์ต๋๋ค. business-stack
์์ ๋ชจ๋ ํจ๊ป ํ์ธํ์ธ์. ์ถ์ฒํฉ๋๋ค. :)
@ahdinosaur ์ ๋ง ๋ฉ์ง๋ค์. @daffl ์ฐ๋ฆฌ๊ฐ ๊ทธ ์ค ์ผ๋ถ๋ฅผ ๋น๋๊ฒ ํ๊ณ ์ถ์ ์๋ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ ์ด๋ feathers-tcomb
์ ๋. ์ ํจ์ฑ ๊ฒ์ฌ๋ฅผ ์ฒ๋ฆฌํด์ผ ํ๋ค๊ณ ์๊ฐํ๋ ๋ฐ๋ก ๊ทธ ๋ฐฉ๋ฒ์ด๋ฉฐ ์ด๋ฅผ ์ํํ๊ธฐ ์ํด ๋ฌด์์ ์ฌ์ฉํ๋ API ๋ฌธ์์ CRUD UI๋ฅผ ์๋์ผ๋ก ์์ฑํ๋ ค๋ฉด ์ผ๋ถ ๋ชจ๋ธ/๋ฆฌ์์ค ์ ์๊ฐ ์์ด์ผ ํฉ๋๋ค. feathers-swagger
๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ชฝ๊ตฌ์ค ๋ชจ๋ธ ์ ์๋ฅผ Swagger์ ์ ๊ณตํฉ๋๋ค.
๋ค์ํ DB์ ORM์ด ์๋ค๋ ์ ์ ๊ฐ์ํ ๋ ์ด๊ฒ์ ์ด๋ป๊ฒ ๋ถํ ํ ์ง ๊ฒฐ์ ํด์ผ ํฉ๋๋ค. ๋๋ tcomb ๊ฐ์ ๊ฒ์ด ๊ฝค ๊ฐ์น๊ฐ ์๋ ๊ฒ์ ๋ณผ ์ ์์์ง๋ง ๊ทธ๊ฒ์ด ORM์ ์ฌ์ฉํ๋ ๋ชฉ์ ์ ๋ฌดํจํํฉ๋๊น? ๊ทธ๊ฒ์ด ๋ฐ๋์ ๋์ ๊ฒ์ ์๋์ง๋ง ์๋์ DB์ ๊ด๊ณ์์ด ์คํค๋ง/๋ชจ๋ธ/๋ฆฌ์์ค ์ ์์์ ์ผ๊ด์ฑ์ ์ ์งํ๋ ๊ฒ์ด ์ค์ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฝ๊ฒ ๊ต์ฒดํ ์ ์๋๋ก ๋ง๋๋ ๊ฒ์ด ์ค์ํ๋ฏ๋ก Sequelize ๋ชจ๋ธ, mongoose ๋ชจ๋ธ์ ์ฌ์ฉํ๋ ์์ด๋์ด๋ฅผ ์ข์ํ์ง ์์ง๋ง Tcomb ๋๋ ๊ธฐํ๋ฅผ ์ฌ์ฉํ๋ ๋ค๋ฅธ DB์๋ ์ฌ์ฉํ์ง ์์ต๋๋ค.
admin ๋๋ ๋ฌด์ธ๊ฐ์ UI ๋ถ๋ถ์ ๋ํด ๋ค์ ์ฌํญ์ ๋์ํฉ๋๋ค.
A) ์ค๋์ ํ๋ก ํธ ์๋ ํ๋ฏธ๋ฅผ ์ง์ํ๋ ๊ฒ์ ์์ฒญ๋ ์์
์
๋๋ค.
B) ๋ง์ฝ ์ฐ๋ฆฌ๊ฐ ํ๋ก ํธ ์๋๋ฅผ ๊ตฌํํ๋ค๋ฉด, ์๋ฅผ ๋ค์ด React์์, ๊ทธ ์์ ๋์์ ์ฌ์ฉํ๋ ๊ฒ์ ์ฝ์ง ์์ ๊ฒ์
๋๋ค.
๋ฐ๋ผ์ ์ด๊ฒ์ ๋ ๋จ์ ์ธ ์ ๋ฉด์ด ํ์ํ ์๋ ์์ง๋ง(์ฌ์ ํ ์ ํ ์ฌํญ์), ์๋ฅผ ๋ค์ด React๋ฅผ ์ฌ์ฉํ๊ณ ์ถ์ง ์๋ค๋ฉด ๋๋ฌด ๋์ ๊ฒ์ ๋๋ค. ์ฌ๋๋ค์ด ์ฝ๊ฒ ๋ณต์ ํ๊ณ ์ปค๋ฎค๋ํฐ์์ ๋ค์ํ ํ๋ก ํธ ์๋๋ฅผ ๋ง๋ค ์ ์๋๋ก ์ด๊ฒฝ๋์ผ๋ก ๋ง๋ค ์ ์๋ค๋ฉด ์ ๋ง ์ ์๋ํ ๊ฒ์ ๋๋ค.
Django์์ ์๊ฐ์ ๋ฐ์ CRUD-GUI ๋๋ ์ผ์ข ์ ๊ด๋ฆฌ์์ ํจ๊ป ์ ๊ณต๋๋ ๊ฒ์ ์ฐพ๊ณ ์์์ต๋๋ค. ์ ๋ ์ฌ๋ฌ ๋ชจ๋ธ์ ๋ํ JSON ์คํค๋ง๋ฅผ ์์ฑํ๋ ์์ด๋์ด๋ฅผ ๊ฐ์ง๊ณ ๋์์ต๋๋ค. ์ด๋ฌํ ์คํค๋ง๋ฅผ ์ฌ์ฉํ์ฌ ์ ํจ์ฑ ๊ฒ์ฌ ์ฝ๋, mongoose[1] ๋ฐ ๊ธฐํ ๋ชจ๋ธ์ ๋ํ ์คํค๋ง๋ฅผ ์์ฑํ ์ ์์ด์ผ ํฉ๋๋ค. ๊ด๋ฆฌ์๋ฅผ ํ๋์ ์ฐ๊ฒฐํ๋ ๊ฒ์ ์คํค๋ง์ ng-admin[2] ๋ผ์ธ์ ๋ฐ๋ผ ๋ฌด์ธ๊ฐ๋ฅผ ์ฌ์ฉํ์ฌ ๋น๊ต์ ๊ฐ๋จํด ๋ณด์ผ ๊ฒ์ ๋๋ค.
์ด ์ ๊ทผ ๋ฐฉ์์ ์ฅ์ ์ ํน๋ณํ ๊นํธ์ ๋ํ ์ฝ๋๋ฅผ ์์ฑํ ํ์๊ฐ ์๋ค๋ ๊ฒ์ ๋๋ค. (JSON ์คํค๋ง ์์ฑ๊ธฐ ๋ฐ ์ผ๋ถ ์์ฑ๋ ์ ์ฐฉ์ ์ ์ธ) "์ค๋์ ๋ง"์ ๋ํ ๊ฑฑ์ ์ด ์๊ณ ๊นํธ์ด ๊ทธ๊ฒ์ด ์ ๋ง๋ก ์ค์ํ ๊ณณ, ๊ทธ๊ฒ์ด ์ ๊ณตํ๋ REST ๋ฐ Socket.io ์ธํฐํ์ด์ค์ ๋ํ ์๊ฒฌ์ ์ ์งํ์ญ์์ค.
๋จ์ง ๋ด 2์ผํธ, ๋๊ตฐ๊ฐ๊ฐ ์ด๊ฒ์ ๊ด์ฌ์ด ์๋ค๋ฉด ๋๋ ์์ผ๋ก 2~3์ฃผ ์์ ์ด๊ฒ์ ๋ํ ํ๋กํ ํ์ ์ ๋ง๋ค๊ณ ์ถ์ต๋๋ค.
[1] json-schema to mongoose ๋ณํ๊ธฐ: https://www.npmjs.com/package/json-schema-to-mongoose
[2] ng-admin, CRUD ๊ด๋ฆฌ์: https://github.com/marmelab/ng-admin
@AndreSteenveld ์๋ ์ ์ด์ ๊ฐ์ ์์ ์ ์์ํ์ต๋๋ค. ๋ด๊ฐ ์ฌ๊ธฐ์ ๋ชจ์ ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค: https://github.com/marshallswain/AmityApp. ๊ธฐ๋ณธ์ ์ผ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ํ ์ฒ๋ฆฌ์ ๊ด๋ จ๋ ํ๋ ์๋น์ค ๋ชจ์์ธ Amity ์ด๋ํฐ๋ผ๊ณ ํ๋ ๊ฒ์ ์์ฑํ๋ ๊ธฐ๋ฅ์ ํฉ๋๋ค. ์ ๋ MongoDB ๋ฒ์ ๋ง ๋ง๋ค์์ต๋๋ค.
https://github.com/marshallswain/amity-mongodb
amity-mongodb
๋ฅผ ์ฌ์ฉํ๋ฉด ์ ์ฒด MongoDB ์๋ฒ๋ฅผ ๊ด๋ฆฌํ ์ ์์ต๋๋ค. ์ฌ๋ฌ ๊นํธ ์๋น์ค๋ฅผ ์ฌ์ฉํฉ๋๋ค.
๋ชจ๋ ๊ฒ์ด Feathers ์๋น์ค๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ปฌ๋ ์ ์ ์ถ๊ฐ/์ ๊ฑฐํ๋ฉด ์ค์๊ฐ์ผ๋ก ์ ๋ฐ์ดํธ๋ฉ๋๋ค.
์์ง amity
์๋ฒ๋ฅผ Feathers 2.0์ผ๋ก ์
๊ทธ๋ ์ด๋ํ์ง ์์์ต๋๋ค. ๋น์ ์ ๊ทธ๊ฒ์์ ๋น์ ์ด ํ ์์๋ ๋ชจ๋ ๊ฒ์ ๊ตฌํ ์ ์์ต๋๋ค. :)
์์ ํ ๋ชจ๋์์ผ๋ก ๋ง๋ค์์ผ๋ฏ๋ก ์ํ๋ ๊ฒฝ์ฐ amity ์ด๋ํฐ ์์ ๊ณ ์ ํ UI๋ฅผ ๋น๋ํ ์ ์์ต๋๋ค.
๋น์ ์ ์๋ง๋ ng-admin์ ์๊ณ ์์ ๊ฒ์ ๋๋ค. ๋๋ ๊ทธ๋ค์ด ํน์ ๋ฐฑ์๋๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐฉ์์ ์ข์ํฉ๋๋ค. ๋๋ Angular๋ฅผ ์ข์ํ์ง ์์ผ๋ฏ๋ก riot.js๋ก ๊ฑฐ์ ํฌํ ํ์ต๋๋ค.
๋๋ ๋ํ http://forestadmin.com/์ด๋ผ๋ ๊ฝค ์ข์ ๋์์ด ์๋ ๊ฒ์ฒ๋ผ ๋ณด์ ๋๋ค. ์ ๋ฃ ๋ฐ ํธ์คํ ์ด์ง๋ง ๋ฌด๋ฃ๋ก ๋ก์ปฌ์์ ์๋ํ ์ ์์ต๋๋ค. ์ ์์๋ Forest ๋ฏธ๋ค์จ์ด ๋ค์์ Feathers ๋ฏธ๋ค์จ์ด๋ฅผ ๋ก๋ํ๋ฉด ์ฆ์ ์๋ํ๋ค๊ณ ๋งํ์ต๋๋ค. ๊ณง ์๋ํด ๋ณด๊ฒ ์ต๋๋ค.
@ekryski @SeyZ
๋ฌด๋ฃ ์ํํธ์จ์ด์
๋๊น?
Hey @josx - 1๋ช ์ ์ฌ์ฉ์๋ฅผ ์ํ ๋ฌด๋ฃ ์๊ธ์ ๊ฐ ์์ต๋๋ค :)
์๋ / ์ฌ์ฉ / ๋ณธ ์ ์ด ์๋ค๋ฉด StrongLoop API ํ๋ ์ ์ํฌ๋ RestFUL ์๋น์ค์ ๋ํ ๋งค์ฐ ๋ฉ์ง ์น UI๋ฅผ ์์ฑํฉ๋๋ค ... ์ง๊ธ์ http://loopback.io ์ ๋๋ค (IBM์ด Strongloop๋ฅผ ์ธ์ ํ ํ). ์ด์จ๋ ๊ฑฐ๊ธฐ์ ๋น๋๋ ๊ฐ์น๊ฐ ์๋ ๋ฌด์ธ๊ฐ๊ฐ ์์์ง๋ ๋ชจ๋ฆ ๋๋ค...
@ekryski-forestadmin.com ์ ๋ณด์์ง๋ง ๋ก์ปฌ์์ ๋ฌด๋ฃ๋ก ์๋ํ ์ ์๋ ์์น/๋ฐฉ๋ฒ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ์ฐ๋ฆฌ๋ ์ฐจ์ธ๋ ๊ธฐ์ (์ธํฐ๋ท ์ก์ธ์ค๊ฐ ์๋ ๋ฐฉํ๋ฒฝ ๋ค)์ ๊ธฐ๋ฐ์ผ๋ก feathersjs๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ์ฐพ๊ณ ์์ผ๋ฏ๋ก ๋ชจ๋ ๊ฒ์ด ๋ก์ปฌ์์ ํธ์คํ ๋ ์ ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค. :)
์๋ ํ์ธ์ @sjmcdowall - ์ฌ์ฉํ๋ ORM( Sequelize , Mongoose ๋๋ Loopback )์ ๋ฐ๋ผ Forest ํจํค์ง๋ฅผ ์ฌ์ฉํ์ฌ ์ฑ์ ์ค์นํ ์ ์์ต๋๋ค.
๋ฐ์ดํฐ๊ฐ Forest๋ฅผ ๊ฑฐ์น์ง ์๊ณ ๋ธ๋ผ์ฐ์ ์์ ์ ํ๋ฆฌ์ผ์ด์
์ผ๋ก ์ง์ ์ ์ก๋๊ธฐ ๋๋ฌธ์ localhost ํ๊ฒฝ( http://localhost...
)์์ Forest๋ฅผ ์๋ํ ์ ์์ต๋๋ค.
1๋ช ์ ๊ด๋ฆฌ์์๊ฒ ์์ ๋ฌด๋ฃ์ ๋๋ค ๐
์ด๊ฒ์ ์ข์ ์๊ฐ์ ๋๋ค. Strapi์ Treeline(Sails ๋ค์ ์๋ ๋์ผํ ํ) ๋ชจ๋ ์ด๋ฅผ ๊ตฌํํ์ต๋๋ค.
@ekryski Forest Admin์ด ์ผ๋ง๋ ๋์์ด ๋์๋์? ๋ง์ ์์ง์ด ํ์ํ์ต๋๊น? ๋ฐ์์์ ์์ฒด ์ฌ์ฉ์ ์ง์ ๊ด๋ฆฌ UI๋ฅผ ๊ตฌ์ถํ์ง๋ง ํฌ๋ฆฌ์คํธ๊ฐ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ์๋ํ๋ค๋ฉด ์ํฌ๋ก๋๋ฅผ ์ ๊ฑฐํ๋ ๊ฒ์ด ์ข๊ฒ ์ฃ ?
@Mentioum ๋๋ ํ๋ก์ ํธ์์ mongoose์ ํจ๊ป ์ด์ด ์์๊ณ ์ฐ๋ฆฌ๋ ์๊ฐ์ด ๋๋ฌด ์ด๋ฐํ์ฌ ng-admin์ผ๋ก ๊ฐ๋ค. Forest, Feathers ๋๋ ๋ด๊ฐ ๋ฐ๋ณด์ธ์ง ์ฌ๋ถ๋ฅผ Forest ํ๊ณผ ํจ๊ป ํด๊ฒฐํ๋ ค๊ณ ํฉ๋๋ค. ์ด๋ฒ ์ฃผ ํ๋ฐ์ ๋ ๋ค๋ฅธ ์ ์ ํ ๊ธฐํ๋ฅผ ์ค ์๊ฐ์ด ์์ด์ผ ํฉ๋๋ค. ํ์คํ ๋ค์๋ณด๊ณ ํ ๊ฒ์ ๋๋ค.
@Mentioum ์ฐจ์์ ํ์ฉํ๊ฒ ์ต๋๋ค. ์ ๋ Forest์์ @SeyZ ์ ํจ๊ป ์ผํ๊ณ ์์ต๋๋ค. @ekryski์ ๊ด๋ จ๋ ๋ฌธ์ ๋ฅผ ์กฐ์ฌํ ๊ฒ์ ๋๋ค. ์ด์จ๋ Forest์ ๊ด์ฌ์ด ์์ผ์๋ฉด ์ธ์ ๋ ์ง Sandro ๋๋ ์ ์๊ฒ ์ฐ๋ฝํด ์ฃผ์ญ์์ค(์ด๋ฉ์ผ์ [email protected]). ๊ทธ๋ฌ๋ฉด ํจ๊ป ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด ๋๋ฆฌ๊ฒ ์ต๋๋ค.
Forest๋ ์ฌ์ด๋ ํ๋ก์ ํธ๋ฅผ ์ํด Sequelize๋ฅผ ์ฌ์ฉํ์ฌ FeathersJS๋ฅผ ์์ ํ๊ณ ์์ผ๋ฏ๋ก ๋ฌธ์ ๊ฐ mongoose๋ก ์ ํ๋ ์ ์์ต๋๋ค. ๋ค์์ Forest๋ฅผ ์ถ๊ฐํ๊ธฐ ์ํด ์กฐ์ ๋ app.js ํ์ผ์ ์์ง ์ ๋๋ค.
๋ฏธ์ํ์ง๋ง ๋๋ ๊ทธ๊ฒ์ด ์์ ์ํํธ์จ์ด/์คํ ์์ค๊ฐ ์๋๋ผ๋ ์ฒ๊ณผ ๊ฐ์ ๊ด๋ฆฌ์ ์์
์ ๋ํ ์์ ์ ๋ณด์ง ๋ชปํฉ๋๋ค.
๋๋ ์ฐ๋ฆฌ๊ฐ ngadmin o ์ ์ฌํ ์์
์ ํ๋ ๊ฒ์ด ๋ ๋ซ๋ค๊ณ ์๊ฐํฉ๋๋ค.
@ekryski ๊ฐ์ฌํฉ๋๋ค.
@VinzGhyz ๊ฐ์ฌํฉ๋๋ค. ์ ๋ง ์น์ ํ์ง๋ง ๊ฐ์ฌํ์ง ์์ต๋๋ค. mongoose์ ํจ๊ป ์๋ํ๋ค๋ ๊ฒ์ ์๊ธฐ ์ ๊น์ง๋ ์ฐ๋ฆฌ๊ฐ ์ค์ค๋ก ์ ์ง ๊ด๋ฆฌํ๊ณ ์๋ ์๋ ์๋ฃจ์ ์ด ์ด๋ฏธ ์์ผ๋ฏ๋ก ์ด์ ์ ๋ ํ ์๊ฐ์ด ์์ต๋๋ค. ์ฐ๋ฆฌ๊ฐ ์ ํํด์ผ ํ๋ ์ ์ผํ ์ด์ ๋ ํ์ฌ ์๋ฃจ์ ๋ณด๋ค ์์ ๋ถํ๊ฐ 0์ด๊ฑฐ๋ ์์ ๋ถํ๊ฐ ์ ๊ธฐ ๋๋ฌธ์ ๋๋ค.
๋ฌด์จ ์ผ์ด ์ผ์ด๋๋์ง ์ง์ผ๋ด์ผ๊ฒ ์ต๋๋ค.
(์ด์ ์ ์ธ๊ธํ ์ ์ด ์์ง๋ง ์ค์ ๋ก KeystoneJS์๋ ElementalUI( react )๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ ๊ฝค ๊ฒฌ๊ณ ํ ์ต์ ์ ๊ฐ์ถ ํ๋ฅญํ ์๋ ์์ฑ ๊ด๋ฆฌ์๊ฐ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
@Mentioum ์ธ๊ธํด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. KeystoneJS์ ๊ธฐ๋ฅ์ด๋ผ๊ณ ์๊ฐํ๊ณ ์ถ์ต๋๋ค ๐
์ฐ๋ฆฌ๋ ์ค์ ๋ก Keystone์ด ๋งค์ฐ ๊ฐ๋ ฅํ ๋ ๊ฐ์ง ํต์ฌ ๊ฐ๋ ์ธ Keystone Lists์ Admin UI์ ๋ ์ง์คํ ์ ์๋ ๋ฐฉ๋ฒ์ ๋ํด ๋ ผ์ํ๊ณ ์์ต๋๋ค. ๋๋ Feathers์ ๋ํด ์ ์ ๊น์ด ํ๊ณ ๋ค์ง ์์์ง๋ง ๋ด๊ฐ ๋ณธ ๊ฒ์ ๋ฉ์ง๊ฒ ๋ณด์ด๋ฉฐ ์ฝ๊ฐ ๋ค๋ฅธ ์์ญ์ ์ด์ ์ ๋ง์ถ๊ณ ์์ต๋๋ค.
๋ค์ ์ฃผ ๋ฒ์ ์ด ์๋ฐํ์ต๋๋ค(๋ค์ ๋ ์ ๋์ ๋ฒ ํ ์ถ์๋ฅผ ํฌ๋งํจ). ์ด๋ ์์ ํ ๋ฐ์/๋ฆฌ๋์ค UI ๋ฐ ์๋ก์ด API๋ฅผ ํฌํจํ์ฌ 1๋ ๋์ ์ฌ์์ฑ๋์์ต๋๋ค. ์ ๋ Feathers์ ํ๋ ฅํ์ฌ ํฌ๋ก์ค์ค๋ฒ๋ฅผ ์ค์ด๊ณ ํ๋ก์ ํธ๋ฅผ ํธํ ๊ฐ๋ฅํ๊ฒ ๋ง๋๋ ๋ฐฉ๋ฒ์ ์์๋ด๋ ค๊ณ ํฉ๋๋ค. ๊ด์ฌ์ด ์๋ค๋ฉด ๋ง์ด์ฃ .
์ฐ๋ฆฌ๋ ๋ํ ๋ฉ์ง ์์ ๋ฏธ๋์ mongoose์ ๋ํ ์ด๋ ค์ด ์ฐ๊ฒฐ์์ ํด๋ฐฉ๋๊ธฐ๋ฅผ ํฌ๋งํ๋ฉฐ, API/๋ฐ์ดํฐ ์ ์ฅ์์ ์ฐ๊ฒฐํ๋ ๋ฐฉ๋ฒ์ ์ฌ๋ฐ๋ฅธ ์ ์ฐ์ฑ์ ์ ๊ณตํ ์ ์๋ค๋ฉด ๋ ์ ๋ง์ ์ ์์ต๋๋ค. .
Feathers ํ - ๋ ์์ธํ ์์๋ณด๋ ค๋ฉด ์ธ์ ๋ ์ง ๋ฌธ์ํ์ธ์.
@JedWatson ๊ต์ฅํฉ๋๋ค. ์ฐ๋ฆฌ๋ ์์ ํ ํ๋ ฅํด์ผ ํฉ๋๋ค. ์ ๋ฒ์ ์ ๋ณด๊ฒ ๋์ด ๊ธฐ์ฉ๋๋ค. ๋๋ ์ค์ ๋ก Feathers๋ฅผ ๋ฐฑ์๋ ์กฐ๊ฐ์ผ๋ก ์ฌ์ฉํ๊ธฐ ์ํด Keystone์ ํดํนํ ์ ์๋ ๋ฐฉ๋ฒ์ ๋ํด ๊ธฐ๋ํ๊ณ ์์์ต๋๋ค.
@Mentioum ์ ๋ ๋๊ณผ ๊ฐ์ ๋ฐฐ๋ฅผ ํ๊ณ ์์ต๋๋ค. ๋๋ฌด ๋ฐ๋น ์. Hopefull์ ์ด๋ฒ ์ฃผ์ ๋ด๊ฐ Forest๋ฅผ ์๋์ํฌ ์ ์๋์ง ๋ณด๊ธฐ ์ํด 30๋ถ ์ ๋ ์๊ฐ์ ํ ์ ํ ์ ์์ ๊ฒ์ ๋๋ค.
์ฐ๋ฆฌ๋ ng-admin์ ๊น์ ์ธ์์ ๋ฐ์์ต๋๋ค(์ ๋ Angular์ ์ด๋ ฌํ ํฌ์ ์๋์ง๋ง). ๊ทธ๋ฌ๋ ์คํค๋ง ์๋ฒ ์ธก์์ ์ด๋ฏธ ์ ์ํ ํญ๋ชฉ์ ์ง์ํ๊ธฐ ์ํด ํด๋ผ์ด์ธํธ ์ธก์์ ์ํํ๊ฒ ๋๋ ์์ฉ๊ตฌ/์ค๋ณต์ด ์ฌ์ ํ ๋ง์ด ์์ต๋๋ค.
๊นํธ์ ์๊ธฐ๋์ ๋๋ ๊ฒ์ ๊ธ์ด ๋ ๊ฒ์ ๋๋ค! ๋ด๊ฐ ๊ธฐ์ฌํ๊ฒ ์ต๋๋ค.
@JedWatson @ekryski @daffl
๋ฌธ์ ์์ต๋๋ค. ์ ๋ Keystone์ผ๋ก ๋ง์ ๊ฒ์ ๋ง๋ค์์ต๋๋ค. (์ ๋ ํฌ์ ๋๋ค) (๊นํธ๋ ๋ง์ฐฌ๊ฐ์ง์ ๋๋ค):
http://161london.com (ํด๋ผ์ด์ธํธ ์์
)
http://thenidocollection.com (ํด๋ผ์ด์ธํธ ์์
)
http://headstartapp.com (ํ์ฌ ์์)
๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ๋ Feathers๋ฅผ ์ค์ Headstart ์ฑ(๋ชจ๋ React ๋ฐ React Native atm - '๋ธ๋ผ์ฐ์ ์ฑ'์ ์ซ์ดํ๋ ๊ธฐ์ ์ ์ํด Electron์ด ๋ํํ ์ผ๋ถ)์ ๊ตฌ๋ํ๋ ๋ง์ ์์ ์๋น์ค๋ฅผ ํ์ํ๋ ๊ฐ๋จํ ๋ฐฉ๋ฒ์ผ๋ก ์ฌ์ฉํ๊ณ ์์ต๋๋ค.
์ด๊ฒ์ ์ฝ๊ฐ์ ์คํธ๋ ์น๊ฐ ๋ ์ ์์ง๋ง ์ผ์ข ์ ORM์ด ์๋ ํค์คํค์ ๋ํด ์ง์ ์ผ๋ก ์๊ฐํ๊ณ ์๋ค๋ฉด ๊นํธ์ ํค์คํค๊ณผ ํจ๊ป ์คํ๋๋ ๋ง์ดํฌ๋ก์๋น์ค๋ก ์ฌ์ฉํ๊ณ ๊ทธ๋ฅ ์ฌ์ฉํ๋ ๊ฒ์ด ํจ์ฌ ๋ ์์ํ์ง ์์๊น์?
๊ทธ๋ฐ ์์ผ๋ก keystone์ ์ฌ์ ํ โโ๋ชฝ๊ตฌ์ค๋ก ๋ชจ๋ ๊ฒ์ ์์ฑํ๋ 'ํด ํค' ์๋ฃจ์ ์ ๊ฐ์ง ์ ์์ง๋ง ์กฐ๊ธ ๋ ํ๋ คํ๊ฒ ํ๊ณ ์ถ๋ค๋ฉด ํน์ Feathers ์๋น์ค์ ๋์ ์ ์ ๊ณตํ๋ ํน์ ๋ชฉ๋ก์ ๋ํด Feathers ๋ง์ดํฌ๋ก์๋น์ค๋ฅผ ๊ฐ๋ํ ์ ์์ต๋๋ค.
๋๋ ์ฌ๋ฌ๋ถ์ด ๊ทธ๊ฒ์ ๊ตฌ์ฑํ๋ ๋ฐฉ๋ฒ์ ๋ํด ํจ์ฌ ๋ ๋์ ์์ด๋์ด๋ฅผ ๊ฐ์ง๊ณ ์๋ค๊ณ ํ์ ํฉ๋๋ค. (Obs๋ Keystone์์ ์ต์คํ๋ ์ค ๊ฒฝ๋ก๋ก ํ ์ ์์ง๋ง ์๋ ์์ฑ ๊ด๋ฆฌ์๊ฐ ์์ ๊ฒ์ ๋๋ค :))
์ง๊ธ ์์ Dockerstack ๊ฟ์ ๊พธ๊ณ ์์ต๋๋ค.
๋ ๋์ค,
๋ชฝ๊ณ DB,
์์ง,
๊นํธ ๋ง์ดํฌ๋ก ์๋น์ค1,
๊นํธ ๋ง์ดํฌ๋ก ์๋น์ค,
PS๊ทธ๋ ์ค,
์๋ผ์คํฑ์์น
๋ฑ....
....
์ด์จ๋ ์ด๊ฒ์ด ์ผ์ด ๋ ์ ์๋ค๋ฉด ๋งํ ํ์๋ ์์ต๋๋ค.
์๋ค ์. ์ด ํ๋ก์ ํธ๋ฅผ ๊ตฌ์ถํ๊ธฐ ์์ํ๋ค๋ฉด ์ฌ๋๋ค์ด ๊ณ์ ๋ณผ ์ ์๋๋ก ์ ์ฅ์๋ ๋ค๋ฅธ ๊ฒ์ ๋ํ ๋งํฌ๋ฅผ ์ ๊ณตํ ์ ์์ต๋๊น?
+1์ ๊นํธ์ด ์๋ ํค์คํค์ ์ฌ์ฉํ์ฌ ๋ช ๊ฐ์ง ํจํด์ ์๋ฅผ ๋ณด๊ณ ์ถ์ต๋๋ค.
์๋ ์์ฑ๋ ๋ฐฑ์๋๋ฅผ ๊ฐ๋ ๊ฒ์ ํ์คํ ์ข์ ์๊ฐ์ ๋๋ค.
GraphQL์ ์ฌ์ฉํ๋ ๊ฐ๋ฐ์์๊ฒ๋ ์ข์ ์๋ฃจ์ ์ด ๋ ์ ์์ต๋๋ค. GraphQL ์๋ ์์ฑ CMS .
๋๋ ์ ์ฉํ๊ฑฐ๋ ๊ด์ฌ์ด ์์ ์ ์๋ ์ ์ ๋์ ์์ ํด ์จ ํ๋ก์ ํธ๊ฐ ์์ต๋๋ค. NodeMDA๋ UML ๋ชจ๋ธ์ ์ฌ์ฉํ๊ณ ์์ค ์ฝ๋๋ฅผ ์์ฑํ๋ ์ฝ๋ ์์ฑ ์์ง์ ๋๋ค. "Entity" ๋ฐ "Service"์ ๊ฐ์ ๊ณ ๊ธ ๊ฐ๋ ์ ๋ชจ๋ธ๋งํ๊ณ ์ ์ฒด ์คํ์ ์์ฑํ ์ ์์ต๋๋ค. ๋ฐฉ๊ธ ์๋ฒ ์ธก์์ Feathers๋ฅผ ์ฌ์ฉํ๊ณ ํด๋ผ์ด์ธํธ ์ธก์์ React + Material-UI๋ฅผ ์ฌ์ฉํ์ฌ ์์ ํ ์ฑ์ ์์ฑํ๋ ํ๋ฌ๊ทธ์ธ์ ์๋ฃํ์ต๋๋ค. ๋ชจ๋ธ๋งํ๋ ๊ฐ ์ํฐํฐ์๋ ์ ์ฒด CRUD ํธ์ง๊ธฐ๊ฐ ์์ต๋๋ค.
์ ์ฒด ํ๋ ์์ํฌ๋ MIT ๋ผ์ด์ ์ค๊ฐ ์์ง๋ง ํ์ฌ ์์ฒด ๋ชจ๋ธ๋ง ๋๊ตฌ๊ฐ ์์ต๋๋ค. ํ์ฌ ๋ชจ๋ธ๋ง ์ฑ์ StarUML์ ์ฌ์ฉํ๊ณ ์์ง๋ง ๊ฐ๊ฒฉ์ด ์ ๋ ดํ๊ณ ๋ฉํ ๋ฐ์ดํฐ๊ฐ XMI์ ๊ฐ์ xml ๋ฌธ์๊ฐ ์๋ JSON์ ์ ์ฅ๋์ด ์๊ธฐ ๋๋ฌธ์ ๋๋ค. StarUML์ ์์ฉ ์ ํ์ด์ง๋ง ๋ฌด๋ฃ ๋ฌด์ ํ ํ๊ฐ ๊ธฐ๊ฐ(๋ด๊ทธ์จ์ด)์ด ์์ต๋๋ค. ๋๋ ์ด๋ค ์์ผ๋ก๋ StarUML๊ณผ ์ ํดํ์ง ์์์ต๋๋ค. ๋จ์ง ๊ทธ๋ค์ ๋ชจ๋ธ๋ง ๋๊ตฌ๊ฐ ๋์ ์ฆ๊ฐ์ ์ธ ํ์๋ฅผ ์ถฉ์กฑ์์ผฐ์ ๋ฟ์ ๋๋ค. ๊ทธ๋ฌ๋ NodeMDA๋ ํ๋ฌ๊ทธํ ํ๋ ๊ธฐ๋ฅผ ์ง์ํฉ๋๋ค. ๋๋ ์ฌ๋๋ค์ด ๋น์ฉ์ ์ง๋ถํ์ง ์๊ณ ์ฌ์ฉํ ์ ์๋๋ก ๋น ๋ฅด๊ณ ๋๋ฌ์ด UML ํด๋์ค ํธ์ง๊ธฐ๋ฅผ ์์ฑํ๋ ์ฅ๊ฑฐ๋ฆฌ ๋ก๋๋งต์ ๊ฐ์ง๊ณ ์์ต๋๋ค.
์ ๋ Java MDA ํ๋ก์ ํธ(AndroMDA)์ ๊ธฐ์ฌํ ์ ์ด ์๊ณ Node ์ธ๊ณ์์๋ ๋น์ทํ ๊ฒ์ ๊ฐ๊ณ ์ถ์๊ธฐ ๋๋ฌธ์ NodeMDA๋ฅผ ํดํนํด์์ต๋๋ค. ์์ง ์์ฒด๋ ๊ฝค ์ ๋์๊ฐ๊ณ ์์ต๋๋ค. ์ฝ๋๋ฅผ ๋ค๋ฅธ ๋ฐฉ์์ผ๋ก ๋๋ ๋ค๋ฅธ ์ธ์ด๋ก ์์ฑํ๋ ์๋ก์ด ํ๋ฌ๊ทธ์ธ์ ๋ง๋๋ ๊ฒ์ ๋งค์ฐ ์ฝ์ต๋๋ค. ๋๋ "๋ ๋จ์ ์ด์ง๋ง ์ด๋ฆฐ ๋ง์"์ด๋ผ๊ณ ๋งํ๊ณ ์ถ์ต๋๋ค.
๋ฐฑ ์๋์์ Feathers๋ฅผ ์ํํ๋ฏ๋ก ์ฆ์ ์ ์ฉํ๊ฑฐ๋ ๋ค๋ฅธ ์์ ์ ์ํ ์ข์ ์ถ๋ฐ์ ์ด ๋ ์ ์์ต๋๋ค. ํ์ธ ํด๋ด:
https://www.npmjs.com/package/nodemda
๊ทธ๋ฆฌ๊ณ ๊นํธ ํ๋ฌ๊ทธ์ธ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ด์ฉ๋ฉด ์ฐ๋ฆฌ๋ ๊ทธ๊ฒ์ ์ฌ์ฉํ ์ ์์ต๋๋ค: https://github.com/ForestAdmin/lumber
admin-on-rest๋ก ๋ญ๊ฐ๋ฅผ ํ๋ ๊ฒ์ด ์ข์ ๊ฒ์ ๋๋ค.
๊ด์ฌ ์๋ ์ฌ๋์ด ์๋ค๋ฉด. ๋๋ ํ๋ API์ ๋ํ ์ง์์ ์ถ๊ฐํ๊ธฐ ์ํด evolutility-ui-react ํฌํฌ ์์ ์ ์์ํ์ต๋๋ค. ๋ง ๊ทธ๋๋ก ๋ฐฉ๊ธ ์์ํ์ง๋ง ๊ฐ๋จํ ๋ชจ๋ธ์ ๋ํด ์๋ํ๋ ๊ธฐ๋ณธ CRUD๊ฐ ์๊ณ ๋ฐ์ด๋๋ฆฌ ํ์ผ์ ๋ํด ๋ถ๋ถ์ ์ผ๋ก ์๋ํฉ๋๋ค. ์๋ ์ฝ๋๋ฒ ์ด์ค๋ ์ฝ๊ฐ์ ๋ฆฌํฉํ ๋ง์ ์ฌ์ฉํ ์ ์์ผ๋ฉฐ ๋ง์ ํ๋ ์ ํ์ ๋ํ ์ง์/ํ ์คํธ๋ฅผ ์ถ๊ฐํด์ผ ํฉ๋๋ค. ๊ทธ๋ฌ๋ ๋๊ตฐ๊ฐ์๊ฒ๋ ์ ์ฉํ ์ ์์ต๋๋ค. ์์ผ๋ก ๋ช ์ฃผ ๋์ ๋ ๋ง์ ๋ณ๊ฒฝ ์ฌํญ์ ์ ์ฉํ ์์ ์ ๋๋ค.
์ ๋ฌธ์ ์ ๋ํด
์ค๋์ ํ๋ก ํธ ์๋ ํ๋ฏธ๋ฅผ ์ง์
๋๋ Svelte ๊ฐ ์ด๊ฒ์ ๊ฝค ์ ํด๊ฒฐํ๋ค๊ณ ๋ฏฟ์ต๋๋ค( github ). ๊ทธ๊ฒ์ผ๋ก ๋ง๋ ๋ชจ๋ ๊ฒ์ ๋ณดํธ์ ์ด๋ฉฐ ํ๋ ์์ํฌ๊ฐ ์๋ ๋ฐ๋๋ผ JavaScript๊ฐ ๋ฉ๋๋ค.
๋ฏธ๋์ ๋ํ ์ฆ๊ฑฐ์ด๋ฉฐ "์ค๋์" ๊ธฐ์ ๊ณผ ํญ์ ์ํธ ๊ตํ ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์ ๊ฐ๋ ฅํ๊ฒ ์ ์ํฉ๋๋ค.
@ddela-cr admin-on-rest ์ ๋ํ ๋ง์ถคํ ํ๋ ๋ ์คํธ ํด๋ผ์ด์ธํธ๋ฅผ ์์ฑํ๋ ํ๋ก์ ํธ๋ฅผ ์์ํ์ต๋๋ค.
ํ์ธํด์ฃผ์ธ์, ๊ธฐ์ฌ ํ์ํฉ๋๋ค...
https://github.com/josx/aor-feathers-client์ฉ ์ ๋ฒ์ ์ ์ถ์ํ์ผ๋ฉฐ https://github.com/Cambalab/test-feathers-admin ์ ์์ ์ฆ๋ช ๋ ์์ต๋๋ค .
๊ฝค ์ค๋ซ๋์ ์ด ๋์ผํ ์ฃผ์ ๋ก ์ด๋ ค์์ ๊ฒช์๊ธฐ ๋๋ฌธ์ ng-admin ( admin-on-rest
์ ํ์ ํ๋ฒํ AngularJS๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํจ)์ ์ฌ์ฉํ์ฌ ์ ๊ทผ ๋ฐฉ์์ ๊ณต์ ํ๊ณ ์ถ์ต๋๋ค.
ng-admin
& ng-admin.jwt-auth
๋ฅผ Feathers์ ํจ๊ป ์ฌ์ฉํ๋ ๋ฐ ํ์ํ ์ต์ํ์ ๊ตฌ์ฑ์ ์ถ์ถํ์ฌ ์ ์คํ๊ฒ ์ ์๋ ์ ์ฅ์๋ก ์ ํํ์ต๋๋ค: https://github.com/beevelop/feathers-admin-starter
@beevelop ์ํ์ด!
๋ฉฐ์น ์ ์ ng-admin๊ณผ ๊ฑฐ์ ๋์ผํ๊ฒ ์ฌ์ฉํ์ต๋๋ค(ํ์ง๋ง ๊ทํ์ ๋ฒ์ ์๋ ๋ ๋ง์ ๊ธฐ๋ฅ์ด ์์ต๋๋ค). ์ฌ๊ธฐ (๊นํธ ์ฑ, ngadmin ๋ฐ admin-on-rest)์ด ์๋ ๋ฆฌํฌ์งํ ๋ฆฌ๊ฐ ์์ต๋๋ค.
ng-admin ๋ฐ admin-on-rest + feathers๋ฅผ ์ฌ์ฉํ์ฌ ๋์ผํ ์์ ๋ฅผ ๊ฐ์ ํ ์ ์์ต๋๋ค.
์๋ค ์,
๊ฐ ํ๋ ์์ํฌ๋ ๊ด๋ฆฌ ์ธํฐํ์ด์ค๋ฅผ ์ํ ๋ฐํด๋ฅผ ์ฌ๋ฐ๋ช ํด์ผ ํฉ๋๋ค. "feather admin", "laravel admin", "rails admin" ๋ฑ์ด ์์ต๋๋ค. ๋ฏธ์ณค์ฃ ? ์ด๊ฒ์ด ๋ด๊ฐ Lumber(https://github.com/ForestAdmin/lumber)๋ฅผ ์ถ์ํ ์ด์ ์ ๋๋ค. ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฐ๊ฒฐํ๋ ๋์ ๊ด๋ฆฌ์๋ฅผ ์ํด ํน๋ณํ ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์์ฑํฉ๋๋ค(์ฆ, ๊ด๋ฆฌ ๋ง์ดํฌ๋ก์๋น์ค๋ฅผ ์์ฑํจ). .
์ด ์๋ฃจ์ ์ ๋ํด ์ด๋ป๊ฒ ์๊ฐํ์ญ๋๊น?
๋ด ํ๋ก์ ํธ์ @SeyZ ๋ ์คํ ๊ฐ๋ฅํ์ง ์์ต๋๋ค. ์๋ํ๋ฉด ์ฐ๋ฆฌ๊ฐ ๋ชจ๋ ์ํํธ์จ์ด๋ฅผ ์ ์ดํ๊ธฐ๋ก ๊ฒฐ์ ํ๊ธฐ ๋๋ฌธ์ ๋๋ค. ๋ฐ๋ผ์ ๋ฌด๋ฃ ์ํํธ์จ์ด๊ฐ ์๋๋ฉด ์๋น์ค๋ฅผ ๊ตฌ์ ํ ์ ์์ต๋๋ค.
๋ํ ๊ฐ๋ฐ์์ ๊ด์ ์์ ๋ณผ ๋ ํ๋ฅญํ ์ผ์ ํ๋ค๊ณ ์๊ฐํ์ง๋ง ์ปค๋ฎค๋ํฐ์๋ ์ ์ฉํ์ง ์์ต๋๋ค.
์์ ์ํํธ์จ์ด๋ฅผ ํต์ฌ์ผ๋ก ํฌํจํ๋ ๋น์ฆ๋์ค ๋ชจ๋ธ์ ์๊ฐํ ์ ์์ต๋๋ค.
๊ทธ๋ฅ ๋ด 2 ์ผํธ.
@josx Lumber๋ ์์ ํ ์คํ ์์ค์ด๊ณ Forest๋ ์๋์ผ๋ก ๋ฉ์ง UI๋ฅผ ์ ๊ณตํ๋ ์๋น์ค์ ๋๋ค(ํฌ๋ง:D). ๋ฌผ๋ก ๋ชจ๋ ๊ฒ์ด ์์ ํ ๋ฌด๋ฃ์ ๋๋ค!
admin-on-rest ์ ์ ๋ฐ์ดํธ๋ ๋ฒ์ ์ ์ดํด๋ณด์ธ์. ๊ทธ๊ฒ์ ๋๋์ต๋๋ค.
๋๋ ์ง๊ธ ์ฌ๊ธฐ์ ๊ฝค ์ข์ ํด๊ฒฐ์ฑ ์ด ์๋ค๊ณ ์๊ฐํ๋ฏ๋ก ์ง๊ธ์ ์ด๊ฒ์ ๋ซ์ ๊ฒ์ ๋๋ค. ํต์ฌ ํ์ ๊ณต์์ ์ธ ์์ ์ ํ๊ณ ์์ง ์์ผ๋ฉฐ ๊ฐ๊น์ด ์์ผ ๋ด์ ๊ทธ๋ ๊ฒ ํ ๊ณํ๋ ์์ต๋๋ค.
์ด ๋ฌธ์ ๋ ์ ์ ๊ธธ์ด์ง๊ณ ์์ง๋ง ์๋ก์ด ๋ฌธ์ ๊ฐ ๋ฐ์ํ ๊ฒฝ์ฐ๋ฅผ ๋๋นํ์ฌ ์ ๊ทธ๊ณ ์ถ์ง ์์ต๋๋ค. ์์ง ์ธ๊ธ๋์ง ์์ ํญ๋ชฉ ์ค ์ ํฉํ๋ค๊ณ ์๊ฐ๋๋ ํญ๋ชฉ์ด ์์ผ๋ฉด ์ธ์ ๋ ์ง ๊ฒ์ํด ์ฃผ์ธ์! ์ด๊ฒ์ด ํ ๋ก ๊ฒ์ํ์ด ๋๊ธฐ ์์ํ๊ฑฐ๋ ๊ฐ์ ๋ด์ฉ์ด ๋ง์ด ๋ณด์ด๊ธฐ ์์ํ๋ฉด ์ค๋ ๋๋ฅผ ์ ๊ธ ๊ฒ์ ๋๋ค.
๋ชจ๋ ์ ๋ ฅ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค! ์ฌ๋ฌ๋ถ์ ์ปค๋ฎค๋ํฐ๋ฅผ ํ๋ฅญํ๊ฒ ๋ง๋ค๊ณ ์์ต๋๋ค! โค๏ธ
์ด๋ค ๊ท๋ชจ์ ํ๋ก์ ํธ์์๋ ๊ด๋ฆฌ ํ์ด์ง๋ฅผ ๋ง๋ค์ด์ผ ํฉ๋๋ค. GUI ๊ด๋ฆฌ ํ์ด์ง๋ฅผ ์์ฑํ๊ธฐ ์ํด ๋ค๋ฅธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ํ ๋งํฌ๊ฐ ์๋ ๋ฌธ์์ ํ์ด์ง๋ฅผ ์์ฑํด์ผ ํ ๊น์? ์ฆ์ ์ฌ์ฉํ ์ ์๋ ์๋ฃจ์ ์ด ์์ผ๋ฉด ์ข๊ฒ ์ง๋ง ์ต์ํ ์ต๊ณ ํ์ง์ ์๋ฃจ์ ์ ์ถ์ฒํ ์๋ ์์ต๋๋ค.
@kulakowka ์ํ๊ณ ํ์ด์ง์ ์คํํฐ ์คํ ์น์ ๋ค์์ ์น์ ์ ์ถ๊ฐํ๋ ๊ฒ์ด ๊ฐ์ฅ ํฉ๋ฆฌ์ ์ ๋๋ค. https://docs.feathersjs.com/v/auk/ecosystem/readme.html
Loopback ๋ฐ Angular๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ ๋๋ฑํ ์๋ฃจ์ ๋ ์กด์ฌํฉ๋๋ค. Colmena-cms (์ด์ ์๋ Loopback Angular Admin์ผ๋ก ์๋ ค์ง)๋ผ๊ณ ํฉ๋๋ค.
Feathers๋ฅผ admin-on-rest ์ ๊ฒฐํฉํ๋ ๊ฒ์ด ๊ฐ์ฅ ํฉ๋ฆฌ์ ์ ๋๋ค. ๊ทธ๋ฌ๋ฉด ๊ด๋ฆฌ ํ์ด์ง๋ฅผ ๋ ๋๋งํ๋ ๋ฐฉ๋ฒ์ ์ง์คํ ํ์ ์์ด ๋ ์ฌ์ด์ ๋ค๋ฆฌ๋ฅผ ๊ตฌ์ถํ๋ ๋ฐ ์ฃผ๋ก ์ง์คํด์ผ ํ๊ธฐ ๋๋ฌธ์ ๋๋ค.
ํ๋์ admin-on-rest์ ์์กดํ๋ ์๋ก์ด ์๋ฃจ์ ์ ๊ฒฝ์ฐ ์ด ๋ ์ข ์์ฑ์ ์ฝ๊ฒ ์ ๋ฐ์ดํธํ ์ ์๋ ๋ฐฉ๋ฒ์ด ํ์ํฉ๋๋ค.
๋๋ ๊ทธ๋ฌํ ์๋ฃจ์ ์ ๊ตฌ์ถํ๊ณ ์ ์งํ๋ ๊ฒ์ด Colmena๋ณด๋ค ์ ์ ๋ ธ๋ ฅ์ ๋ค์ฌ์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
๋๋ ๊ณผ๊ฑฐ์ colemena-cms์ ๊ธฐ์ฌํ์ง๋ง ์ด๊ฒ์ ๋จ์ง ๋ฃจํ๋ฐฑ์ ์ํ ๊ฒ์ ๋๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ํด์์ ์ทจํ๋ ๊ด๋ฆฌ์์ ๊ฐ์ ์ฑ์ ์ฌ์ฉํ๋ ๊ฒ์ด ์๋ฒฝํ ์ ํ์ ๋๋ค.
์ฐ๋ฆฌ๊ฐ ์์ ํ๊ณ ์๋ ๋๋ ํ๋ฌ๊ทธ์ธ์ ์ดํด๋ณด์ญ์์ค. https://github.com/josx/aor-feathers-client
๋๊ตฌ๋ ์ง ๊นํธ์ ๋ฐ๋ผ ForestAdmin์ ์ฌ์ฉํ๋ ๋ฐ ์ฑ๊ณตํฉ๋๊น?
@loiclouvet ์๋ํ ์ง ์ค๋ ๋์์ง๋ง ๊ณผ๊ฑฐ์ Forest๊ฐ ๊นํธ์ ๋ฐ๋ผ ์์ ํ๊ฒ ํ๋ ๋ฐ ์ฑ๊ณตํ์ต๋๋ค. ์ค๋ ๋ค์ ์๋ํ๊ณ ์ฌ๊ธฐ์ ์ ์ฒด ์์ ์์ ๋ฅผ ๊ฒ์ํ๊ณ ์ถ์ต๋๋ค. https://github.com/forestadmin/forest-examples
๋ฉด์ฑ ์กฐํญ: ์ ๋ Forest์ ์ค๋ฆฝ์์ ๋๋ค.
@SeyZ ๋ช ๋ฒ์ ์๋ ๋์ (๋ชฝ๊ตฌ์ค๋ฅผ ์ฌ์ฉํ์ฌ) ๊นํธ๋ก ์ฒ์ ์ค์ ํ์ต๋๋ค. ํ์คํ ์๋ํด ๋ณผ ๊ฒ์ ๋๋ค!
๋ฐฉ๊ธ Forest Admin ์ Feathers์ ํตํฉํ๋ ์์ ์์ ๋ฅผ ์ถ๊ฐํ์ต๋๋ค. https://github.com/ForestAdmin/forest-examples/tree/master/examples/feathers/sql-database
์ง๋ฌธ์ด ์์ผ์๋ฉด ์ฃผ์ ํ์ง ๋ง์ธ์ ;)
@SeyZ ๋ชฝ๊ตฌ์ค๋ก Forest admin์ ์ค์ ํ๋๋ฐ, ๋ด๊ฐ ์๊ธฐ๋ก๋ ํ๋ ํํฌ๋ฅผ ์ฐํํ๊ณ mongodb์ ์ง์ ์ฃผ์ ํฉ๋๋ค. ๋ง๋์?
@nadbm ์ ์ ์ผ๋ก ์ณ์ผ๋ Forest ๊ด๋ฆฌ์๊ฐ Feathers์ ์ ์ด์ธ๋ฆฌ์ง ์๋๋ค๊ณ ์๊ฐํฉ๋๋ค. ๊ฐ์ธ์ ์ผ๋ก ๋๋ admin-on-rest๋ฅผ ์๋ํ๊ณ ์ฑํํ์ต๋๋ค!
์ด ๋ฌธ์ ๋ ๋ซํ ํ ์ต๊ทผ ํ๋์ด ์์๊ธฐ ๋๋ฌธ์ ์๋์ผ๋ก ์ ๊ฒผ์ต๋๋ค. ๊ด๋ จ ๋ฒ๊ทธ์ ๋ํด์๋ ์ด ๋ฌธ์ ์ ๋ํ ๋งํฌ๊ฐ ์๋ ์ ๋ฌธ์ ๋ฅผ ์ฌ์ญ์์ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์ด์ฉ๋ฉด ์ฐ๋ฆฌ๋ ๊ทธ๊ฒ์ ์ฌ์ฉํ ์ ์์ต๋๋ค: https://github.com/ForestAdmin/lumber