Um projeto Web MVC é diferente dos projetos que existiam na época em que o MVC foi concebido.   Na prática, o MVC da Web deve ser divido em dois MVCs: MVC do Back-End; MVC do Front-End. O MVC do back-end é puramente PHP e baseado em requisições. Nenhuma outra linguagem irá realizar nada no back-end, apenas PHP. Ou seja: Controller: receberá a requisição HTTP e realizará as tarefas a ele pertinentes; Model: será consultado pelo controller, caso necessário, e tratará todas as informações lógicas e de negócio. Poderá consultar um storage se necessário. View: irá gerar todo e qualquer output gerado pelo PHP. Precisa realizar um echo/print? Irá exibir em browser (HTML) ou em linha de comando (texto puro)? É na View. Uma vez que a View do back-end gerou o HTML, inicia a etapa do MVC do front-end. Esse, por outro lado, é baseado em evento e dividido em algumas linguagens (HTML + CSS + JavaScript). Sendo que a única linguagem de programação é o JavaScript.   Nessa caso, o cenário é um pouco mais complexo que no back-end. Para tanto, é melhor iniciar pela View: View: é tudo que o usuário pode visualizar. É o composto entre HTML + CSS (que pode ser modificado por JavaScript). Diferentemente do PHP, que espera uma requisição, este espera um evento (seja clicar em botão, passar o mouse sobre algum elemento, apertar uma tecla, etc...). Quando um evento é disparado, ele pode possuir um dos quatro tratamentos abaixo (não limitado a somente um): Ser capturado pelo HTML: Clicar em um link, submeter um formulário, digitar em text box. São todos os eventos "nativos" ou "padrões" do HTML. Ser capturado pelo JavaScript: Quando é adicionado um event listener, o JavaScript interceptará o evento e poderá personalizar a ação que deverá ser tomada (veremos mais na parte de controllers). Ser capturado pelo CSS: São os eventos que o CSS toma controle (:hove, :active, :visited, etc..). São bem limitados, e o controle fornecido é puramente visual; Não acontecer nada: é, de longe, o evento mais disparado. Clickou em um área em branco, movimentou  o mouse pelo site, rolou um scroll. Acredite, tudo isso é um evento que não possui um listener. Controller: puramente JavaScript. São os listeners adicionados através do JavaScript. Assim como o PHP está esperando uma requisição, o JavaScript espera um evento. Uma vez caputrado, pode-se atribuir novas operações (gerar uma requisição, modificar o HTML/CSS, consultar regras de negócio) ou evitar que uma ação seja realizada (impedir o click em um link ou envio de um formulário). Model: puramente JavaScript. Igual ao PHP, é aonde estarão as regras de negócio. Pode-se utilizar para executar validações de negócio, requisições assíncronas (AJAX), consultar algum storage local (localStorage, cookies, etc..). Da mesma forma que o PHP realizaria, com a diferença de ser no front-end. jQuery é uma biblioteca, escrita em JavaScript, que pode ser utilizada pelo MVC do Front-End (Controller e Model) e faz parte da View do Back-End.