Рубрики
Без рубрики

Как построить простой монитор социальных медиа с Nodejs, GraphQL и Vue

Paschal Как построить простой монитор социальных медиа с Nodejs, Graphql и Vuechanks для Undraw! Введение Мы построим простой монитор, который будет отслеживать количество людей, которые следили за нами на определенные даты, используя среду в качестве применения. Это просто голый прототип и может

Автор оригинала: 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 за его отзыв при создании этой статьи.

Спасибо!