Давайте напишем образец приложения Full Stack с нуля с помощью Angular, Mongo, Express и Node.js: хорошо известного MEAN Stack ... Приложение представляет собой список дел, которые я хотел бы когда-нибудь посетить ... . а пока давайте повеселимся, напишем код и поработаем над api карт Google, работающих на этой эхосистеме на основе Javascript!

Итак, давайте начнем с «Places2Go… an Mean Stack»

Исходный код

Полный исходный код доступен на GitHub:

Https://github.com/Pabloin/mean-stack-talk

# 01 Рабочий реж.

Наша работа в Github и локальных

# 02 Настройка

Создайте проект с помощью angular-cli

$ ng новые места2go-v01

и результат:

А с одной лишь командой у нас их много! Готовый проект с

  • package.json: Может быть, самый важный файл ... или, по крайней мере, первый, который вы должны посмотреть: мы можем видеть зависимости и запускать команды

Файл .angular-cli.json с указанием основных файлов:

Давайте заметим, что index.html не имеет ссылки для запуска angular javascript, потому что, когда мы запускаем с ng serve из angular-cli, основной класс main.ts с указанием о как начать угловой…

Другим вариантом может быть включение в заголовок различных угловых javascript. Но я иду по пути angular-cli

# 03 Запустить пустой проект

Запустим пустой проект

$ нг подавать

# 04 Начало программирования - Идеи

Приложение посвящено городам, которые я хотел бы посетить, поэтому наиболее естественным будет создание класса модели «Город».

На данный момент у меня есть три варианта:

  • Начните кодирование из бэкэнда (то есть: 1. Папка сервера с api, остающаяся в nodejs с экспрессом и mongose ​​со схемой города, это может быть автономное приложение. 2. Затем напишите компонент службы в папке службы в приложении angular для подключения остальным api, выполните унитарные тесты и 3. Интегрируйте службу с фронтальными компонентами / MVC приложения angular). Обычно я так люблю работать, потому что вы понимаете, что это за данные.
  • Другой вариант - отредактировать компоненты, сгенерированные angular-cli в шаблоне проекта… Я сделаю это…
  • Другой вариант - построить передние компоненты на основе имитирующих объектов, а после этого заменить имитируемые объекты реальным объектом. Есть хорошее видео Джона Папы на https://www.youtube.com/watch?v=WAPQF_GA7Qg&t=92s, которое работает таким образом. Кстати, в видео Джон Папа использовал фрагменты кода визуального стода (из https://github.com/johnpapa/vscode-angular2-snippets), я использую атом, и я бы использовал ту же идею следующее расширение https://atom.io/packages/angular-2-typescript-snippets:

# 04 Начать кодирование - Цель

а) Добавьте фоновое изображение на страницу приветствия.

Я скопирую изображение в assets / images / bg.jpg и отредактирую основной styles.css с помощью:

Задний план:

б) Добавить js-библиотеку частиц

Это просто состоит из пары javascript и тега div, основанного на https://github.com/VincentGarreau/particles.js.

После небольшого теста, в angular2 не так просто добавить такой javascript в приложение angular ... так что, по крайней мере, и просто для проверки, я копирую библиотеку на новую страницу за пределами

страница частиц

в) Откройте браузер с помощью средства запуска узлов.

Я сделаю пусковую установку статической, чтобы получить только некоторый статический контент: первый узел запустит сервер с экспрессом, а затем node запустит браузер с экспресс-адресом (библиотека opn).

Чтобы открыть предыдущую страницу без открытого приложения angular:

$ npm install opn -save

$ npm install express -save

И мы видим статический экспресс-сервер и вызов браузера

Давайте отметим это на github

$ git tag v1.0.0

$ git push origin v1.0.0

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

# 05 Начало программирования - Целевой бутстрап

Сначала я установил следующий плагин для лучшего использования начальной загрузки в Atom



Кроме того, поскольку я пишу с помощью Angular Cli, я также буду использовать / устанавливать следующий «cli» для angular

NG Bootstrap -« Angular директивы, специфичные для Bootstrap 4 »



Установить ng-bootstrap

npm install --save @ng-bootstrap/ng-bootstrap

Я создам шаблон с помощью bootstrap 4: я мог бы написать его с нуля, или я мог бы использовать инструмент дизайна: я буду использовать http://www.layoutit.com/, и этот инструмент будет генерировать шаблоны с помощью Bootstrap 3, после этого Я хотел бы иметь bootstrap4, поэтому мне нужно преобразовать исходный код с помощью онлайн-инструмента http://demo.bootstraptor.com/bootstrap4/

Примечание об адаптивном дизайне с гибкостью:

С сеткой:

В бутстрапе вы должны думать двенадцатью рядами:

С Flexbox:

Другой подход к адаптивному дизайну (если я не ошибаюсь, flexbox был для v4)

Давайте начнем:

Давайте посмотрим на простой html-код bootstrap4: это было всего лишь простое копирование и вставка из официального руководства и официальных компонентов. (на github: https://github.com/PabloEzequiel/MEAN-Stack/blob/master/app04/Places2Go-and-the-MEAN-Stack/places2go-v01/src/assets/bv1/boot1.html)

И результат

Это была версия 1.0.1 в GitHub: статический HTML-дизайн.

Из исходного кода начальной загрузки html мы замечаем, что импортировали два файла JS в конце файла: jquety и bootstrap.js.

На созданной нами простой странице единственные компоненты, которые нуждаются в этом, - это предупреждение успех или опасность, а не что-то еще.

# 06 Начать кодирование - Целевой бутстрап от angular-cli

Промежуточные шаги:

а) Давайте добавим панель навигации

Самый простой способ - добавить html в «app.component» и файл начальной загрузки CDN с CSS в index.html.

Что нужно улучшить: панель навигации с темным цветом и загрузочный css локальный для приложения вместо CDN.

Bootstrap на Angular

У меня есть две возможности с angular bootstrap: https://github.com/valor-software/ng2-bootstrap, который используется в Any-Theme, и, похоже, у меня есть лучший документ и https://github.com / ng-bootstrap / ng-bootstrap »тот, который я уже установил

Вариант 1: пакет ng-bootstrap

Я буду следить за https://ng-bootstrap.github.io/#/getting-started

$ npm install --save @ng-bootstrap/ng-bootstrap

Также я должен установить bootstrap 4:

$ npm install --save [email protected]

Все выглядит нормально ... но результат ...

Вариант 2: пакет ng2-bootstrap

Пакет ng2-bootstrap использовался шаблоном любой темы

  • откройте src/app/app.module.ts и добавьте
import { AlertModule } from 'ng2-bootstrap';
...
@NgModule({
   ...
   imports: [AlertModule.forRoot(), ... ],
    ... 
})
  • откройте angular-cli.json и вставьте новую запись в массив стилей
"styles": [
        "styles.css",
        "../node_modules/bootstrap/dist/css/bootstrap.min.css"
      ],
"scripts": [
"../node_modules/jquery/dist/jquery.js",
"../node_modules/tether/dist/js/tether.js",
"../node_modules/bootstrap/dist/js/bootstrap.js"
],

В порядке! давайте посмотрим, что работает ng2-bootstrap:

В github версии 1.0.2 есть изменения интеграции Angular2 с Bootstrap

Хорошее объяснение того, как установить bootstrap на angular cli, в https://www.npmjs.com/package/angular-cli сказано, как редактировать angular-cli.json, чтобы включить зависимости bootstrap и jquery.

Я изменил версию навигационной панели на более лучшую, также с загрузкой (исходный код в http://codepen.io/PabloEzequiel/pen/WpQoLK?editors=1000) проблема с этой версией в angular2 заключается в том, что при изменении размера в браузере, меню не раскрывается. Причина в том, что я должен интегрировать jQuery, и это небольшое противоречие, потому что мы не должны использовать jQuery с angular ... Давайте посмотрим, как мы собираемся его интегрировать:

Добавить jQuery в Angular

$ npm install --save jquery

После этого мы добавим его в .angular-cli.json

"scripts": [
"../node_modules/jquery/dist/jquery.js",
"../node_modules/tether/dist/js/tether.js",
"../node_modules/bootstrap/dist/js/bootstrap.js"
],
"styles": [
"../node_modules/bootstrap/dist/css/bootstrap.css",
"styles.css"
],

и $ ng build и $ npm start, панель навигации в приложении angular работает!

в порядке! мы достигли цели, чтобы навигационная панель работала на angular2 с установкой angular-cli. Это подразумевает множество шагов, например, включение bootstrap и jquery в angular-cli.json в папку, содержащуюся в dist.

Часть II: Добавление нового компонента

Мы создадим его с помощью angular-cli

компонент $ ng g home

Зеленым цветом мы видим файлы, созданные этими командами:

Давайте посмотрим, домашняя папка со всеми машинописными текстами, html, css, где сгенерирован тест,

Давайте добавим тег ‹app-home› для нового компонента:

Давайте добавим ‹app-home› для домашнего компонента:

И работает с маршрутами

Http: // localhost: 4201 / home

И http: // localhost: 4201 / about

Давайте посмотрим на основные изменения в приложении angular2 для включения маршрутов:

Хорошо, у нас включен маршрут в нашем веб-приложении.

На этом я остановлю публикацию, а следующая будет посвящена «услугам».

использованная литература

Исходный код:



Несколько интересных ссылок

Https://github.com/ng-bootstrap/ng-bootstrap