1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/ubuntuvim-wildember

Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Wildember: введение

Wildember — это удобный и быстрый адаптер для подключения к сервисам Wilddog в реальном времени.

Wildemer похож на Emberfire, но первый адаптирован для сервисов Wilddog, а второй — для сервисов Firebase. И Wilddog, и Firebase являются сервисами данных реального времени, однако доступ к Firebase из Китая затруднён. Поэтому был найден аналогичный продукт — Wilddog. Wilddog предоставляет обширную и удобную документацию API, а также мощный SDK, что является большим плюсом для разработчиков.

Именно из-за невозможности доступа к Firebase разработчики создали адаптер Wildemer для Ember.js. Он работает точно так же, как и Emberfire, поскольку WildEmber напрямую разветвлён от Emberfire. Даже если вы не можете получить доступ к Firebase, вы всё равно можете наслаждаться отличным сервисом реального времени.

API: использование

Wildember предоставляет API, которое соответствует API Emberjs Store. Вот несколько наиболее часто используемых и основных методов:

API Описание
findAll Запрос всех данных узла
peekAll Запрос всех данных из кэша по узлу
query Запрос по заданным условиям
findRecord Запрос одной записи по идентификатору
peekRecord Запрос одной записи из кэша по идентификатору
createRecord Создание одной записи

Для более подробного объяснения API см. следующие веб-сайты:

Запуск проекта

Если вы хотите запустить проект напрямую, вы можете клонировать код на свой компьютер, выполнить команды npm install и bower install, чтобы установить зависимости проекта, а после завершения установки выполнить [http://localhost:4200], чтобы увидеть результат.

Установка Wildember

  • Используйте команду для установки: ember install wildember.
  • Измените файл app/adapters/application.js. Если файл не создан автоматически, создайте его вручную или используйте команду ember g adapter application, чтобы создать его. В файле добавьте следующий код:
import WildemberAdapter from 'wildember/adapters/wildember';

export default WildemberAdapter.extend({
    wilddogConfig: {
        syncDomain: "<appId>.wilddog.com",
        syncURL: "https://<appId>.wilddogio.com" // Введите URL узла
    }
});

Код <appId> — это идентификатор приложения, который вы создаёте в Wilddog. Вы можете найти его на сайте https://www.wilddog.com/dashboard/, как показано на рисунке ниже:

appid

Если изображение не отображается, перейдите по ссылке, чтобы просмотреть его. Ссылка на изображение.

Часть, выделенная красным кружком, — это ваш идентификатор приложения. Для получения более подробной информации обратитесь к файлу library-app/app/adapters/application.js в качестве примера.

  • Импортируйте Wilddog в ваше приложение Ember, добавив следующую строку в файл app/index.html:
<script src = "https://cdn.wilddog.com/sdk/js/2.0.0/wilddog.js"></script>

Более подробную информацию можно найти в файле library-app/app/index.html.

  • Настройте бэкэнд Wilddog

После установки и настройки Wilddog вам необходимо настроить белый список доменов в бэкэнде Wilddog.

  1. Войдите в панель управления вашего приложения на https://www.wilddog.com/dashboard/.
  2. Перейдите в настройки вашего приложения.
  3. Выберите «Безопасность» слева, затем введите свой домен. Если вы не настроите белый список, при доступе к данным будет отображаться сообщение об отсутствии прав доступа.
  4. После настройки белого списка вам также необходимо установить разрешения на чтение и запись в разделе «Синхронизация данных в реальном времени». В правилах установите следующее выражение:
{
  "rules": {
    ".read": true,
    ".write": true
  }
}

Настройка завершена. Перезапустите приложение.

Пример использования Wildember

Полный пример использования Wildember можно найти здесь: libaray-app или здесь: http://wildember.ddlisting.com/.

Разбиение на страницы

Поскольку это сервис данных реального времени, разбиение на страницы может быть сложным. Обратитесь к официальному примеру разбиения на страницы Wilddog для получения дополнительной информации. На данный момент реализованное разбиение на страницы позволяет только переходить на следующую страницу, но не позволяет напрямую переходить на определённую страницу или вводить номер страницы. Это ограничение связано с API, предоставляемым Wilddog.Это разбиение на страницы хорошо подходит для прокрутки.

Как использовать разбиение на страницы

Эффект разбивки на страницы можно увидеть на сайтах http://localhost:4200/user и http://localhost:4200/pagination. Код для реализации разбиения на страницы находится в примере с именем pagination (см. ниже).

1. Настройка сериализатора (JSONSerializer)

Используйте команду ember g serialize application для создания сериализатора JSONSerializer. По умолчанию может быть создан JSONAPISerializer, который необходимо изменить. Вы можете скопировать следующий код в свой JSONSerializer:

// app/serializers/application.js

import JSONSerializer from 'ember-data/serializers/json';

/**
 * Подкласс переопределяет метод normalizeResponse для реализации разбивки на страницы в Wilddog
 * @type {[type]}
 */
export default JSONSerializer.extend({

      /**
       * Обработка разбивки на страницы
       */
      normalizeResponse(store, primaryModelClass, payload, id, requestType) {
          // Разбивка на страницы
          if (store.get('typeMaps')
              && typeof(store.get('typeMaps').metadata) !== 'undefined'
              && store.get('typeMaps').metadata.isPagination) {
              //

В этом тексте есть фрагменты кода, которые не были переведены. Они оставлены без изменений, так как содержат технические термины и названия библиотек, которые невозможно перевести однозначно. ### Эмбер. Логгер. дебаг («JSONSerializer.normalizeResponse: обработка с разбивкой на страницы.»);
// Получение позиции последнего элемента
let лен = пайлоад. длина - 1;
let элэсАйди = пайлоад[лен]. айди;
// Настройка разбивки на страницы в «wilddog-gist-js»:
// https://coding.net/u/wilddog/p/wilddog-gist-js/git/tree/master/src/pagination#user-content-yi-kao-shang--ye-de-zui-hou--tiao-ji-lu-huo-qu-xia--ye-shu-ju
// Запись идентификатора записи для начала следующей страницы
стор. сэт («стартЭйтАйДи», элэсАйди);
// Удаление последнего элемента;
пайлоад. поп();
}
вернуть это._супер(...аргументы);
})

### Два, запрос данных

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

```js
// app/components/pagination-test.js
импорт Эмбер из 'Эмбер';

экспорт дефолт Эмбер. Компонент. расширить({

стартЭт: ноль,
лист: Эмбер. вычислено ('стартЭт', функция() {
    пусть стор = это. получить ("магазин");
    // Установка маркера разбивки на страницы
    стор. сэт ('тип мэпс. мэдэдата', { 'isPagination': истина });
    возврат стор. запрос ('todo-элемент', {
        стартЭт: стор. получить ('стартЭйтид'), //this.get("стартЭт"),
        ордер бай чайлд: 'таймстэмп',
        лимит ту форст: 2  // Количество элементов на странице
    });
}),
действия: {
    нэкстПейдж() {
        // Установка позиции начала следующей страницы
        // пусть ластЭлАйди = это.получить("магазин").получить('стартЭйтид');
        это. установить ('стартЭт', это. получить ("магазин"). получить ('стартЭйтид'));
    }
}

});

Обратите внимание: код стор.сэт('тип мэпс.мэдэдата', {'isPagination':истина}); необходим для настройки разбивки на страницы. Без него разбивка на страницы работать не будет, и вы получите только две записи без возможности перехода на следующую страницу.

Страница с разбивкой на страницы

{{! app/templates/pagination.hbs }}
{{pagination-тест магазин=стор модель=модель}}
{{! app/templates/components/pagination-test.hbs }}
<кнопка тип="кнопка" {{действие 'нэкстПейдж'}}>Следующая страница</кнопка>
<таблица класс="таблица">
  <тэад>
    <тр>
      <тх>#</тх>
      <тх>Имя</тх>
      <тх>Фамилия</тх>
      <тх>Логин</тх>
    </тр>
  </тэад>
  <тубэдэй>
      {{#каждый лист как |элемент индекс|}}
    <тр>
      <тд>{{индекс}}</тд>
      <тд>{{элемент.айди}}</тд>
      <тд>{{элемент.таймстэмп}}</тд>
      <тд>{{элемент.титл}}</тд>
    </тр>
    {{/каждый}}
  </тубэдэй>
</таблица>

Описание

На данный момент реализована только разбивка на страницы для метода query. Для методов findAll и findRecord разбивка на страницы не требуется.

Проблема

Если вы обнаружите проблему при использовании, пожалуйста, сообщите мне или создайте issues.

Вклад

Если у вас есть лучшие идеи или вы также хотите расширить wildember, добро пожаловать в Pull Requests.

Ссылка

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Описание недоступно Развернуть Свернуть
MIT
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/ubuntuvim-wildember.git
git@api.gitlife.ru:oschina-mirror/ubuntuvim-wildember.git
oschina-mirror
ubuntuvim-wildember
ubuntuvim-wildember
master