Пользовательский объект запроса jQuery - я должен переместить мою реализацию в мою разметку? - PullRequest
5 голосов
/ 09 декабря 2010

Я разрабатываю систему запросов / управления данными внешнего интерфейса для clean up/organize my API calls/refactor того, как я взаимодействую с моей серверной платформой. Я расширяю вызов API jquery ajax для взаимодействия с ним и ищу несколько советов о том, где придерживаться реализации, специфичной для API.

имейте в виду, что это платформа веб-приложений, и я пытаюсь упростить управление интерфейсными компонентами

Цель состоит в том, чтобы определить запрос из чего-то вроде ...

var requestObj = new Object();
requestObj.callback = function(responseObj){deleteUserComplete(responseObj); };
requestObj[0] = new Object();
requestObj[0].module = "usermanager";
requestObj[0].context = "#someTable";
requestObj[0].action = "DELETE_USER";
requestObj[0].dataObj = new Object();
requestObj[0].dataObj.userId = $("#ui-tabs-4 .az-switch-panel-off input[name$=userId]").val();

Для того, чтобы ...

$("button.apiSubmit").apiManager('submitApi');

или

var options = {};
options.callback = someFunction;
options.context = "#someTable";
//etc...
$("button.apiSubmit").apiManager('submitApi', options);

Я уверен, что вы поняли идею ... но я хочу переместить создание уродливого объекта запроса в объект фабричного типа (в основном, просто путем обработки форм в объекты, понятные моему бэкэнду) и перемещения специфичной для API реализации (модуль , действие, контекст и т. д.) к разметке.

Теперь на вопрос (ы) ...

1) Каковы преимущества / недостатки переноса информации о моем запросе для API в разметку?
2) (опять же, довольно убедительное перемещение информации запроса в разметку - правильное движение) теги класса или html5 атрибуты данных (x-browser не проблема ... это внутренние приложения)?

EX: атрибутов класса было бы ... class="apiButton apiButton-module-MODULE_NAME apiButton-action-ACTION_NAME" - очевидно, немного некрасиво ... но выполнимо простой способ сделать это.

3) Существуют ли альтернативы, чтобы сделать мои запросы API более удобными для чтения / повторного использования? Это единственный способ общения с php, поэтому очень ... очень важно, чтобы эта система была надежной.

1 Ответ

1 голос
/ 12 декабря 2010

1) В то время как я несколько согласен с Марселем Корпелем в использовании атрибутов данных HTML5, я думаю, что использование разметки явно представляет пару потенциальных проблем: во-первых, вы предоставляете свои внутренние компоненты API / бэкэнда конечному пользователю, что никогда не бывает идеальный, а во-вторых, его тип изменчив, потому что его можно легко изменить (firebug, js) и испортить поведение, связанное с этим элементом.

2) Более элегантным (но немного сложным для реализации метода) будет использование метода jQuery .data () для хранения связанной информации - таким образом вы сохраняете свою разметку в чистоте и при этом обладаете гибкостью хранить столько информации, сколько вы хотите, связанных с элементом. Он также «скрыт» от конечного пользователя (конечно, firebug / js может получить к нему доступ, но найти его немного сложнее, чем прямо в разметке). В принципе, я могу подумать о том, как можно реализовать это двумя способами: -1 - если вы создаете разметку динамически, то оберните элемент в объект jQuery и примените метаданные перед вставкой его в DOM или -2 - если он будучи созданным с помощью PHP, вы можете сохранить его в виде сериализованной строки в «rel» или «rev» или в каком-то другом малоиспользуемом атрибуте, а затем использовать jQuery, чтобы захватить его, сохранить в метаданных и очистить атрибут.

3) Однако теперь, когда я думаю об этом, хотя использование .data () более элегантно, я думаю, это не делает его еще более простым для понимания, потому что вы эффективно скрываете внутренние компоненты приложений. Возможно, вы могли бы реализовать getter / setters для извлечения метаданных или чего-то подобного.

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