Ember - это бесплатный javascript-фреймворк с открытым исходным кодом для одностраничных приложений. Он соответствует шаблону модель-представление-представление-модель (MVVM).

Ember поставляется с интерфейсом командной строки Ember, который можно использовать для создания приложений Ember и управления ими.

Как вы все знаете, существует множество UI-фреймворков для создания одностраничных приложений, и если вы внимательно посмотрите, то увидите Ember в списке лучших UI-фреймворков.

Этот UI Framework не создается и не управляется какой-либо крупной корпорацией, в отличие от react, angular и т. Д., Но он пользуется широкой поддержкой сообщества очень увлеченных разработчиков.

Ember.js имеет стандартную структуру проекта, которая позволяет разработчикам легко понимать и организованно писать код. Ember представила интерфейс командной строки для создания, сборки, обслуживания и тестирования приложений Ember.js.

Он используется на многих популярных веб-сайтах, таких как LinkedIn, Live Nation, Apple Music и т. Д. Это фреймворк для веб-приложений, но его можно использовать для создания как мобильных, так и веб-приложений. Apple Music - это пример настольного приложения ember.

В этой статье я объясню вам, как настроить проект ember и как выполнить простую операцию CRUD с использованием localStorage.

Ember CLI и установка Ember

Ember CLI построен с использованием javascript и требует последней версии Node.js. с долгосрочной поддержкой (LTS). Зависимости Ember загружаются с использованием NPM, доступного в Node.js.

Вы можете проверить, есть ли на вашем компьютере node и npm, с помощью следующей команды.

node -version
npm -version

Если вы получаете сообщение об ошибке «команда не найдена», установите последнюю версию Node.js.

Установка Ember CLI

npm install -g ember-cli
ember -v

Создание приложения Ember

Мы можем создать новое веб-приложение ember, используя команду ember new в терминале ember-cli.

ember new ember-crud-ls

Приведенная выше команда создаст новый каталог ember-crud-ls и настроит приложение ember со следующими встроенными функциями:

  • Сервер разработки
  • Возможности ES6 через Babel
  • Возможности минификации Javascript и CSS
  • Автоматическая сборка и компиляция

мы можем быстро запустить приложение из каталога ember-crud-ls с помощью команды ember-serve

Приложение будет доступно по адресу http://localhost:4200/ с app/templates/application.hbs в качестве домашней страницы. Если вы отредактируете эту страницу, вы увидите, что страница автоматически загружается после компиляции новых изменений.

Чтобы создать приложение для добавления, обновления, удаления и отображения списка книг, мы должны сначала создать страницу. Другими словами, мы можем сказать, что должны создать маршрут. Маршруты - это список страниц для приложения.

Создание маршрута (страница для вашего приложения)

Для создания маршрута мы можем использовать команду ember generate route, за которой следует имя маршрута.

ember generate route books

Вышеупомянутая команда создаст следующие файлы и изменения,

  • Маршрутные js-файлы извлекают модели или вызывают сервис для страницы
  • Шаблон для отображения пунктов маршрута
  • Делает запись в файле router.js
  • Файл модульного теста для маршрута
//app/routes/books.js
import Route from '@ember/routing/route';
export default Route.extend({
    model() {
        return ['The god of small things', 'Book of Ram', 'History of the world'];
     }
});

Шаблон маршрута будет создан под app/templates

// app/templates/books.hbs
<h2>Books</h2>
<ul>
  {{#each this.model as |book|}}
    <li>{{book}}</li>
  {{/each}}
</ul>

Создание компонента пользовательского интерфейса Ember

Компонент будет представлять данные модели пользователю, а не получать модель. Маршруты получат данные модели.

Мы можем легко создавать многоразовые элементы с помощью component. В ember мы можем создать компонент, используя команду ember generate component, за которой следует имя компонента.

ember generate component book-list

И мы можем вызвать компонент из шаблона маршрута вот так.

{{book-list title=”Books” books=this.model}}

Динамическое название, значение книги заменят свойство {{title}} и {{book}} в компоненте, который мы передаем из маршрута.

Мы можем добавить код для вывода списка книг в book-list файл шаблона компонента

app/templates/components/book-list.hbs
<h2>{{this.title}}</h2>
<ul>
 {{#each this.books as |book|}}
 <li>{{book}}</li>
 {{/each}}
</ul>

Использование данных Ember для работы CRUD

Ember поставляется с библиотекой управления данными ember-data store для управления данными вашего приложения.

Вот диаграмма архитектуры Ember.

Данные Ember требуют модели для управления данными. Модель - это класс, который представляет свойства и поведение данных, которые мы использовали в нашем приложении. Мы можем определять модели, расширяя DS.Model.

Для добавления новой модели мы должны создать файл в папке моделей. В нашем приложении для управления книгами нам понадобится модель книги. Мы можем легко создать модель, используя ember cli с помощью следующей команды.

ember generate model book

Он создает файл book.js в папке моделей. В этом файле мы можем определить атрибут, необходимый для книги.

import DS from ‘ember-data’;
export default DS.Model.extend({
  name: DS.attr(‘string’),
  author: DS.attr(‘string’),
});

Объект хранилища данных Ember доступен в маршрутах, которые можно использовать для управления записями в хранилище. Библиотека данных Ember предоставляет следующие методы управления записями.

Создание записей

Мы можем создать запись, используя метод ember store.createRecord. Для создания новой записи книги в createRecord method необходимо передать тип записи (книгу) и объект детали.

store.createRecord(‘book’, {
   name: ‘2 States’,
   author: ‘Chetan bhagat’,
});

Обновление записей

Мы можем вносить изменения в созданные записи, используя метод store.updateRecord method.

this.store.findRecord(‘book’, 1).then(function(book) {
   book.set(‘name’, ‘Chetan Bhagat’);
});

Метод поиска записи найдет запись книги с предоставленным идентификатором, и мы сможем обновить значение записи.

Удаление записей

С помощью метода ember store.deleteRecord легко уничтожить запись.

store.findRecord(‘book’, 1).then(function(book) {
   book.deleteRecord();
});

Получение записей

Получить все записи определенного типа с помощью метода store.findAll

this.store.findAll(‘book’) .then(function(books) {
   // Do something with ‘books’ list
});

мы можем прочитать одну запись, используя store.findRecord method,

this.store.findRecord(‘book’, 1).then(function(book) {
    // Do something with ‘book’
});

Chrome предоставил надстройку ember Inspector для понимания и отладки приложений ember. Это дополнение поможет вам во время разработки. Вот скриншот книжных записей, созданных в нашем приложении.

Сохранение записей в локальном хранилище

Мы можем легко добавлять, изменять записи в нашем приложении, используя вышеуказанные методы. Но эти данные будут потеряны, если мы обновим браузер. Чтобы сохранить эти данные, мы должны сохранить эти данные в базе данных.

Здесь я объясню вам, как хранить эти данные в localStorage браузера. localStorage широко используется в веб-приложениях для автономного хранения данных.

Большинство браузеров поддерживают localStorage для хранения данных. Вот список поддерживаемых браузеров.

Для сохранения записи мы можем использовать метод save() для любого экземпляра DS.Model. save() сделает сетевой запрос на сохранение данных. Ember-data позаботится о состоянии каждой записи за вас.

let book= store.createRecord(‘book’, {
   name: ‘2 States’,
   author: ‘Chetan Bhagat’,
});
book.save(); // => POST to ‘/books’

В ember-data adapters определяет, как данные сохраняются в внутреннем хранилище. URL-адрес серверной части, заголовки для связи с остальными API и т. Д. Могут быть добавлены в файл adapter.js.

Для хранения всех данных в локальном хранилище нам понадобится адаптер локального хранилища. Для этого мы можем установить уже имеющийся модуль npm ember-local-storage.

ember install ember-local-storage

Настройка адаптера для приложения

Мы можем сгенерировать адаптер для приложения, используя следующую команду:

ember generate adapter application

Ember по умолчанию сгенерирует JSONAPIAdapter.

import DS from ‘ember-data’;
   export default DS.JSONAPIAdapter.extend({
});

Но для этого приложения мы храним данные в локальном хранилище. Таким образом, мы можем заменить код adapter.js следующим кодом адаптера локального хранилища.

export { default } from ‘ember-local-storage/adapters/local’;

Настройка сериализатора для приложения

В Ember сериализатор форматирует данные, отправляемые в серверную базу данных и получаемые из нее. Мы можем создать сериализатор, как показано ниже,

ember generate serializer application

Ember по умолчанию создает сериализатор JSON API.

import DS from ‘ember-data’;
export default DS.JSONAPISerializer.extend({
});

Мы можем заменить сериализатор JSON API на сериализатор локального хранилища.

export { default } from ‘ember-local-storage/serializers/serializer’;

Мы можем сохранить данные в локальном хранилище с помощью вышеуказанного сериализатора и адаптера. Мы можем видеть, что данные сохраняются, обновив URL-адрес приложения после выполнения операций CRUD.

Заключение

Надеюсь, вы получили некоторую информацию о сохранении данных в локальном хранилище с помощью ember.js.

Для справки проверьте код здесь: https://github.com/manubenjamin/ember-crud-ls

Для онлайн-демонстрации посетите этот URL: https://manubenjamin.github.io/ember-crud-ls/#/books

Пожалуйста, поделитесь своими комментариями и вопросами.