zoukankan      html  css  js  c++  java
  • ASP.NET Core Library – scriban (Template Engine)

    前言

    有些项目会需要让 end user 写模板 (rich text) 同时又需要做一些 data binding. 这几乎是 programmer 的工作了...

    在 C#, 大可以使用 Razor Engine 来处理. 但是它对 end user 来说太 advance 了. 而且一般上 end user 只是想做简单的 data binding 和一些 simple 的 logic 而已. 

    于是就出现了许多比较简单的 template engine.

    Template Engine Syntax

    耳熟能详的有 EJS, handlebarsmustacheLiquid, 我觉得 React JSX 应该也可以算是一种吧.

    EJS 的特点是 <% %> 符号, 它支持所以 js 语法.

    handlebars 长这样

    mustache, 它的特点是没有 if, for in 这些语法, 它用一些巧妙的招数来实现, 比如下面这个 if 逻辑, person 是一个 boolean

    Liquid 是大名鼎鼎的电商系统 shopify 推出的.

    npm tread 对比

    比这个没有意思, 只是作为参考而已. 

    比语法的话, 我会倾向于 mustache 和 Liquid. 看上去舒服, end user 学起来也相对简单.

    .NET Environment

    市场怎样和 .NET 怎样是差很远的. 毕竟 .NET 是一个很冷门的东西. 外面世界总是美丽的.

    .NET 有几款 template engine, 最多 star (1.7k) 的是 scriban. 其它的参考: Benchmarks

    它虽然是自己的语法, 但是和 Liquid 非常相识, 而且也部分支持 Liquid 语法.

    Get Started

    安装

    dotnet add package Scriban --version 5.0.0

    对象 data binding

    var template = Template.ParseLiquid("Hello {{ product.name }}!");
    var result = template.Render(new { Product = new { Name = "Product 1" } });
    Console.WriteLine(result);

    if logic

    var template = Template.Parse(@"
        {{ if product.name == 'Product 1' }}
            This is a variable with 1
        {{ end }}
    ");
    var result = template.Render(new { Product = new { Name = "Product 1" } });
    Console.WriteLine(result.Trim());

    其它的... TODO 等用到才补.

  • 相关阅读:
    logic:iterate用法教程
    js实现页面跳转的几种方式
    MyEclipse快捷键两篇文章
    hibernate.cfg.xml配置
    DispatchAction功能用法
    第一个Spring程序
    BeanUtils.copyProperties与PropertyUtils.copyProperties用法及区别
    【Struts1.2总结】strutsconfig.xml配置
    java中equals和==的区别
    开发Struts程序的两篇文章
  • 原文地址:https://www.cnblogs.com/keatkeat/p/15760924.html
Copyright © 2011-2022 走看看