MVC-Tutorial, das nicht auf ein Framework angewiesen ist? [closed]

Lesezeit: 6 Minuten

Benutzer-Avatar
Ixion

Ich möchte MVC “Architekturmuster” lernen, aber ich möchte noch nicht in ein Framework wie Rails oder Django springen. Ich möchte zuerst das Konzept verstehen und einen einfachen Code in meiner derzeit vertrauten Umgebung schreiben, die zufälligerweise PHP/HTML/CSS/MySQL ist. Ich brauche nicht unbedingt ein Tutorial, das auf PHP basiert, da ich viele verschiedene Sprachen verstehe. Und ich möchte keine Frameworks oder APIs oder Bibliotheken installieren müssen. Ich möchte nur lernen, wie man in MVC denkt und es auf meine Projekte anwendet. Irgendwelche Vorschläge?

  • Ich habe gerade eine gepostet “Barebone-MVC-PHP-Anwendung” auf GitHub, die genau für diese Lernzwecke erstellt wurde.

    – Sliq

    21. Dezember 2013 um 9:42 Uhr

Fast jedes Framework führt MVC anders aus, sodass Sie am Ende möglicherweise noch verwirrter werden. Die allgemeinen Prinzipien von MVC sind sehr einfach: “Modell ist Zustand; Ansicht reagiert auf Modell; Controller reagiert auf Ansicht; Controller ändert Modell”. Das Modell, die Ansicht und der Controller sind Konzepte – sie sind das, wofür Sie sie halten. Klassen, Gruppen von Klassen, Instanzen von Klassen mit XML-Konfigurationsdateien, was auch immer.

Ich denke eigentlich, dass das ungefähr die Grundprinzipien abdeckt. Ohne Rahmen kommt man nicht viel weiter. Entscheidend ist, wie ein bestimmtes Framework Model, View und Controller und deren Interaktionen definiert.

  • Schlagen Sie vor, dass ich ein vorhandenes Projekt nicht nehmen und meinen Code auf “MVC” -Weise umschreiben kann, ohne ein vorhandenes Framework wie Rails oder Django zu verwenden?

    – Ixion

    30. September 2008 um 8:34 Uhr

  • Frameworks sind konkrete Manifestationen der abstrakten Idee von MVC. Selbst wenn Sie kein vorgefertigtes Framework verwenden, würden Sie nebenbei Ihre eigene Manifestation erstellen.

    – troelskn

    30. September 2008 um 10:36 Uhr

  • Das ist gut. Ich möchte einfach nicht das zusätzliche Gepäck, das Framework eines anderen zu lernen. Ich will die Theorie, die Denkweise. So haben wir CS früher gemacht. Es macht mir nichts aus, ein rudimentäres benutzerdefiniertes Framework aufzubauen. Wenn es das braucht, soll es so sein.

    – Ixion

    1. Oktober 2008 um 0:24 Uhr

  • Ich bin mir nicht sicher, ob ich verstehe, wie dies die Frage beantwortet. Heißt das, Sie glauben, er kann es nicht?

    – dkretz

    1. März 2009 um 5:26 Uhr

  • Ich bin mir ziemlich sicher, dass er nicht sagt, dass er es nicht kann, aber er sagt, dass er am Ende ein eigenes “Framework” schreiben wird, indem er die von ihm beschriebenen Ideen verwendet.

    – hopp

    6. Januar 2010 um 17:46 Uhr

MVC teilt Ihren Code im Grunde nur in ein Modell auf, das sich mit den Daten befasst, eine Ansicht, die die Daten anzeigt, und einen Controller, der Daten vom Modell an die Ansicht übergibt.

Es ist nichts, wofür Sie eine API oder ein Framework benötigen, es ist nur eine Möglichkeit, Ihren Code aufzuteilen. Der Grund, warum viele Frameworks es verwenden, ist, dass es ein sehr einfaches Konzept ist, für viele Dinge gut funktioniert (es passt perfekt zu Webseiten) und ziemlich flexibel ist (zum Beispiel mit Rails, Sie könnte alles aus Ihrer Sicht oder Modell/Controller tun, wenn Sie dies wünschen..)

Ein kurzes Beispiel in Python für ein strukturiertes MVC-Python-Beispielskript. Nicht unbedingt “Best Practices”, aber es funktioniert und ist ziemlich einfach:

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()

  • Ich bin mir nicht sicher, wie einfach es schließlich ist. Das Erlernen einer Programmiersprache ist für mich ziemlich einfach, es dreht sich alles um die Syntax. Aber ich habe immer noch Probleme, die Quintessenz der Sache zu verstehen … Ich hoffe auf einen Wohlklang.

    – David

    2. Januar 2010 um 4:47 Uhr

  • Theoretisch scheint MVC einfach zu sein, tatsächlich beginnen die Probleme mit der PHP-Syntax und wie jedes Framework Klassen, Controller und Ansichten organisiert (manchmal werden verschiedene Sprachen für Ansichten verwendet und in js integriert). Für einen Überblick schlage ich dies vor Artikel

    – Maimann

    30. Dezember 2014 um 0:19 Uhr


Zusätzlich zu Sanders Antwort würde ich sagen, dass die meisten Frameworks verwirren Front-Controller und MVC. Sie sind wirklich zwei völlig unterschiedliche Konzepte, aber sie sind oft beide in Frameworks vorhanden. Achten Sie also darauf.

  • Zustimmen! +1, Front Controller ist ein mvc-artiges Muster, das hauptsächlich im Web verwendet wird. Soweit ich weiß, sind Rails, ASP.Net MVC, ASP.Net Monorail Django und dergleichen alle Front-Controller.

    – Mendelt

    30. September 2008 um 12:41 Uhr

  • Auch keine Antwort auf die gestellten Fragen

    – dkretz

    1. März 2009 um 5:26 Uhr

Der Hauptvorteil von MVC ist die Trennung von Bedenken. Wenn Sie Code schreiben und nicht aufpassen, kann es zu einem großen Durcheinander kommen. Wenn Sie also wissen, wie Sie Models, Views und Controller in verschiedenen “Silos” unterbringen, sparen Sie langfristig Zeit. Jede Strategie ist gut.

Also hier ist meins:

  • Modelle sind Dateien, die im Projektbaum unter /lib zu finden sind
  • Ansichten sind Dateien mit der Endung .html im Projektbaum
  • Controller sind URLs in
    -Aktionsattributen

Ich weiß, es ist spät, aber ich bin sicher, dass später Leute mit der gleichen Frage kommen werden.

Ich denke, das sehr gute Codebeispiel oben ist besser so ausgedrückt, aber 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()

Hier ist ein weiteres Beispiel mit Vererbung, das in Python/php sehr nützlich sein kann…..

#!/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()

Wenn dies sinnvoll ist, gehen Sie zu Django, jetzt sind Sie bereit. Lesen Sie einfach die kostenloses Buch Wenn dies sinnvoll ist, werden Sie es schnell durchlaufen. Ihr Recht ist jedoch, dass Sie sich mit OOP- und MVC-Paradigmen auskennen müssen, bevor Sie Django verwenden, da es über diese Paradigmen erstellt und verwendet wird.

Wie Sie sehen, ist es nicht komplex, sondern nur eine der vielen Möglichkeiten, Ihren Code in Ordnung zu halten.

Dies erklärt MVC in Django

1334130cookie-checkMVC-Tutorial, das nicht auf ein Framework angewiesen ist? [closed]

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy