Итак, я новичок в динамическом веб-дизайне (мои сайты в основном статичны с некоторым PHP), и я пытаюсь изучить новейшие технологии в веб-разработке (это похоже на AJAX), и мне было интересно, если вы «Передает много данных, лучше ли создавать страницу на сервере и« нажимать »ее на пользователя, или лучше« вытащить »данные, необходимые и создать HTML-код вокруг него на стороне клиента, используя JavaScript?
Более конкретно, я использую CodeIgniter в качестве моей фреймворка PHP и jQuery для JavaScript, и если бы я хотел отображать таблицу данных пользователю (динамически), было бы лучше форматировать HTML с помощью CodeIgniter (создавать таблицы, добавлять классы CSS к элементам и т. д.), или было бы лучше просто обслуживать необработанные данные с помощью JSON, а затем строить его в таблицу с jQuery? Моя интуиция говорит, чтобы сделать это клиентами, так как это позволит сэкономить полосу пропускания, и страница, вероятно, загрузится быстрее с новыми оптимизациями JavaScript, которые есть у всех этих браузеров, однако сайт будет ломаться для кого-то, не использующего JavaScript …
Спасибо за помощь
Поздравляем за переезд на динамичные сайты! Я бы сказал, что вам нужно выполнить следующие условия для выполнения клиентской компоновки (само собой разумеется, что вы всегда должны делать такие вещи, как фильтрация запросов БД и контроль доступа к серверу прав):
Даже тогда выполнение клиентской компоновки делает тестирование намного сложнее. Это также создает довольно неприятные проблемы синхронизации. С сайтом AJAX, который загружает частичные части, если часть страницы завинчивается, вы, возможно, никогда не знаете, но с регулярной компоновкой на стороне сервера вся страница перезагружается по каждому запросу. Это также добавляет дополнительные проблемы для обработки ошибок / тайм-аутов, обработки сеанса / файлов cookie, кеширования и навигации (браузер назад / вперед).
Наконец, создавать URL-адреса perma немного сложнее, если кто-то хочет поделиться ссылкой со своими друзьями или пометить ссылку для себя. Я перехожу к обходному пути в своем сообщении в блоге, или у вас есть заметная кнопка «Постоянная ссылка», которая отображает динамически отображаемую постоянную ссылку.
В целом, особенно, когда я начинаю, я бы сказал, иди с более кошерным, лучше поддержанным, более учебным, традиционным подходом к объединению стороны сервера HTML. Затем окунитесь в некоторый AJAX здесь и там (возможно, начните с проверки формы или автозавершения), а затем перейдите вверх.
Удачи!
Гораздо лучше сделать тяжелую работу на стороне сервера.
В CodeIgniter вы создаете представление, перебираете все строки в таблице, добавляя в классы или что-то еще, что вам нужно. В Javascript нет никаких оснований делать это.
Javascript – жестокий жестокий язык с неудачным синтаксисом. Почему бы вам захотеть загрузить страницу, а затем выпустить вызов AJAX для загрузки некоторых объектов JSON для ввода в таблицу вне меня. Это мало оснований для этого.
Javascript (и jQuery) предназначен для улучшения конечного пользователя. Сделать вещи слайд, вспышка, исчезнуть! Это не для обработки данных даже в самых мягких нагрузках. Опыт конечного пользователя был бы дерьмом, потому что вы полагаетесь на свою машину для обработки всех данных, когда у вас есть сервер, который бесконечно более способен и даже специально разработан для этого .
Лучше делать как можно больше на стороне сервера, потому что 1) вы не знаете, будет ли у клиента даже включен JavaScript, и 2) вы не знаете, насколько быстро будет обрабатываться клиентская сторона. Если у них есть медленный компьютер, и вы заставляете их обрабатывать весь сайт, они будут сильно галочками. JavaScript / jQuery предполагается использовать только для улучшения вашего сайта, а не для его обработки.
Вы получили компромисс правильно. Однако имейте в виду, что вы можете активировать сжатие на стороне сервера, что, вероятно, сделает добавление повторяющейся разметки для форматирования таблицы с небольшой пропускной способностью.
Имейте в виду, что запись Javascript, которая работает во всех браузерах (включая ручные), сложнее, чем выполнение одной и той же серверной части в PHP. И не забывайте, что «новые оптимизации JavaScript» в той же степени не применяются к браузерам карманных устройств.
Это зависит от вашего целевого рынка и цели вашего сайта.
Я твердо верю в использование клиентской стороны, где бы вы ни были, чтобы разгрузить работу с сервера. Очевидно, что важно, чтобы вы сделали это правильно, чтобы он оставался быстрым для конечного пользователя.
На сайтах, где важна поддержка no-js (общедоступные веб-сайты и т. Д.), Вы можете иметь резервные копии для сервера. В этих ситуациях вы удваиваете код, но выигрыши очень полезны.
Для продвинутых веб-приложений вы можете решить, стоит ли требовать от JS требования торговли (очень) нескольких пользователей. Для меня, если у меня есть некоторый контроль над целевым рынком, я делаю это требование и продолжаю. Практически не имеет смысла тратить массу времени на поддержку небольшого процента потенциальной аудитории. (Если время не потрачено на доступность, которое отличается, и ОЧЕНЬ важно независимо от того, сколько людей вписывается в эту группу на вашем сайте.)
Важно помнить, что нужно коснуться DOM как можно меньше, чтобы выполнить работу. Это часто означает создание HTML-строки и использование одного действия с добавлением, чтобы добавить его на страницу, а также зацикливание через большую таблицу и добавление одной строки за раз.
Я занимаюсь разработкой приложений AJAX, и я могу сказать это по моему опыту. хороший баланс между ними является ключевым.
сделайте исходную серверную часть данных, но используйте javascript для внесения любых изменений, которые вам понадобятся. таких как пейджинг, сортировка столбцов, чередование строк и т. д.
Я абсолютно обожаю делать все в AJAX хе .. но есть некоторые короткие падения, чтобы сделать это с помощью AJAX, и это SEO. поисковые системы не читают javascript, поэтому, ради рейтинга вашего сайта, я бы сказал, что все данные обслуживаются на стороне сервера, а затем отформатированы и выглядят круто на стороне клиента.
Причина, по которой я очень люблю AJAX, заключается в том, что она значительно ускоряет использование APP пользователем, поскольку она загружает только данные, необходимые для загрузки, где вам нужно загрузить их, и загружать всю страницу каждый раз, когда вы что-то делаете … вы может делать целую кучу вещей, таких как hide / show rows / columns (мы говорим о манипуляции с таблицами здесь, потому что вы упомянули таблицу), и даже с помощью этих действий show / hide добавить действия удаления, когда при нажатии кнопки удаления или кнопки он удаляет эту строку не только визуально, но и в базе данных, все делается через AJAX, вызывает серверный код.
вкратце.
необработанные данные: серверная отправка клиенту необработанных данных в макет html (таблицы для структурированных данных таблицы, однако я делаю все остальное в div и других гибких html-тегах, только таблицы для данных стиля столбца / строки)
форматирование данных: клиентская сторона, которая также включает любые средства взаимодействия с данными. добавление к нему, удаление из него, сортировка по-разному и т. д. Это достигается двумя вещами. SEO и пользовательский опыт (UX).