Model–view–controller (MVC) is a software design pattern commonly used for developing user interfaces. It is used to separate internal representations of information from the ways information is presented to and accepted from the user.

Model is where the application’s data objects are stored. The model doesn’t know anything about views and controllers. 

View is what's presented to the users and how users interact with the app. The view is made with HTML, CSS, JavaScript and often templates. 

The controller is the decision maker and the glue between the model and view. The controller updates the view when the model changes. It also adds event listeners to the view and updates the model when the user manipulates the view.

Server side MVC vs Client side MVC

For most of the history of browsers, server side mvc has been used . The  HTML is built on the server and sent to the browser. In client side mvc the server only needs to handle api calls from the client.  Very similar to the way a native client would make api calls to back end. client side mvc frameworks like angular create SPAs where a single html document is served to the client which is then can dynamically rewritten on the client browser based on data received from the server via api calls.

client side MVC frameworks like angular have become popular because 

Advantages of client side MVC frameworks 

Disadvantages of client side MVC frameworks