Ajax: создание HTML против внедрения HTML - PullRequest
5 голосов
/ 14 мая 2009

Пытаясь выполнить предложение StackOverflow задать вопрос, а не создавать обсуждение, давайте рассмотрим два метода, использующих HTTPAsyncRquest для обновления веб-страницы без ее обновления:

1) Данные, возвращаемые AsyncRequest, анализируются / интерпретируются для создания результирующего HTML, который обновляет страницу например JSON :: parseAndExecute (returnedData); // Просто пример

2) Данные, возвращаемые AsyncRequest, являются необработанным jScript, который выполняется и обновляет страницу. например обычный старый: eval (returnData); // ЗНАЕМ, что возвращенные данные не являются вредоносным кодом

Чтобы исключить академические проблемы / проблемы предпочтений, давайте предположим, что мы используем одну и ту же платформу для программирования как сервера, так и клиента, с той лишь разницей, что есть опция / флаг, чтобы она выдавала JSON или необработанный jscript.

В этом сценарии есть технические причины, по которым следует отдавать предпочтение?

Я спрашиваю об этом, потому что необработанный JSCRIPT должен быть, в большинстве случаев, более быстрым и более гибким, но большинство структур, которые я обнаружил, не возвращают JSCRIPT, а вместо этого данные, которые в свою очередь интерпретируются JSCRIPT.

(Просто чтобы уточнить: я спрашиваю: меньше ли, быстрее? Есть ли риски безопасности? Риск совместимости?)

Первое сообщение в stackoverflow, вы!

Ответы [ 2 ]

1 голос
/ 25 мая 2009

@ Томас Хансен:

Быстрее и проще в реализации, возможно. Но я не понимаю, почему он будет использовать меньшую пропускную способность. Код Javascript, загруженный со страницами, кэшируется, поэтому код синтаксического анализа и создания виджетов будет загружен только один раз, а динамический материал - просто чистый JSON.

Вы также можете предпочесть первый вариант (JSON), потому что вы каким-то образом трансформируете / фильтруете данные в ответ на другие обратные вызовы GUI и не хотите полагаться на сервер для этого.

1 голос
/ 14 мая 2009

Ваше второе решение, как правило, будет быстрее, проще в реализации и будет использовать меньшую полосу пропускания. И если вы контролируете как на стороне сервера, так и на стороне клиента, например, Ajax Framework, то безопасность не проблема. Так что ваша единственная проблема в том, что вы в конечном итоге (злой) Eval. Который у вас должен быть ЛЮБОЙ, поскольку, кроме IE8, нет никаких способов «проанализировать» JSON без наличия хотя бы одного eval-кода в вашем коде.

Мы (Ra-Ajax) используем комбинацию JSON и HTML (innerHTML для всех практических задач) для нашего Ajax Engine. Мы используем JSON для изменения свойств и атрибутов наших виджетов, в то время как мы используем innerHTML при начальном рендеринге (или полных обновлениях) в виджетах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...