프레임 워크에 의존하지 않는 MVC 튜토리얼?
MVC "아키텍처 패턴"을 배우고 싶지만 아직 Rails 나 Django와 같은 프레임 워크에 뛰어 들고 싶지 않습니다. 먼저 개념을 이해하고 현재 익숙한 환경 (PHP / HTML / CSS / MySQL)에서 간단한 코드를 작성하고 싶습니다. 나는 많은 다른 언어를 이해하기 때문에 PHP를 기반으로 한 튜토리얼이 반드시 필요한 것은 아닙니다. 그리고 프레임 워크 나 API 또는 라이브러리를 설치할 필요가 없습니다. MVC에서 생각하고 그것을 내 프로젝트에 적용하는 방법을 배우고 싶습니다. 어떤 제안?
거의 모든 프레임 워크가 MVC를 다르게 수행하므로 더 혼란스러워 질 수 있습니다. MVC의 일반 원칙은 매우 간단합니다. "모델은 상태이고, 뷰는 모델에 반응하고, 컨트롤러는 뷰에 반응하고, 컨트롤러는 모델을 변경합니다." 모델, 뷰 및 컨트롤러는 개념입니다. 클래스, 클래스 묶음, XML 구성 파일이있는 클래스 인스턴스 등의 이름을 지정합니다.
나는 실제로 그것이 기본 원칙을 다루고 있다고 생각합니다. 프레임 워크 없이는 더 이상 얻을 수 없습니다. 중요한 것은 특정 프레임 워크가 모델, 뷰, 컨트롤러 및 상호 작용을 정의하는 방법입니다.
MVC는 기본적으로 코드를 데이터를 처리하는 모델, 데이터를 표시하는 뷰, 모델에서 뷰로 데이터를 전달하는 컨트롤러로 분할합니다.
API 나 프레임 워크가 필요한 것은 아니며 코드를 분할하는 방법 일뿐입니다. 많은 프레임 워크가이를 사용하는 이유는 매우 단순한 개념이고, 많은 일에 잘 작동하고 (웹 페이지에 완벽하게 맞음) 상당히 유연하기 때문입니다 (예를 들어, Rails를 사용하면 보기 또는 모델 / 컨트롤러에서 모든 작업을 수행 할 수 있습니다. , 원하신다면 ..)
MVC 구조화 된 Python 스크립트의 간단한 Python 예제입니다. 반드시 "모범 사례"는 아니지만 작동하며 매우 간단합니다.
class Model:
def get_post(self, id):
# Would query database, perhaps
return {"title": "A test", "body": "An example.."}
class Controller:
def __init__(self):
self.model = Model()
self.view = View()
def main(self):
post = self.model.get_post(1)
self.view.display(post)
class View:
def display(self, item):
print "<h1>%(title)s</h1>\n%(body)s" % item
c = Controller()
c.main()
가장 흥미로운 자료 중 하나는 Trygve Reenskaug 의 원본 논문 입니다. 또한 Wikipedia 에는 MVC에 대한 많은 언어 불가지론 적 정보가 있습니다.
Sander의 답변 외에도 대부분의 프레임 워크가 프론트 컨트롤러 와 MVC를 혼동한다고 말하고 싶습니다 . 실제로는 완전히 별개의 두 개념이지만 종종 둘 다 프레임 워크에 존재합니다. 그러니 조심하세요.
MVC의 기본 사항을 다루는이 설명, 예제 및 다이어그램을 확인하십시오 .
MVC는 단순한 디자인을위한 훌륭한 설정이지만 MVC에서 유사하고 더 발전된 PAC 와 종종 혼동됩니다 . 두 설정 모두 훌륭합니다. 두 링크는 이해를 돕기위한 정보를 제공합니다.
방법을 묻지 마십시오.하지만 디자인 패턴에 관한 훌륭한 위키에서이 항목을 발견했습니다.
http://www.c2.com/cgi-bin/wiki?ModelViewController
다양한 리소스에 대한 많은 흥미로운 토론과 포인터.
그리고 그것을 찾는 데 6 일밖에 걸리지 않았습니다!
이 훌륭한 기사를보십시오 : 프레임 워크없는 PHP MVC 프레임 워크 . MVC 패턴 소개를 대체하지는 않지만 간단하고 실습 예제를 제공합니다.
이 PHP MVC 자습서를 시도해 볼 수 있습니다 . 잘 작성되고 매우 가볍고 필수 요소 만 포함되어 있으며 sourceforge에서 코드를 찾을 수 있습니다.
MVC의 주요 장점은 관심사 분리입니다. 코드를 작성할 때주의하지 않으면 엉망이 될 수 있습니다. 따라서 모델, 뷰 및 컨트롤러를 서로 다른 "사일로"에 배치하는 방법을 알면 장기적으로 시간을 절약 할 수 있습니다. 모든 전략이 좋습니다.
그래서 여기 내 것입니다.
- 모델은 프로젝트 트리의 / lib 아래에있는 파일입니다.
- 뷰는 프로젝트 트리에서 .html로 끝나는 파일입니다.
- 컨트롤러는 <form> 작업 속성의 URL입니다.
MCV 패턴을 시도하기 전까지는 이해하지 못했습니다. PHP에 익숙하다면 http://cakephp.org 를 사용해 볼 수 있습니다 . PHP 프레임 워크는 RoR 패러다임을 대부분 사용합니다.
늦었 음을 알지만 사람들이 나중에 같은 질문을 할 것이라고 확신합니다.
위의 아주 좋은 코드 예제는 YMMV와 같이 넣는 것이 더 낫다고 생각합니다.
#!/usr/bin/python
class Model:
def get_post(self):
return {"title":"A test","body":"An example.."}
class View:
def display(self,items):
print 'Title:',items['title'],'\n'+'Body:',items['body']
class Controller:
def __init__(self):
self.model=Model()
self.view=View()
def main(self):
post=self.model.get_post()
self.view.display(post)
mvc=Controller()
mvc.main()
다음은 python / php .....에서 매우 유용 할 수있는 상속을 사용하는 또 다른 예입니다.
#!/usr/bin/python3
class Control:
def find(self,user):
return self._look(user)
def _look(self,user):
if user in self.users:
return self.users[user]
else:
return 'The data class ({}) has no {}'.format(self.userName(),user)
def userName(self):
return self.__class__.__name__.lower()
class Model(Control):
users=dict(one='Bob',two='Michael',three='Dave')
class View():
def user(self,users):
print(users.find('two'))
def main():
users=Model()
find=View()
print('--> The user two\'s "real name" is:\n')
find.user(users)
if __name__=="__main__":
main()
이것이 의미가 있다면 이제 django로 가십시오. 이것이 의미가 있다면 무료 책을 읽으십시오 . 이러한 패러다임을 통해 구축되고 사용되기 때문에 django를 사용하기 전에 OOP 및 MVC 패러다임을 알 수 있어야하지만 귀하의 권리.
As you see it is not complex it is just one of the many ways to keep your code in order.
Here are a few tutorials that are non-framework specific:
- Principles Of MVC for PHP Developers
- The MVC Design Pattern
- Optimized Presentation of XML Content
- The Model-View-Controller (MVC) Design Pattern for PHP
- XSLT in MVC
- When MVC becomes a burden for XForms
- Moving forward – betterFORM 6 aka ‘Fore’ is born | betterFORM
- Coldfusion MX and Fusebox
- Steven Nelson on CFC-only Fusebox
- Three-Tier Development with PHP 5
- How to Use Python in the Web
- Using MySQL to Stop Editing Web Pages
- The no-framework PHP MVC framework
- Beyond MVC
- The Evolution of MVC
- The Difference between model-view-viewmodel and other separated presentation patterns
- Firebug Internals
- Firebug Internals II. – Unified object rendering
Check the Non-OO MVC on the fluffy cat site
This tutorial will take you from the beginning to the end of building a MVC framework. The object is not soley to produce the finished MVC framework, although that will happen, but to demonstrate how MVC works and some of the concepts that lay behind it..
By far the best MVC tutorial i've ever seen: http://www.youtube.com/watch?v=Aw28-krO7ZM (Part 1, dont miss the other parts!), the code can be found here: http://jream.com/lab/open-source
A very sympathic guy with a feeling for how-to-teach-things.
For anyone who comes across this in a search there is a great beginners tutorial on PHP MVC on SitePoint.
http://www.sitepoint.com/the-mvc-pattern-and-php-1/
참고URL : https://stackoverflow.com/questions/152101/mvc-tutorial-that-doesnt-rely-on-a-framework
'code' 카테고리의 다른 글
Ctrl-C는 어떻게 자식 프로세스를 종료합니까? (0) | 2020.11.28 |
---|---|
클래스 경로 항목 org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER은 내보내지지 않습니다. (0) | 2020.11.28 |
VB6 및 VBA 용 대체 IDE (0) | 2020.11.28 |
JSON 객체에서 __type 속성을 직렬화하지 않는 방법 (0) | 2020.11.28 |
Android에서 '의견 제공'모드에서 Google Play 인 텐트를 시작하는 방법은 무엇입니까? (0) | 2020.11.28 |