Yes, it is possible to use the same CT for multiple components (based on a single schema), per ViewModel though. 

It is sufficient to built one component template for every view model that you have. In Tridion, you will continue to use the same TBBs namely "Render Component Content" and "Default Component Template Finish Actions"  but your component template metadata may be different based on your entity, controller or region. You can add more TBBs to suit your requirement but the output should be "JSON".

You will offcourse have to add your schemas to the linked schemas within the CT in Tridion.

Hope it helps!