0

Я создаю веб-приложение. Вскоре приложение: Restful, бэкэнд написан на Java, я использую Wink. Что касается интерфейса, я хочу использовать knockout.js, я уже сделал некоторые из онлайновых учебников, чтобы немного привыкнуть к структуре.Что находится в библиотеке - интерфейс backend (java)/frontend (js knockout)

Я уже немного играл и создал ajax-вызовы для функций add-delete-search и отобразил извлеченные записи на простой html-странице через knockout.js. Сначала я получил предложение создать библиотеку/пространство имен, прежде чем начинать что-либо еще с интерфейса. Поэтому я решил отступить и попытаться создать такую ​​библиотеку.

Да, я прочитал тонны документации в Интернете (закрытие, пространство имен, javascript, libs в целом, ...), но каким-то образом я все еще не получаю больше от lib.

Вопросы:

  • главный вопрос: Что должно быть в том, что Lib, если это внутренний интерфейс/интерфейс?
  • Я планировал создать закрытие (для частных участников). Будет ли это закрытие пространством имен (мало ли с помощью «namespace» -topic)?
  • Что на самом деле должно быть в такой библиотеке?
    • Ajax-вызовы
    • всех AJAX-вызовы и все вспомогательные методы
    • вид-модель нокатирующего-JS
    • шаблона для отображения словаря? (Или это другой файл ..)

Мое понимание библиотеки: Lib просто JS-файл, который включает в себя переменные и функции, которые принадлежат вместе (инкапсуляции). Библиотека lib делает код повторно используемым. Использование пространства имен в библиотеке является хорошим, чтобы избежать столкновений с другими библиотеками и использовать закрытие - это хорошо, чтобы иметь возможность «создавать» частные и общедоступные переменные и функции. Я ошибаюсь в любом предположении от там?

+0

Возможно, вам стоит взглянуть на [Swagger] (https://developers.helloreverb.com/swagger/), это спецификация для публикации метаданных, похожих на WSDL, для ресурсов RESTful. Вы можете использовать что-то вроде [amdatu] (http://www.amdatu.org/components/web.html) для серверной части; он включает Wink и будет генерировать метаданные Swagger. Вы должны иметь возможность использовать эти метаданные для создания заглушек для ваших моделей представлений Knockout, если хотите. Затем вы можете взять пользовательский интерфейс Swagger JavaScript, указать его на метаданные, и он будет генерировать функции для всех вызовов ajax (так что вам это не понадобится в вашей библиотеке). –

+0

Если вы идете по этому маршруту, в библиотеке не останется много места; у вас в основном есть специфичные для пользовательского интерфейса вещи, которые нелегко повторно использовать, чтобы писать, поэтому не было бы смысла пытаться абстрагировать его в библиотеке. –

+0

На данный момент (этот проект) я скорее хотел узнать, как это сделать в javascript. Таким образом, фактическая задача этого проекта заключается в обучении: «Получение библиотеки, написанной в js/knockout done». Конечно, я также хочу, чтобы проект был выполнен, но с js на frontend. Еще благодарю вас за намек на Swagger, я попробую это позже, я думаю. – Meru

ответ

0

Я не могу точно комментировать выбор технологий Java при работе в .NET, но использовал подход, похожий на ваш, т. Е. Создать REST API, который будут использовать ваши модели просмотра с нокаутом. Этот API очень подходит для повторного использования.

Нокаут специально поможет вам создать пользовательский интерфейс, как и другие шаблоны MVVM, использование наблюдаемых свойств и массивов сэкономит много боли при написании логики «клей», которая связывает ваш код с вашим пользовательским интерфейсом. Большая часть кода будет в вашем представленииModel, который будет содержать проверку, бизнес-логику и состояние приложения. Для отображения этих данных будет отображаться HTML.

Как таковой будет мало необходимости в дополнительной абстракции, которая будет использоваться повторно.

По мере вашего развития вы обнаружите, что Knokcout довольно экстренный, и вы сможете написать ряд пользовательских привязок, которые будут повторно использоваться в других проектах, однако вряд ли потребуется большая потребность в дальнейшей абстракции.

+0

Я правильно вас понимаю: вы думаете, я просто должен написать js-файл, используя функции нокаута, и это интерфейс? Так что, чтобы сделать его более приятным, просто положить закрытие, и тогда это lib? – Meru

+0

Основная часть ваших файлов js, скорее всего, будет viewModels. Это будет содержать логику, позволяющую работать с представлениями Html. Распространение имен это разумно, чтобы избежать столкновений в глобальном пространстве имен. Если вы обнаружите, что вам нужно сказать несколько исчислений, имеет смысл написать это как отдельную библиотеку. Если вам нужны пользовательские привязки, например. подсказка должна отвечать на ввод ключа, это специальная привязка нокаута. Ваши модели просмотра содержат данные и состояние для вашего представления и, следовательно, обычно не могут использоваться повторно. –

+0

Итак, вы имеете в виду, что viewModel слишком специфичен для включения в такую ​​библиотеку? Это то, что я думал. Я все еще пытаюсь понять, что должно быть в такой библиотеке. У меня есть три типа ajax-вызовов: удаление, добавление, поиск слов. Только те и, может быть, массив, в котором хранятся слова, которые должны находиться в такой библиотеке? Предположительно, я бы сделал это с помощью модуля-шаблона, тогда я бы добавил код viewModel в тот же js-файл под ним? – Meru

Смежные вопросы