Ответ 1
Самое большое, что следует учитывать в отношении шаблонов на стороне клиента на стороне сервера, заключается в том, что шаблоны на стороне клиента не будут работать, если по каким-либо причинам JavaScript отключен на клиенте.
В противном случае это не такая уж большая разница. В основном это зависит от того, хотите ли вы создавать разметку на сервере или на клиенте.
Типичной причиной использования клиентских шаблонов является наличие приложения, которое загружает больше данных с сервера с помощью ajax, websockets или таких. В таком случае вы можете захотеть иметь клиентский шаблон для рендеринга недавно загруженных данных.
Например:
В приложении, которое я написал, я использовал шаблоны ejs на сервере для генерации базовой разметки: голова, тело, нижний колонтитул и т.д. - контент, который не изменяется.
Приложение использует socket.io, который отправляет клиенту некоторые события и данные с сервера. Чтобы отобразить эти данные, я использовал шаблоны клиентской стороны Knockoutjs.
Так что в моем случае это своего рода гибридный подход. Причина, по которой я это делал, заключается в том, что разметка, которую я создаю на сервере, сразу же будет отображаться после загрузки страницы. Данные, которые поступают из socket.io, также могли быть отображены в HTML на сервере, но для этого потребуется больше полосы пропускания, чем отправка простых объектов JSON или таких, поэтому я решил отобразить их на клиенте.
Очевидно, что я мог использовать шаблон клиентской стороны для всего сайта, но я не видел никакой пользы в рендеринге статических частей на клиенте. Это просто сделало бы клиентский код моего приложения более сложным.