В этом руководстве мы предполагаем, что вы следуете этому руководству, чтобы подготовить RPi для разработки на Swift.
Перед установкой Vapor Toolbox вам необходимо добавить некоторые зависимости
sudo apt-get install git libcurl3
затем выполните скрипт Vapor Toolbox
curl -sL toolbox.vapor.sh | bash
Обычно у вас должен быть такой журнал установки:
$ curl -sL toolbox.vapor.sh | bash ✅ Compatible ⬇️ Downloading... Cloning into 'vapor-toolbox'... remote: Counting objects: 2218, done. remote: Total 2218 (delta 0), reused 0 (delta 0), pack-reused 2218 Receiving objects: 100% (2218/2218), 1.02 MiB | 310.00 KiB/s, done. Resolving deltas: 100% (1243/1243), done. Checking connectivity... done. 🛠 Compiling... Cloning https://github.com/vapor/console.git HEAD is now at 88e7b23 Merge pull request #27 from vapor/realtime-logs Resolved version: 1.0.2 Cloning https://github.com/vapor/polymorphic.git HEAD is now at 43ad0c4 Merge pull request #7 from bygri/bool-from-string Resolved version: 1.0.1 Cloning https://github.com/vapor/core.git HEAD is now at 9acd329 Merge pull request #29 from vapor/fix-decoding-failure Resolved version: 1.1.1 Cloning https://github.com/vapor/json.git HEAD is now at 44bd19b Merge pull request #25 from vapor/core-1.1 Resolved version: 1.0.6 Cloning https://github.com/vapor/node.git HEAD is now at 4cf8c76 Merge pull request #21 from ZeroFactor/master Resolved version: 1.0.1 Cloning https://github.com/vapor/path-indexable.git HEAD is now at 0aa6f6e Merge pull request #7 from vapor/1.0 Resolved version: 1.0.0 Cloning https://github.com/DanToml/Jay.git HEAD is now at 8331252 Merge pull request #53 from remko/master Resolved version: 1.0.1 Compile Swift Module 'Polymorphic' (2 sources) Compile Swift Module 'Jay' (21 sources) Compile Swift Module 'PathIndexable' (2 sources) Compile Swift Module 'libc' (1 sources) Compile Swift Module 'Core' (28 sources) Compile Swift Module 'Node' (22 sources) Compile Swift Module 'Console' (34 sources) Compile Swift Module 'JSON' (9 sources) Compile Swift Module 'VaporToolbox' (19 sources) Compile Swift Module 'Executable' (1 sources) Linking ./.build/release/Executable 🚀 Installing... Install failed, trying sudo Vapor Toolbox v1.0.5-4-gd20c424 Installed Use vapor --help and vapor <command> --help to learn more.
Не бойтесь увидеть Ошибка установки, попытка sudo, потому что мы не устанавливаем Vapor на системный уровень, а только на уровне пользователя (как мы делали со Swift раньше).
Теперь мы сгенерируем проект Hello с помощью Vapor.
vapor new Hello
Он создаст папку с именем Hello
и будет содержать некоторые файлы только что созданного проекта Vapor.
Затем используйте команду vapor build
в интерфейсе командной строки Vapor для получения зависимостей, затем выполните vapor run serve
, чтобы запустить ее локально (по умолчанию в режиме разработки)
$ vapor run serve Running Hello... No preparations. Server 'default' starting at 0.0.0.0:8080
Теперь перейдите к своему RPi с IP-адресом и портом 8080, и вы должны увидеть «Он работает».
Взгляните на папку, созданную автоматически с помощью инструментария Vapor.
(Не удивляйтесь, увидев на моем снимке экрана macOS Finder или Xcode, я использую SSHFS со своего Mac для удаленной разработки на моем RPi. Если руководство, объясняющее этот интерес ты, подскажи, я с тобой поделюсь)
У нас много папок, на этот раз мы не будем покрывать всю эту папку, но взглянем на три из них:
- Источники
Он содержит весь эффективный источник вашего проекта. Это подходящее место для вашего файла Swift. Вы найдете main.swift
файл, который предназначен для запуска вашего парового сервера. Здесь были автоматически созданы две подпапки: Контроллеры и Модели. В этих папках также содержится автоматически сгенерированный быстрый код для модели данных, похожей на пост. Не заботьтесь об этом, мы выбросим позже.
- Общественные
Эта папка содержит данные, которые будут доступны как есть. В эту папку должны быть помещены клиентский JavaScript, файл CSS и различные типы носителей.
- Пакеты
Эта специальная папка была похожа на Carthage- или Pods- на SwiftPM (аббревиатура от S wift P ackage M anager). Он содержит разрешенные зависимости файла Package.swift
, которые соответствуют Cartfile
или Podfile
этому другому диспетчеру зависимостей.
Прямо сейчас загляните в main.swift
файл
import Vapor let drop = Droplet() drop.get { req in return try drop.view.make("welcome", [ "message": drop.localization[req.lang, "welcome", "title"] ]) } drop.resource("posts", PostController()) drop.run()
- Во-первых, мы импортируем
Vapor
пакет, классический. - Затем мы создаем
Droplet
. Это контейнер службы, который позволяет создавать веб-сервер / API, позволяющий управлять маршрутизацией, промежуточным программным обеспечением и т. Д. - В третьей части мы создаем маршрут приветствия на главную страницу.
drop.get
означает «входящий запрос с методом GET HTTP для маршрутизации/
». Замыкание после - это обработчик запроса. В этом случае он использует свойствоview
нашей капли для рендеринга страницыwelcome
HTML Leaf, объединенной с коллективом. - Следующая часть указывает нашей капле, что у нас есть
CRUD
ресурс с именемposts
. В этой статье мы не будем углубляться в логику контроллера / модели, но для простоты она позволит вам создать простой API на основеCRUD
операции для данных, хранящихся в базе данных. - Последняя последовательность этого кода просто говорит запустить нашу каплю.
Как видите, запустить небольшую веб-страницу очень просто. Мы продолжим позже. В следующий раз мы попробуем использовать шаблон Leaf для улучшения домашней страницы и создания формы входа.