Как строить функцию с модулем: Графики функций с модулем

Учебное пособие. Создание модуля Go

  1. Документация
  2. Учебники
  3. Учебное пособие. Создание модуля Go

Это первая часть руководства, в котором представлены некоторые основные особенности языка Go. Если вы только начинаете работать с Go, обязательно взглянуть на Учебное пособие: Начало работы с Go, которое знакомит команда go , модули Go и очень простой код Go.

В этом уроке вы создадите два модуля. Первая — это библиотека, которая предназначен для импорта другими библиотеками или приложениями. Второй — это вызывающее приложение, которое будет использовать первое.

Последовательность этого руководства включает семь кратких разделов, каждый из которых иллюстрирует разные части языка.

  1. Создайте модуль — напишите небольшой модуль с функциями, из которых вы можете вызывать другой модуль.
  2. Вызовите свой код из другого модуля — Импортируйте и используйте новый модуль.
  3. Вернуть и обработать ошибку — Добавить простой обработка ошибок.
  4. Вернуть случайное приветствие — Обработать данные в срезах (массивы Go с динамическим размером).
  5. Возврат приветствия для нескольких человек — Храните пары ключ/значение в карте.
  6. Добавьте тест — используйте встроенное модульное тестирование Go. функции для тестирования вашего кода.
  7. Скомпилируйте и установите приложение — Скомпилируйте и установите код локально.
Примечание: Другие руководства см. Учебники.

Предпосылки

  • Небольшой опыт программирования. Код здесь красивый просто, но полезно знать кое-что о функциях, циклах и массивах.
  • Инструмент для редактирования вашего кода. Любой текстовый редактор, который у вас есть, будет работать нормально. Большинство текстовых редакторов имеют хорошую поддержку Go.
    Наиболее популярны VSCode (бесплатно), GoLand (платно) и Vim (бесплатно).
  • Командный терминал. Go хорошо работает с любым терминалом на Linux и Mac, а также PowerShell или cmd в Windows.

Запустить модуль, который могут использовать другие

Начните с создания модуля Go. В модуль, вы собираете один или несколько связанных пакетов для дискретного и полезного набора функций. Например, вы можете создать модуль с пакетами, которые функции для проведения финансового анализа, чтобы другие, пишущие финансовые приложения могут использовать вашу работу. Дополнительные сведения о разработке модулей см. Разработка и публикация модулей.

Код Go сгруппирован в пакеты, а пакеты сгруппированы в модули. Твой модуль указывает зависимости, необходимые для запуска вашего кода, включая Go version и набор других необходимых модулей.

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

  1. Откройте командную строку и введите cd в свой домашний каталог.

    В Linux или Mac:

    CD
     

    В Windows:

    компакт-диск% ДОМАШНИЙ ПУТЬ%
     
  2. Создайте каталог Greetings для исходного кода вашего модуля Go.

    Например, из вашего домашнего каталога используйте следующие команды:

    мкдир привет
    CD поздравления
     
  3. Запустите свой модуль с помощью 9Команда 0011 go mod init .

    Запустите команду go mod init , указав путь к вашему модулю — здесь используйте example.com/greetings . Если вы публикуете модуль, этот должен быть путем, по которому ваш модуль может быть загружен Перейти инструменты. Это будет репозиторий вашего кода.

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

    $ перейти мод init example.com/greetings
    go: создание нового go.mod: модуль example.com/greetings
     

    Команда go mod init создает файл go.mod для отслеживания зависимости кода. Пока файл включает только имя вашего модуль и версию Go, которую поддерживает ваш код. Но когда вы добавляете зависимости, в файле go.mod будут перечислены версии, от которых зависит ваш код. Это держит создает воспроизводимые и дает вам прямой контроль над тем, какой модуль версии для использования.

  4. В текстовом редакторе создайте файл, в котором вы будете писать свой код, и назовите его привет.го.
  5. Вставьте следующий код в свой файл Greetings.go и сохраните файл.
    пакет приветствий
    импортировать "фмт"
    // Hello возвращает приветствие для указанного человека. 
    func Hello (строка имени) строка {
        // Возвращаем приветствие, которое включает имя в сообщение.
        message := fmt.Sprintf("Привет, %v. Добро пожаловать!", name)
        ответное сообщение
    }
     

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

    В этом коде вы:

    • Объявите пакет Greetings для сбора связанных функций.
    • Реализуйте функцию Hello для возврата приветствия.

      Эта функция принимает параметр имени , тип которого строка . Функция также возвращает строку . В Go функция, имя которой начинается с заглавной буквы, может быть вызывается функцией не из того же пакета. Это известно в Go как экспортированное имя. Дополнительные сведения об экспортируемых именах см. Экспортированные имена в Отправляйтесь в тур.

    • Объявите переменную message для хранения вашего приветствия.

      В Go оператор := — это ярлык для объявления и инициализация переменной в одну строку (Go использует значение справа для определить тип переменной). Пройдя долгий путь, вы, возможно, написал это как:

      var строка сообщения
      message = fmt.Sprintf("Привет, %v. Добро пожаловать!", name)
       
    • Используйте пакет fmt Функция Sprintf для создания приветственного сообщения. первый аргумент — это строка формата, а Sprintf заменяет имя значение параметра для формата %v глагол. Вставка значения параметра name завершена. текст приветствия.
    • Возвращает вызывающему абоненту отформатированный текст приветствия.

На следующем шаге вы вызовете эту функцию из другого модуля.

Вызовите свой код из другого модуля >

Функции сборки | Netlify Docs

Подготовка проекта

Перед созданием функции TypeScript подготовьте проект, выполнив следующие действия:

  • Добавьте модуль @netlify/functions в свой проект, чтобы импортировать типизацию для TypeScript.

  • Настройка tsconfig.json . Мы рекомендуем включить свойства esModuleInterop и изолированных модулей в файле конфигурации TypeScript для лучшей совместимости. В процессе сборки Netlify автоматически загружает любые файлы конфигурации tsconfig.json , найденные в вашем каталоге функций, корневом каталоге репозитория или базовом каталоге, если он задан.

Создать файл функции

Чтобы добавить в проект бессерверную функцию, создайте файл TypeScript в каталоге функций, следуя приведенным ниже инструкциям по именованию и кодированию вашей функции. Netlify будет обращаться к каталогу функций во время каждой сборки, подготавливая и развертывая каждый поддерживаемый файл кода как функцию.

Каталог функций по умолчанию: ВАШ_БАЗОВЫЙ_КАТАЛОГ/netlify/functions . При желании вы можете настроить каталог пользовательских функций.

Назовите свою функцию

Вы можете сохранить файл функции непосредственно в каталоге функций или в подкаталоге, предназначенном для этой функции. Имя конечной точки функции чувствительно к регистру и определяется ее именем файла или именем ее выделенного родительского каталога.

Например, чтобы создать функцию с именем конечной точки hello , сохраните файл функции одним из следующих способов:

  • netlify/functions/hello. ts
  • netlify/functions/hello/hello.ts
  • netlify/functions .ts

В этих форматах будет развернута синхронная функция, которую можно вызвать в следующей конечной точке относительно базового URL-адреса вашего сайта: /.netlify/functions/hello .

Чтобы создать фоновую функцию, добавьте к имени функции цифру 9.0169 -фон . Например, чтобы создать фоновую функцию с именем конечной точки hello-background , сохраните файл функции одним из следующих способов: hello-background/hello-background.ts

  • netlify/functions/hello-background/index.ts
  • Эти форматы будут развертывать фоновую функцию, которая может быть вызвана на следующей конечной точке относительно базового URL-адреса ваш сайт: /. netlify/функции/привет-фон .

    Зарезервированные имена для функций, управляемых событиями

    Некоторые имена функций зарезервированы в качестве триггеров, инициируемых различными встроенными событиями на вашем сайте Netlify. Вы можете найти список имен этих функций и то, как они работают, на странице о функциях, управляемых событиями.

    Закодируйте свою функцию

    В этом разделе рассматривается основной синтаксис, который поможет вам научиться писать функции. Дополнительные примеры, включая конкретные варианты использования, см. на functions.netlify.com.

    Формат синхронной функции

    Чтобы создать синхронную функцию, используйте следующий общий синтаксис в файле функции TypeScript для экспорта метода обработчика :

    Импортируйте типы перед объявлением функции.

    • Если вы импортируете тип обработчика , как показано в предыдущем примере кода, аргументы события и контекста и ответ будут типизированы соответствующим образом.
    • Кроме того, вы можете импортировать типы HandlerEvent , HandlerContext и HandlerResponse по отдельности и используйте их для создания функции обработчика .

    Netlify предоставляет параметры события и контекста при вызове функции.

    • Объект события , полученный обработчиком , аналогичен следующему:0012 , мы рекомендуем использовать официанта. Чтобы узнать больше, посетите нашу статью в блоге об обработке данных составных форм с помощью функций Netlify.

    • Объект контекста , полученный обработчиком , включает в себя информацию о контексте, в котором была вызвана функция, например, определенную информацию о пользователе Identity.

    Вот базовый пример функции, hello.ts :

    • Эта функция развертывается на конечной точке в /.netlify/functions/hello относительно базового URL-адреса вашего сайта.
    • Успешный вызов возвращает код состояния 200 и строку «Hello, World».

    Синхронные функции могут возвращать объект ответа, который включает в себя следующую информацию:

    • Поскольку код функции async возвращает обещание , мы рекомендуем возвращать ответ, по крайней мере, с кодом состояния HTTP, вместо того, чтобы разрешить функции время вне. Использование async в коде вашей функции автоматически не назначает функцию фоновой.
    Формат фоновой функции

    Эта функция включена в БЕТА-версию и может быть доступна не во всех планах .

    Чтобы создать фоновую функцию, добавьте к имени функции -background . Например, netlify/functions/hello-background.ts или netlify/functions/hello-background/index.ts .

    Синтаксис фоновой функции аналогичен синтаксису синхронной функции, но обычно вы передаете результат функции в место назначения, отличное от исходного клиента. Как и формат синхронной функции, каждый файл TypeScript, который будет развернут в качестве фоновой функции, должен импортировать типы и экспортировать метод обработчика . Как и в случае синхронного вызова функции, Netlify предоставляет параметры события и контекста при вызове фоновой функции. Хотя фоновые функции полагаются на асинхронный вызов, они не требуют использования асинхронный Синтаксис TypeScript.

    Вот упрощенный пример фоновой функции, которую вы можете использовать для проверки того, что ваша функция работает дольше 10 секунд, count-background.ts :

    • Эта функция развертывается на конечной точке по адресу /.netlify/functions/count -background относительно базового URL вашего сайта.

    • При вызове функция возвращает исходный ответ 202 об успешном выполнении.

    • При успешном выполнении функция регистрирует числа от 1 до 60.

      Только журналы реального времени

      Бета-версия фоновых функций в настоящее время поддерживает только журналы реального времени. Вы не можете использовать фильтр даты журнала функции для изучения истории журнала.

    В качестве расширенного примера, демонстрирующего более вероятный вариант использования фоновой функции, рассмотрим эту функцию send-pdf-background.ts :

    • Эта фоновая функция развертывается на конечной точке по адресу /.netlify/functions/send -pdf-background относительно базового URL вашего сайта.
    • При вызове функция возвращает начальный ответ об успешном завершении 202 .
    • При успешном выполнении создается отчет в формате PDF, который отправляется по электронной почте в виде вложения.

    Переменные среды

    Функции Netlify имеют доступ к переменным среды в среде выполнения. Если у вас есть возможность установить определенные области для ваших переменных среды, область должна включать Функции , чтобы быть доступной для функций во время выполнения.

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

    Узнайте больше о том, как устанавливать и использовать переменные среды с функциями.

    Управление зависимостями

    Чтобы оптимизировать производительность сборки, укажите зависимости функций в файле верхнего уровня package.json в базовом каталоге сайта. Вот пример рекомендуемой раскладки:

    При непрерывном развертывании Netlify автоматически упаковывает зависимости с вашими функциями для развертывания. Для этого строительный бот Netlify устанавливает ваши зависимости и анализирует каждый файл функции, чтобы отметить его зависимости. Затем для каждой функции Netlify извлекает необходимые зависимости из связанной папки node_modules и архивирует их с файлом функции для развертывания. Для получения более подробной информации о том, как работает эта функция объединения, посетите репозиторий базового модуля: @netlify/zip-it-and-ship-it.

    Если вы используете файл конфигурации Netlify для настройки пользовательских параметров [функции] , обратите внимание, что значение node_bundler для функций TypeScript всегда переопределяет значение esbuild .

    Локальное тестирование

    Чтобы упростить написание и тестирование функций в Netlify, запустите локальную среду разработки с Netlify Dev. Эта функция Netlify CLI включает в себя инструменты для разработки локальных функций в моделируемой производственной среде Netlify. 9Команда 0169 netlify dev запускает сервер фреймворка, если фреймворк обнаружен, и обрабатывает перенаправления, правила прокси, переменные среды и функции Netlify.

    Чтобы имитировать функции Netlify на автономном сервере без полной нагрузки на Netlify Dev, обслуживайте функции локально с помощью команды netlify functions:serve CLI (в настоящее время находится в стадии бета-тестирования). Затем для отладки функций проверьте процесс сервера функций.

    Проверка типов

    Поскольку система сборки Netlify не выполняет проверку типов, мы рекомендуем вам ввести проверку локально с одним из следующих параметров:

    • Используйте редактор кода для проверки типов во время локальной разработки.
    • Используйте официальный компилятор TypeScript, запустив tsc --noEmit локально перед фиксацией файлов.

    Следующие шаги

    Отправьте исходные файлы функций своему поставщику Git для непрерывного развертывания, где система сборки Netlify автоматически обнаружит, создаст и развернет ваши функции. Для большего контроля над процессом узнайте о других рабочих процессах для развертывания ваших функций, включая пользовательские сборки с непрерывным развертыванием и ручное развертывание с помощью Netlify CLI или API.

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *