C#

[C#] Liquid Template 사용하기 - Fluid

kjun.kr 2023. 9. 21. 23:44
728x90
728x170

Liquid Template 은 텍스트 기반 템플릿 언어로, 동적인 콘텐츠를 생성하고 가공하는 데 사용됩니다.

이 언어는 주로 웹 애플리케이션에서 템플릿을 구성하고 사용하는 데 활용되며,

Shopify와 같은 전자 상거래 플랫폼에서 주로 사용됩니다.

Liquid는 사용하기 쉬운 문법을 제공하며 특정 환경에서 동작하도록 설계되었습니다.

 

. NET에서 사용하기 위해서는 여러 가지 패키지들이 나와있는데

여기서는 Fluid 로 사용하는 방법을 설명합니다.

Fluid는 Liquid 템플릿 언어를 기반으로 하는 오픈 소스 .NET 템플릿 엔진입니다.

https://github.com/sebastienros/fluid

 

GitHub - sebastienros/fluid: Fluid is an open-source .NET template engine based on the Liquid template language.

Fluid is an open-source .NET template engine based on the Liquid template language. - GitHub - sebastienros/fluid: Fluid is an open-source .NET template engine based on the Liquid template language.

github.com

이를 사용하면 .NET 에서 텍스트의 내용을 조건과 객체의 내용에 따라 동적으로 변경이 가능합니다.

.NET6 기준입니다.

1. 'Fluid.Core' Nuget 패키지 설치

 

2. 사용하기

- 기본 사용 방법

아래 코드에서 볼수 있듯이 객체의 필드를 매핑하여 변환 후 반환해 줍니다.

using Fluid;

namespace LiguidTest
{
    internal class Program
    {
        static void Main(string[] args)
        {
            var parser = new FluidParser();

            var model = new Person { Firstname = "Bill", Lastname = "Gates", Age = 30, HobbyList = { "Golf", "Game" } };
            var source = @"Hello {{ Firstname }} {{ Lastname }}";

            if (parser.TryParse(source, out var template, out var error))
            {
                var context = new TemplateContext(model);

                Console.WriteLine(template.Render(context));
            }
            else
            {
                Console.WriteLine($"Error: {error}");
            }

            Console.Read();
        }

        public class Person
        {
            public string Firstname { get; set; }
            
            public string Lastname { get; set; }

            public int Age { get; set; }

            public List<string> HobbyList { get; set; } = new List<string>();
        }
    }
}

결과

 

- if 문 사용방법

using Fluid;

namespace LiguidTest
{
    internal class Program
    {
        static void Main(string[] args)
        {
            var parser = new FluidParser();

            var model = new Person { Firstname = "Bill", Lastname = "Gates", Age = 30, HobbyList = { "Golf", "Game" } };
            var source = @"
 Hello {{ Firstname }} {{ Lastname }}
{% if Age > 18 %}
 You are an adult
{% elsif Age > 12 %}
 You are a teenager
{% else %}
 You are a child
{% endif %}";

            if (parser.TryParse(source, out var template, out var error))
            {
                var context = new TemplateContext(model);

                Console.WriteLine(template.Render(context));
            }
            else
            {
                Console.WriteLine($"Error: {error}");
            }

            Console.Read();
        }

        public class Person
        {
            public string Firstname { get; set; }
            public string Lastname { get; set; }

            public int Age { get; set; }

            public List<string> HobbyList { get; set; } = new List<string>();
        }
    }
}

결과

다음 포스팅에서 더 다양한 문법에 대해서 알아보려고 합니다.

 

728x90
그리드형