{"id":1238,"date":"2013-04-08T18:08:46","date_gmt":"2013-04-08T18:08:46","guid":{"rendered":"http:\/\/brain.payzip.co.kr\/?p=1238"},"modified":"2013-04-08T18:08:46","modified_gmt":"2013-04-08T18:08:46","slug":"%ec%9e%90%eb%b0%94%ec%8a%a4%ed%81%ac%eb%a6%bd%ed%8a%b8-mvc-%ed%94%84%eb%a0%88%ec%9e%84%ec%9b%8d","status":"publish","type":"post","link":"https:\/\/blog.goorigo.com\/?p=1238","title":{"rendered":"\uc790\ubc14\uc2a4\ud06c\ub9bd\ud2b8 MVC \ud504\ub808\uc784\uc6cd"},"content":{"rendered":"<p>Modern Javascript WebApp \ub3d9\ud5a5<\/p>\n<p><strong>+ SPA : Single Page Application<\/strong><\/p>\n<p>&#8211; \ud558\ub098\uc758 HTML \ud30c\uc77c(Single Page)\uc5d0 \uc5ec\ub7ec \ud654\uba74\uc744 \ub2f4\uc544 \uc81c\uacf5<\/p>\n<p>&#8211; \ud654\uba74\uc774 \ubc14\ub014 \ub54c\ub9c8\ub2e4 \uc0c8\ub85c\uc6b4 HTML \ud30c\uc77c\uc744 \uc77d\uc5b4\ub4e4\uc77c \ud544\uc694\uac00 \uc5c6\uc5b4\uc9c0\uae30 \ub54c\ubb38\uc5d0 \uc751\ub2f5\uc131\uc774 \uac1c\uc120\ub428<\/p>\n<p>&#8211; WebApp\uc758 \ud604\uc7ac \uc0c1\ud0dc\/\ud654\uba74\uc744 hash-url(\ud55c HTML \ud398\uc774\uc9c0 \uc548\uc758 \uc704\uce58\ub97c \ub098\ud0c0\ub0b4\uae30 \uc704\ud574 \uc0ac\uc6a9\ud558\ub294 #\uc73c\ub85c \uc2dc\uc791\ub418\ub294 http:\/\/some.domain.com\/some-page.html#some-location \uacfc \uac19\uc740 \ud615\ud0dc\uc758 URL)\ub85c \uad00\ub9ac<\/p>\n<p>&#8211; hash-url\uc744 \uc774\uc6a9\ud558\uc5ec WebApp\uc758 \uc0c1\ud0dc\/\ud654\uba74 \uad00\ub9ac\ud558\ub294 \uac1c\ub150\uc744 Routing\uc774\ub77c\uace0 \ud558\uace0, hash-url\uc744 \ud574\uc11d\ud574\uc11c WebApp\uc758 \uc0c1\ud0dc\/\ud654\uba74\uc744 \uad00\ub9ac\ud558\ub294 \ubaa8\ub4c8\uc744 Router\ub77c\uace0 \ud568<\/p>\n<p><strong>+ Off-line enabled WebApp<\/strong><\/p>\n<p>&#8211; HTML5\uc758 off-line \uc9c0\uc6d0 \uae30\ub2a5\uc744 \ud65c\uc6a9, \ub124\ud2b8\uc6cd\uc5d0 \uc5f0\uacb0\ub418\uc5b4 \uc788\uc9c0 \uc54a\uc544\ub3c4 \ub85c\uceec\uc5d0 \uce90\uc2dc\ub41c WebApp \ucf54\ub4dc\ub97c \uc774\uc6a9\ud574\uc11c WebApp\uc744 \uc2e4\ud589<\/p>\n<p>&#8211; Off-line enabled WebApp\uc774 \ub418\ub824\uba74 \uc11c\ubc84\uc758 \ub3c4\uc6c0 \uc5c6\uc774 \uc2e4\ud589\ub420 \uc218 \uc788\ub3c4\ub85d \ubaa8\ub4e0 \ud504\ub85c\uadf8\ub7a8 \ub85c\uc9c1\uc774 front-end\uc5d0 \uc874\uc7ac\ud574\uc57c \ud568<\/p>\n<p><strong>+ BaaS : Back-end as a Service<\/strong><\/p>\n<p>&#8211; WebApp\uc758 front-end\uc5d0 \ubaa8\ub4e0 \ub85c\uc9c1\uc744 \ub2f4\uace0 \uc815\ud615\ud654\ub41c back-end\ub97c RESTful API \ud615\ud0dc\ub85c \uc81c\uacf5\ud558\ub294 \uac1c\ub150<\/p>\n<p>&#8211; Back-end\uac00 \uc81c\uacf5\ud558\ub294 \ub370\uc774\ud130\ub97c \uac00\uacf5\ud558\ub294 \ubaa8\ub4e0 \ub85c\uc9c1\uc740 front-end\uc5d0 \uc874\uc7ac\ud574\uc57c \ud568<\/p>\n<p><strong>=&gt; SPA, Offline enabled Web App, BaaS \ub4f1 Modern JS WebApp\uc740 \uae30\ubcf8\uc801\uc73c\ub85c \uaddc\ubaa8\uac00 \ud070 front-end \ucf54\ub4dc\ub97c \uc694\uad6c\ud568<\/strong><\/p>\n<p><strong>=&gt;\u00a0<span style=\"text-decoration: underline;\">front-end code\uc758 \uaddc\ubaa8\uac00 \ucee4\uc9d0\uc5d0 \ub530\ub77c \uc18c\uc2a4\ucf54\ub4dc\uc758 \uc720\uc9c0\/\ubcf4\uc218 \ube44\uc6a9\uc744 \uc808\uac10\ud558\uae30 \uc704\ud574 MVC \ud328\ud134\uc744 \uc774\uc6a9\ud574\uc11c WebApp \ucf54\ub4dc\ub97c \uad6c\uc870\uc801\uc73c\ub85c \ub9cc\ub4e4 \ud544\uc694\uac00 \uc0dd\uae40<\/span><\/strong><\/p>\n<p>&nbsp;<\/p>\n<p>MVC \ub514\uc790\uc778 \ud328\ud134<\/p>\n<p><strong>+ \ub514\uc790\uc778 \ud328\ud134\uc774\ub780?<\/strong><\/p>\n<p>&#8211; \uc7ac\uc0ac\uc6a9 \uac00\ub2a5\ud55c \uc18c\ud504\ud2b8\uc6e8\uc5b4 \ub514\uc790\uc778(\uc124\uacc4)<\/p>\n<p>&#8211; \uac80\uc99d\ub41c \ubb38\uc81c \ud574\uacb0 \ubc29\uc2dd<\/p>\n<p>&#8211; \ud544\uc694\uc5d0 \ub530\ub77c \uc720\uc5f0\ud558\uac8c \uc801\uc6a9 \uac00\ub2a5<\/p>\n<p><strong>+ MVC \ud328\ud134\uc774\ub780?<\/strong><\/p>\n<p>&#8211; Model, View, Controller\ub85c \uc18c\ud504\ud2b8\uc6e8\uc5b4 \uad6c\uc870\ub97c \ub098\ub214<\/p>\n<p>&#8211; Model\uc740 \ub370\uc774\ud130\ub97c \ud45c\ud604<\/p>\n<p>&#8211; View\ub294 \ud654\uba74(\ubcf4\ud1b5 \uc544\ubb34\ub7f0 \ub85c\uc9c1\ub3c4 \uc5c6\uc74c)\uc744 \ud45c\ud604<\/p>\n<p>&#8211; Controller\ub294 M\uacfc V \uc0ac\uc774\uc758 \uc870\uc728, \ube44\uc988\ub2c8\uc2a4 \ub85c\uc9c1\uc744 \ucc98\ub9ac<\/p>\n<p>&#8211; \uc804\ud1b5\uc801\uc73c\ub85c \uc11c\ubc84-\uc0ac\uc774\ub4dc\uc5d0\uc11c \ub9ce\uc774 \uc0ac\uc6a9\ub428<\/p>\n<p>&nbsp;<\/p>\n<p>MVC\ub97c \uc9c0\uc6d0\ud558\ub294 Javascript f\/w \uc885\ub958<\/p>\n<p><strong>+ JavaScriptMVC<\/strong><\/p>\n<p>&#8211; \uc644\uc131\ub3c4 \ub192\uc740 \uc131\uc219\ud55c \uae30\uc220<\/p>\n<p>&#8211; all-in-one \uc194\ub8e8\uc158<\/p>\n<p>&#8211; \ub300\uaddc\ubaa8 \ud504\ub85c\uc81d\ud2b8\uc5d0 \uc801\ud569<\/p>\n<p>&#8211; GrooveShark(\ubbf8\uad6d\uc758 \uc74c\uc6d0 \uc81c\uacf5 \uc11c\ube44\uc2a4)\uc5d0 \uc801\uc6a9\ub428<\/p>\n<p><strong>+ Backbone.js<\/strong><\/p>\n<p>&#8211; \uacbd\ub7c9<\/p>\n<p>&#8211; SPA \uc81c\uc791\uc5d0 \ucd5c\uc801<\/p>\n<p>&#8211; \ub2e4\ub978 \ucef4\ud3ec\ub10c\ud2b8\uc640 \ud568\uaed8 \uc0ac\uc6a9\ud558\uae30 \uc88b\uc74c<\/p>\n<p>&#8211; MetaLab, SoundCloud, BitTorrent \ub4f1\uc5d0 \uc801\uc6a9\ub428<\/p>\n<p><strong>+ Spine.js<\/strong><\/p>\n<p>&#8211; \uacbd\ub7c9<\/p>\n<p>&#8211; Class \uac1c\ub150 \uc81c\uacf5<\/p>\n<p>&#8211; Backbone API\uc5d0 \uae30\ucd08\ud558\uc5ec Backbone \uac1c\ubc1c\uc790\ub77c\uba74 \ucd94\uac00 \ud559\uc2b5 \ube44\uc6a9\uc774 \ub0ae\uc74c<\/p>\n<p><strong>+ Sammy.js<\/strong><\/p>\n<p>&#8211; Route \uae30\ubc18 \uc571 \uac1c\ubc1c\uc5d0 \uc801\ud569\ud55c \uacbd\ub7c9 \ud504\ub808\uc784\uc6cc\ud06c<\/p>\n<p>&#8211; Controller\ub9cc \uc81c\uacf5 (M\uacfc V\ub97c \uc81c\uacf5\ud558\uc9c0 \uc54a\uc74c)<\/p>\n<p>&#8211; PaperlessPost\uc5d0 \uc801\uc6a9\ub428<\/p>\n<p><strong>+ SproutCore<\/strong><\/p>\n<p>&#8211; \ub370\uc2a4\ud06c\ud0d1 \uc5b4\ud50c \uac19\uc740 Rich\ud568\uc744 \uc9c0\ud5a5\ud558\ub294 \uc571 \uac1c\ubc1c\uc5d0 \uc801\ud569<\/p>\n<p>&#8211; \ub300\uaddc\ubaa8 \uc5d4\ud130\ud504\ub77c\uc774\uc988 \uc571 \uac1c\ubc1c\uc5d0 \uc801\ud569<\/p>\n<p>&#8211; \uc560\ud50c MobileMe\uc5d0 \uc801\uc6a9\ub428<\/p>\n<p>&nbsp;<\/p>\n<p>Reference<\/p>\n<p>&#8211;\u00a0<a href=\"http:\/\/kanian77.wordpress.com\/category\/software-engineering\/mvc\/mvc-and-the-web\/page\/3\/\" target=\"_blank\">MVC and the Web<\/a><\/p>\n<p><a href=\"http:\/\/kanian77.wordpress.com\/category\/software-engineering\/mvc\/mvc-and-the-web\/page\/3\/\" target=\"_blank\">http:\/\/kanian77.wordpress.com\/category\/software-engineering\/mvc\/mvc-and-the-web\/page\/3\/<\/a><\/p>\n<p>&#8211;\u00a0<a href=\"http:\/\/addyosmani.com\/toolsforjqueryapparchitecture\/\" target=\"_blank\">Tools For jQuery Application Architecture (Extended Slides)<\/a><\/p>\n<p><a href=\"http:\/\/addyosmani.com\/toolsforjqueryapparchitecture\/\" target=\"_blank\">http:\/\/addyosmani.com\/toolsforjqueryapparchitecture\/<\/a><\/p>\n<p>&#8211;\u00a0<a href=\"http:\/\/blog.outsider.ne.kr\/787\" target=\"_blank\">\uc790\ubc14\uc2a4\ud06c\ub9bd\ud2b8 \uc6f9\uc5b4\ud50c\ub9ac\ucf00\uc774\uc158 \uac1c\ubc1c\uacbd\ud5d8\uae30<\/a><\/p>\n<p><a href=\"http:\/\/blog.outsider.ne.kr\/787\" target=\"_blank\">http:\/\/blog.outsider.ne.kr\/787<\/a><\/p>\n<p>&#8211;\u00a0<a href=\"http:\/\/addyosmani.com\/blog\/digesting-javascript-mvc-pattern-abuse-or-evolution\/\" target=\"_blank\">Digesting JavaScript MVC ? Pattern Abuse Or Evolution?<\/a><\/p>\n<p><a href=\"http:\/\/addyosmani.com\/blog\/digesting-javascript-mvc-pattern-abuse-or-evolution\/\" target=\"_blank\">http:\/\/addyosmani.com\/blog\/digesting-javascript-mvc-pattern-abuse-or-evolution\/<\/a><\/p>\n<p>&#8211;\u00a0<a href=\"http:\/\/blog.nodejitsu.com\/scaling-isomorphic-javascript-code\" target=\"_blank\">Scaling Isomorphic Javascript Code<\/a><\/p>\n<p><a href=\"http:\/\/blog.nodejitsu.com\/scaling-isomorphic-javascript-code\" target=\"_blank\">http:\/\/blog.nodejitsu.com\/scaling-isomorphic-javascript-code<\/a><\/p>\n<p>&#8211;\u00a0<a href=\"http:\/\/michaux.ca\/articles\/mvc-architecture-for-javascript-applications\" target=\"_blank\">MVC Architecture for JavaScript Applications<\/a><\/p>\n<p><a href=\"http:\/\/michaux.ca\/articles\/mvc-architecture-for-javascript-applications\" target=\"_blank\">http:\/\/michaux.ca\/articles\/mvc-architecture-for-javascript-applications<\/a><\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>\ucd9c\ucc98 :\u00a0<a href=\"http:\/\/ingeec.tistory.com\/52\">http:\/\/ingeec.tistory.com\/52<\/a><\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Modern Javascript WebApp \ub3d9\ud5a5 + SPA : Single Page Application &#8211; \ud558\ub098\uc758 HTML \ud30c\uc77c(Single Page)\uc5d0 \uc5ec\ub7ec \ud654\uba74\uc744 \ub2f4\uc544 \uc81c\uacf5 &#8211; \ud654\uba74\uc774 \ubc14\ub014 \ub54c\ub9c8\ub2e4 \uc0c8\ub85c\uc6b4 HTML \ud30c\uc77c\uc744 \uc77d\uc5b4\ub4e4\uc77c \ud544\uc694\uac00 \uc5c6\uc5b4\uc9c0\uae30 \ub54c\ubb38\uc5d0&hellip; <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[1],"tags":[],"_links":{"self":[{"href":"https:\/\/blog.goorigo.com\/index.php?rest_route=\/wp\/v2\/posts\/1238"}],"collection":[{"href":"https:\/\/blog.goorigo.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.goorigo.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.goorigo.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.goorigo.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1238"}],"version-history":[{"count":0,"href":"https:\/\/blog.goorigo.com\/index.php?rest_route=\/wp\/v2\/posts\/1238\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.goorigo.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1238"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.goorigo.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1238"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.goorigo.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1238"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}