Как начать создавать веб-проект Giraffe и как его обслуживать?

Возникли проблемы с шаблоном Giraffe на Mac M1 , поэтому решил настроить проект Giraffe вручную. Начал следовать разделу Делаем это вручную в README Giraffe, но сразу застрял, и я также не увидел нигде упоминаний о том, как можно обслуживать проект.

Для справки: документы Giraffe великолепны. Я новичок в .NET, поэтому мне приходится сталкиваться с основами управления проектами .NET, F# и ASP.NET Core. Было бы неразумно ожидать, что эти темы будут раскрыты там.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
0
72
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Мне приходится постоянно напоминать себе, что

проект Giraffe подключается к конвейеру ASP.NET Core или сам по себе является приложением ASP.NET Core.

, поэтому, если я не могу найти ответы на свои вопросы в документации Giraffe , то, вероятно, это потому, что это тема ASP.NET Core (или F# / .NET / и т. д.).

Как создать и обслуживать проект Giraffe

Шаги 0–5. Следуйте статье Начало работы с F# с помощью инструментов командной строки (.NET | Microsoft Learn).

  1. (НЕОБЯЗАТЕЛЬНО) Создайте новое решение.

    dotnet new sln -o SampleSolution
    
  2. Введите каталог решения.

    cd SampleSolution
    
  3. Создайте пустой проект ASP.NET Core.

    dotnet new web -lang "F#" -o src/GiraffeWebExample
    

    ИНФОРМАЦИЯ Доступные шаблоны dotnet new доступны по ссылкам ниже. (Кажется, оба перечисляют их все, но не уверен, какой из них более актуален.)

  4. (НЕОБЯЗАТЕЛЬНО) Добавьте в решение новый проект.

    dotnet sln add src/GiraffeWebExample/GiraffeWebExample.fsproj
    
  5. Введите каталог проекта.

    cd src/GiraffeWebExample/
    
  6. Установите зависимости.

    dotnet add package Microsoft.AspNetCore.App
    dotnet add package Giraffe
    

    ПРИМЕЧАНИЕ. При добавлении жирафа я получил предупреждение ниже, поэтому для полноты просто вставьте его сюда:

    /usr/local/share/dotnet/sdk/8.0.202/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.DefaultItems.Shared.targets(111,5):
    warning NETSDK1080: A PackageReference to Microsoft.AspNetCore.App is not
    necessary when targeting .NET Core 3.0 or higher. If Microsoft.NET.Sdk.Web
    is used, the shared framework will be referenced automatically. Otherwise,
    the PackageReference should be replaced with a FrameworkReference. 
    [/Users/toraritte/dev/shed/dotnet/giraffe/ByHand/src/ByHand/ByHand.fsproj]
    
  7. Добавьте «точку входа».

    ПРИМЕЧАНИЕ. До сих пор не выяснили, какие еще способы .NET можно использовать для настройки веб-проекта, но атрибут EntryPoint описан в статье [Microsoft Learn][Руководство по F#] Консольные приложения и явные точки входа.

    Я решил просто скопировать один из примеров кода из раздела Делаем это вручную; Я предпочитаю более функциональный подход, поэтому вот второй:

    open System
    open Microsoft.AspNetCore.Builder
    open Microsoft.AspNetCore.Hosting
    open Microsoft.Extensions.Hosting
    open Microsoft.Extensions.DependencyInjection
    open Giraffe
    
    let webApp =
        choose [
            route "/ping"   >=> text "pong"
            route "/"       >=> htmlFile "/pages/index.html" ]
    
    let configureApp (app : IApplicationBuilder) =
        // Add Giraffe to the ASP.NET Core pipeline
        app.UseGiraffe webApp
    
    let configureServices (services : IServiceCollection) =
        // Add Giraffe dependencies
        services.AddGiraffe() |> ignore
    
    [<EntryPoint>]
    let main _ =
        Host.CreateDefaultBuilder()
            .ConfigureWebHostDefaults(
                fun webHostBuilder ->
                    webHostBuilder
                        .Configure(configureApp)
                        .ConfigureServices(configureServices)
                        |> ignore)
            .Build()
            .Run()
        0
    
  8. Запустить/обслуживать проект.

    dotnet watch run
    

    ИНФОРМАЦИЯ Началось со статьи Начало работы с ASP.NET Core в документации ASP.NET Core.

Другие вопросы по теме