Автор оригинала: FreeCodeCamp Community Member.
Пасхал
Вступление
Мы построим простой монитор, который будет отслеживать количество людей, которые следили за нами на определенные даты, используя среду в качестве применения. Это просто голый прототип и может быть сделан для любых других социальных медиа или сетевых платформ.
В конце концов, мы должны иметь что-то вроде этого:
Для этого мы будем использовать Узел IMAP упаковка. Два основных протокола для обработки электронных писем IMAP (протокол доступа в Интернет) и POP (Post Office Protocol). IMAP является предпочтительным, потому что он всегда синхронизируется с почтовым сервером, поэтому изменения, сделанные на почтовом клиенте, появятся немедленно на почтовом ящике Webmail.
Предпосылки
- Oddjs.
- Vuejs.
- Учетная запись Gmail
Настройте спину с узлом IMAP и APOLLO
Во-первых, установите необходимые пакеты.
npm i --save node-imap apollo-server mailparser
Теперь вы можете определить типы и Resolver, а затем запустить сервер APOLLO.
« » Пользователь «Тип, который имеет типы строковых и паролей, так как его схема определена, а мутация называется «IMAPMutation» который получает электронную почту и пароль от пользователя, а затем возвращает ответ с типом пользователя.
Резольвер обрабатывает мутацию, а затем вы можете работать с аргументами, отправленными от клиента.
Теперь вы можете запустить сервер.
Вы можете импортировать Узел IMAP и MailParser модули. MailParser Модуль будет использоваться для получения почтовых ответов в размере JSON.
const Imap = require('imap')const simpleParser = require('mailparser').simpleParser
Вы собираетесь создать « ConnectImap ‘ Функция, которая будет обрабатывать нашу функциональность IMAP. От Узел IMAP Документация, вы можете получить скелет того, как работает модуль, а затем скопировать и вставить его в код. Он в основном работает с обратными вызовами и излучателями, поэтому мы будем обернуть его в обещании.
Вы должны иметь что-то подобное.
Когда « готов Событие называется, мы подключаемся к нашей почте, а затем мы можем искать сообщения. Итак, мы будем искать электронные письма со средней учетной записи, которая обрабатывает подписчики ( noreply@medium.com ).
Наше « » готов «Событие должно выглядеть так.
Мы ищем электронные письма, где каждый предмет содержит « » подписался на вас Подстрока. Затем мы разделим массивы либо запятой или соединением «и», чтобы получить количество подписчиков, а затем обрабатывать такие случаи, как « » Питер и 3 других подписались на вас ‘. После разделения струны выше, у нас будет выход:
[ 'Peter', '3 others started following you']
Длина этого массива 2 Таким образом, у нас есть два подписчика. Если предмет содержит « другие «Мы берем цифру за ним и добавьте до длины массива, которая является 5 И тогда мы вычитаем 1 Чтобы избавиться от « 3 другие начали следовать за вами ‘ нить. Это оставляет нас с 4 Отказ
Затем мы решим обещание, когда « » конец «Событие уволено ( IMAP.once (« конец ») ).
Поскольку нам придется отправить массив на наш клиент Apollo, нам нужно будет определить тип « » Графика ‘ множество.
Определения нашего типа должны выглядеть так:
Мы добавили данные ключ к ‘ Пользователь «Тип, который будет держать» Графика «Значение, и его тип – это массив объектов с« » График ‘ тип.
Наконец, мы обрабатываем Resolver, что получит электронное письмо и пароль пользователя, а затем вернуть Email и данные ( граф точек ).
Если мы войдем в систему Пользователь Объект, наша структура должна быть что-то вроде этого:
email: String,data: [ { numberOfFollowers: 1, date: 2017-07-05T07:53:18.000Z }, { numberOfFollowers: 1, date: 2017-07-07T19:34:57.000Z } ]
Настройте интерфейс с V-диаграммами и клиентом APOLLO
Теперь мы хотим получить данные, отправленные с сервера и построить график с помощью V-диаграммы модуль.
Но сначала мы устанавливаем наши зависимости.
npm install --save vue-chartjs vue-apollo apollo-client apollo-link-http apollo-cache-persist apollo-cache-inmemory graphql graphql-tag moment
Я знаю, что вы думаете – это много зависимостей. Если у вас есть проблемы, создающие проект Vue, вы можете узнать, как это сделать здесь Отказ Мы также должны включать Vuetify и Vue-маршрутизатор Если мы хотим стиль проекта и создать дополнительные маршруты.
В нашем « » SRC «Папка, мы можем создать» config . ‘ папка. Структура должна выглядеть так:
|src |config -graphql.js -index.js -LineChart.js |pages -login.vue |router -index.js App.vue main.js
Нам придется настроить наш клиент GraphQL в src/config/index.js файл.
Убедитесь, что Uri Находятся в том же порту, что и ваш сервер Apollo, по умолчанию сервер Apollo работает на порте 4000 Отказ Затем наш клиент APOLLO настроен с httplink и кэш Отказ
src/config/graphql.js Файл должен выглядеть так:
Этот запрос представит Email и пароль пользователю в imapmution, а затем получить Email и данные (граф точки) с сервера Apollo.
Тогда мы создаем наш компонент диаграммы в SRC/CONFIG/LINECHART.JS файл. Мы можем использовать диаграммы, начиная от гистограмм. В этом примере использовалась линия диаграммы.
Мы можем импортировать « » Vue-Apollo Пакет в нашем файле main.js и включить Аполлопровидер При инициализации приложения.
Наконец, мы настроим src/pages/login.vue Файл, который мы должны были настроить как компонент для домашнего маршрута по умолчанию ‘/’ в SRC/Mar Router/index.js файл.
Таким образом, мы создали основную форму, которая принимает электронную почту и пароль пользователя, а затем отправьте эти данные на сервер через регистрация () метод. Plotgraph () Способ питания через ответ (граф точек) и толкает даты на массиве этикеток и количество подписчиков к массиву данных.
После стилирования используя « Варианты «Объект, мы должны иметь что-то вроде скриншота, показанного во время введения в этот проект.
Заключение
Вы все еще можете сделать больше с вашим личным проектом, но целью этого было показать, как работать с пакетом Node-IMAP, и как Apollo работает как сервер и как клиент. Если у вас возникли проблемы с этим проектом, вы можете оставить комментарий или отправить сообщение на Twitter Отказ
Вы можете попробовать живую версию это или вы могли бы проверить репозитории для клиент и Сервер Приложения на Github.
Если вы хотите узнать новые технологии и рамки, вы можете сделать это здесь И если вы узнали что-нибудь вообще, пожалуйста, сделайте добро с хлопанием ниже.
Я хотел бы поблагодарить WES Wagner за его отзыв при создании этой статьи.
Спасибо!