Quando usar o "roteamento do lado do cliente" ou o "roteamento do lado do servidor"?

Estou um pouco confuso sobre isso e me sinto um pouco estúpido ao fazer essa pergunta, mas quero entender.

Então, digamos que estou trabalhando com uma estrutura da Web do lado do cliente, como Backbone, Angular ou Durandal. Essa estrutura inclui roteamento.

Mas é claro que ainda tenho um servidor para o banco de dados, e assim por diante, que também possui roteamento.

Minha pergunta agora é:

Quando usar "roteamento do lado do cliente" ou "roteamento do lado do servidor"?

Como é "decidido" se o roteamento já é executado no lado do cliente ou se a solicitação é enviada primeiro ao servidor da Web?

É difícil imaginar isso porque o lado do cliente pode fazer o roteamento antes que o servidor conheça essa solicitação.

Ficaria muito grato se alguém pudesse explicar como esses dois sistemas de roteamento funcionam juntos.

P.S .: Não incluí exemplos de código porque não estou procurando uma resposta referente a uma estrutura específica, mas ao processo de roteamento em geral.

questionAnswers(3)

yourAnswerToTheQuestion