Я не совсем уверен, считается ли Прогрессивное улучшение лучшей практикой в наши дни, но я лично предпочитаю этот подход.В этом случае вы пишете свой серверный код так, чтобы он функционировал как стандартное веб-приложение web 1.0 (без JavaScript), чтобы обеспечить хотя бы достаточную функциональность для работы системы без JavaScript.Затем вы начинаете размещать функции JavaScript поверх этого, чтобы сделать систему более удобной для пользователя.Если все сделано правильно, вы должны получить веб-приложение, которое, по крайней мере, предоставляет достаточно функциональности, чтобы быть полезным для пользователей, не использующих JavaScript.
Связанный процесс известен как Graceful Degradation, который работает аналогичным образом, но начинается с предположения, что у пользователя включен JavaScript, и встроены обходные пути для случаев, когда они не работают.Однако у этого есть недостаток, заключающийся в том, что если вы пропустите что-то, вы можете оставить пользователя без JavaScript без отступления.
Пример прогрессивного улучшения для страницы поиска: создайте свою страницу поиска так, чтобы она обычно просто возвращала HTML-страницу результатов поиска, но также добавляли флаг, который можно установить с помощью GET, чтобы при установке он возвращал XML илиJSON вместо.На странице поиска включите сценарий, который выполняет запрос AJAX на странице поиска с флагом, добавленным к строке запроса, а затем заменяет основное содержимое страницы результатом вызова AJAX.Пользователи JavaScript получают выгоду от AJAX, но те, у кого нет JavaScript, все еще получают работающую страницу поиска.
http://en.wikipedia.org/wiki/Progressive_enhancement