728x90
Liquid Template 은 텍스트 기반 템플릿 언어로, 동적인 콘텐츠를 생성하고 가공하는 데 사용됩니다.
이 언어는 주로 웹 애플리케이션에서 템플릿을 구성하고 사용하는 데 활용되며,
Shopify와 같은 전자 상거래 플랫폼에서 주로 사용됩니다.
Liquid는 사용하기 쉬운 문법을 제공하며 특정 환경에서 동작하도록 설계되었습니다.
. NET에서 사용하기 위해서는 여러 가지 패키지들이 나와있는데
여기서는 Fluid 로 사용하는 방법을 설명합니다.
Fluid는 Liquid 템플릿 언어를 기반으로 하는 오픈 소스 .NET 템플릿 엔진입니다.
https://github.com/sebastienros/fluid
이를 사용하면 .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
'C#' 카테고리의 다른 글
[C#] Indexer (0) | 2023.10.17 |
---|---|
[C#] Linq Aggregate 사용하기 (0) | 2023.09.26 |
[C#/Oracle] Oracle Parameter 순서 (0) | 2023.09.19 |
[C#] 사용자 다운로드 경로 및 환경변수 값 알아내기 (0) | 2023.09.17 |
[C#] ExpandoObject 로 정의된 객체 필드 및 값 구하기 (0) | 2023.09.16 |