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

Mongodb, Express, Angularjs (1.6) и Node.js (среднее) часть 2

В части 2 из средней серии узнайте, как настроить файлы серверов, определите маршруты для обслуживания нашего приложения в браузере и посмотрите на концепции Angularjs и как они работают вместе с Node.js на заднем дне.

Автор оригинала: Ethan Nwankwo.

Это продолжение Средняя серия Отказ Если вы чувствуете необходимость начать с основ, продолжайте и изучите Часть 1 серии.

В этой части мы настроим файл сервера и определите маршруты для обслуживания нашего приложения в браузере. Мы также посмотрим на несколько концепций Angularjs и как они работают вместе с Node.js на спине, чтобы облегчить нашу жизнь.

Мы будем писать наш код JavaScript, используя Ecmascript 6 ( ES6 ) так ждите много Const , Пусть, карта и Функции стрелки Отказ Не стесняйтесь проверить ресурс на ES6, если эти термины звучат странно или если вы чувствуете, что ваш JavaScript становится ржавым. Надеюсь, вы получите некоторую мотивацию от изучения всех прохладных вещей, которые мы можем сделать, используя ES6 Отказ

Установка экспресс-сервера и подключение MongoDB

Давайте создадим нашу точку входа приложения. Для этого мы создаем server.js Файл в корневом каталоге проекта со следующим фрагментом кода:

// server.js


const express = require('express');
const bodyParser = require('body-parser');
const mongoose = require('mongoose');

const app = express();
const router = express.Router();

// Connect to mongoDB database
const mongoURL = 'mongodb://:@:/';

mongoose.connect(mongoURL);

// Routing

// Configure port
const port = 8080;

// Listen to port
app.listen(port);
console.log(`Server is running on port: ${port}`);

Заменить < DBUSER > , _ < dbpassword >, < хозяин >, _ и <База данных имени> с вашими полномочиями MongoDB.

Примечание:

  • Если вы используете MongoDB локально, ваш хост, скорее всего, будет localhost Отказ Если у вас нет набора имени пользователя и пароля, ваша строка подключения может просто выглядеть так:
mongodb://localhost/
  • Это автоматически создает базу данных с именем, указанным в строке подключения, когда вы выполняете запрос вставки.
  • Если вы используете онлайн-версию Mongodb, предоставленные MLAB Вам нужно будет войти в свою учетную запись, создать базу данных и пользователь базы данных и получить соединительную строку, которая обычно выглядит:
mongodb://:@dsXXXXX.mlab.com:XXXX/

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

Следующее – начать приложение на терминал, используя:

node server.js

Это будет регистрировать следующее на терминал, если успешно:

Server is running on port: 8080

Если вы видите это сообщение, то подключение сервера на MongoDB было успешно, и наше приложение началось успешно. Теперь мы будем приступить к добавлению некоторых маршрутов и служить некоторые статические страницы.

Маршруты сервера/Backend

На этом этапе мы создадим автономный маршрут для приложения, чтобы он мог общаться с нашим сервером. Чтобы достичь этого, мы собираемся изменить server.js Файл, который мы создали ранее, и добавьте следующий фрагмент чуть ниже Маршрутизация :

// server.js

. . .

// Routing

router.get('/', (request, response) => { 
 response.status(200).send({message: 'Hello World!'});
});

// Set app to use express back-end router
app.use(router);
. . .

Теперь мы перезагрузим наше приложение, откройте браузер и перейдите к http://localhost: 8080/

В окне вашего браузера вы должны увидеть сообщение:

{"message":"Hello World!"}

Если вы видите это отображаемое, наш заднешний маршрут работает. Потрясающие!!!

Теперь мы создадим HTML-файлы для отображения в браузере. Для этого мы запустим следующую команду Unix из корневого каталога проекта:

mkdir public && touch public/index.js && touch public/index.html

Это создаст публичный каталог и создать index.js и index.html Файлы в нем.

Наша структура каталогов должна выглядеть:

> node_modules> public -- index.html -- index.js-- package.json-- server.js

В index.js Файл мы добавим следующий фрагмент:

// index.js

angular.module('angularApp', []) .controller('indexCtrl', function($scope) {

// Initialize variables

$scope.name1 = '';

this.name2 = '';

$scope.greeting1 = `Hello ${$scope.name1}`;

this.greeting2 = `Hi ${this.name2}`;
})

Обратите внимание, что мы определяем две переменные, которые, кажется, делают то же самое, но выглядят немного по-другому. Вы найдете несколько разных школ мысли о наилучшем способе определить переменные и методы в контроллере Angularjs: $ Scope Был во время некоторого времени, а это только что присоединился к вечеринке после угнта 1.2.

Я использую оба в зависимости от того, как я чувствую. Angularss Компонент Док Также использует оба. Какой бы вы ни выбрали, я думаю, что они оба достигают одинаковых результатов. Однако всякий раз, когда вы используете это Вам придется создавать контроллер в виде переменной в виду, например: NG-Controller = "indexctrl как приложение" Используется ниже, а если вы используете $ Case, тебе нужно только NG-Controller = "indexctrl" Отказ

Если вы чувствуете себя очарованным $ Scope против это Дебаты, не стесняйтесь исследовать дальше в него и дайте мне знать ваши выводы в разделе комментариев.

На данный момент мы сосредоточимся на их использовании. Я буду использовать это Для большинства из этого учебника, потому что я чувствую себя как это. Просто шучу. Я использую это Потому что я думаю, что это уменьшает шансы с запутанным чистым текстом для угловых переменных в HTML.

В нашем index.html Файл, мы добавим следующий фрагмент:




  
  
 
 



Hello {{name1}}


Hi {{app.name2}}

Теперь мы обновим наш возвратный маршрут для рендеринга статических страниц в общественном каталоге. Для этого мы добавим следующий фрагмент для нашего server.js Файл чуть выше Маршрутизация определен ранее:

// Serve static files
app.use(express.static('public'));

Мы также обновим наш начальный бэк-центр, чтобы указать на /API Отказ

Теперь наши файлы будут выглядеть так:

server.js:

const express = require('express');
const bodyParser = require('body-parser');
const mongoose = require('mongoose');
const app = express();
const router = express.Router();

// Connect to mongoDB database assuming our database name is "angular-app"
const mongoURL = 'mongodb://localhost/angular-app';
mongoose.connect(mongoURL);

//  Serve frontend view
app.use(express.static('public'));

// Specify backend route
router.get('/api', (request, response) => {
    response.status(200).send({message: 'Hello World!'});
});
app.use(router);

// Configure port
const port = 8080;

// Listen to port
app.listen(port);
console.log(`Server is running on port: ${port}`);

index.js:

angular.module('angularApp', [])
  .controller('indexCtrl', function($scope) {
    // Initialize variables
    $scope.name1 = '';
    this.name2 = '';

    $scope.greeting1 = `Hello ${$scope.name1}`;
    this.greeting2 = `Hi ${this.name2}`;
  });

index.html:




 
  
  
 
 
     

Welcome!


Enter your name below:





Hello {{name1}}


Hi {{app.name2}}

Как только у нас есть файлы выше, мы пойдем вперед и перезагрузим наше приложение, затем перейдите к http://localhost: 8080/ на браузере.

Мы найдем пустые входные поля, где мы можем ввести текст и иметь Привет/Привет Сообщения отображаются в браузере.

Мы также можем перейти к http://localhost: 8080/ API и доступа к нашему маршруту API API.

Концепции Angularjs:

Скрипт выше показал несколько угловых концепций. Давайте немного поговорим о них.

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

Модули:

Угловой модуль представляет собой контейнер для различных частей нашего применения. Это определено с angular.module Ключевое слово (то есть ангелапп в нашем случае).

Модуль делит угловое приложение на более мелкие многоразовые компоненты. Все контроллеры и функции в приложении должны принадлежать модулю. Модуль может быть зависит от других модулей – это достигается с использованием концепции, называемой Зависимость впрыска (ди) Отказ

Каждый вид веб-страницы в приложении может быть создан с помощью модуля с помощью NG-App Директива, как используется в нашем index.html выше.

Директивы:

Это домо-манипуляторы. Они рассказывают угловой компилятор, что приписывает, чтобы прикрепить к элементу DOM. Они начинаются с NG- приставка.

В приведенном выше примере мы видели такие директивы, как NG-App , NG-контроллер , NG-модель и NG-если Отказ Есть другие, такие как: NG-View , NG-шоу , NG-варианты , NG-Repeat , NG-SRC , NG-нажмите , NG-изменить , NG-форма , NG-init , NG-Switch , NG-HREF , так далее.

Эти директивы просто потрясающие. С ними мы можем заставить DOM делать все, что мы хотим. Мы даже можем создавать наши собственные директивы. Как это круто?

Директивы также могут быть указаны в камеру. Проверьте Угловые документы Для списка директив и всех прохладных вещей мы можем сделать с ними.

Связывание двусторонней передачи данных:

Это оставляет нас одним из самых крутых особенностей Angularjs – возможность синхронизации данных между моделью и видом, что подразумевает, что любые изменения с одной стороны сразу влияют на другие. Мы замечаем, что в нашем приложении, когда мы вводим значение в поле ввода, оно сразу отражается на браузере. Это двустороннее привязка, и это достигается с использованием NG-модель Директива.

Резюме

Мы видели, как подключить Express Server до MongoDB, создавать резервные маршруты, а также подавать статические файлы. Мы также видели некоторые из прохладных вещей, которые мы можем сделать с Angularjs и насколько легко манипулировать операциями DOM, используя угловые директивы. Все это всего лишь верхушка айсберга – мы можем сделать много намного больше со средним. Мы просто начинаем.

В нашем следующем уроке мы сосредоточимся на создании вызовов базы данных и выполнения операций создания, чтения, обновления и удаления (CRUD), используя Redful API Отказ Мы также посмотрим, как автоматизировать наши задачи и настроить WebPack свернуть наши зависимости.

Мы также узнаем, как использовать Номемон Чтобы прослушать изменения и горячую перезагрузку сервера. Обратите внимание, что мы использовали CDN для импорта Angularjs в наш проект – это изменится с WebPack. Мы также будем хранить наши данные о приложении в .env предотвратить безопасность компромиссов.

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

Ресурсы:

Этот пост изначально опубликован автором здесь Отказ Эта версия была отредактирована для ясности и может появиться отличаться от исходного поста.