Scriptic เป็นภาษาเทมเพลตข้อความที่รวดเร็วมีประสิทธิภาพปลอดภัยและมีน้ำหนักเบาและเครื่องยนต์สำหรับ. NET พร้อมโหมดความเข้ากันได้สำหรับการแยกวิเคราะห์เทมเพลต liquid
Scriptic เป็นส้อมโดยตรงและขยายไปยัง Scriban และสืบทอดคุณสมบัติที่ยอดเยี่ยมทั้งหมด ในขณะที่เพิ่มการสนับสนุนสำหรับเลย์เอาต์และส่วน (คล้ายกับ. Net Razor's) (ดูด้านล่าง)
ต่อไปนี้ใช้อย่างเท่าเทียมกันกับ Scriptic และ Scriban:
// Parse a scriban template
var template = Template . Parse ( " Hello {{name}}! " ) ;
var result = template . Render ( new { Name = " World " } ) ; // => "Hello World!"
Scriban เป็นภาษาเทมเพลตข้อความและเครื่องยนต์ที่รวดเร็วมีประสิทธิภาพปลอดภัยและมีน้ำหนักเบาสำหรับ. NET พร้อมโหมดความเข้ากันได้สำหรับการแยกวิเคราะห์เทมเพลต liquid
// Parse a scriban template
var template = Template . Parse ( " Hello {{name}}! " ) ;
var result = template . Render ( new { Name = " World " } ) ; // => "Hello World!"
แยกวิเคราะห์เทมเพลตของเหลวโดยใช้ภาษาเหลว:
// Parse a liquid template
var template = Template . ParseLiquid ( " Hello {{name}}! " ) ;
var result = template . Render ( new { Name = " World " } ) ; // => "Hello World!"
ภาษามีความหลากหลายมากอ่านและใช้งานง่ายคล้ายกับเทมเพลตของเหลว:
var template = Template . Parse ( @"
<ul id='products'>
{{ for product in products }}
<li>
<h2>{{ product.name }}</h2>
Price: {{ product.price }}
{{ product.description | string.truncate 15 }}
</li>
{{ end }}
</ul>
" ) ;
var result = template . Render ( new { Products = this . ProductList } ) ;
สังเกต
โดยค่าเริ่มต้นคุณสมบัติและวิธีการของวัตถุ. NET จะถูกเปิดเผยโดยอัตโนมัติด้วยชื่อตัวพิมพ์เล็กและ
_
หมายความว่าคุณสมบัติเช่นMyMethodIsNice
จะถูกเปิดเผยเป็นmy_method_is_nice
นี่คือการประชุมเริ่มต้นเดิมเพื่อให้ตรงกับพฤติกรรมของเทมเพลตของเหลว หากคุณต้องการเปลี่ยนพฤติกรรมนี้คุณจะต้องใช้ตัวแทนMemberRenamer
Template.ToText
ช่วยให้สามารถจัดการสคริปต์ในหน่วยความจำและประหยัดลงในดิสก์ได้มีประโยชน์สำหรับ สถานการณ์การอัปเดตสคริปต์ RoundTripliquid
โดยใช้ Template.ParseLiquid
methodliquid
มีประสิทธิภาพน้อยกว่า Scriban โหมดนี้จะอนุญาตให้ย้ายจาก liquid
ไปยังภาษา scriban
ได้อย่างง่ายดายliquid
เป็นสคริปต์ Scriban โดยใช้ Template.ToText
บนเทมเพลตที่แยกวิเคราะห์ด้วย Template.ParseLiquid
if
/ else
/ for
/ while
, นิพจน์ ( x = 1 + 2
), เงื่อนไข ... ฯลฯmyvar | string.capitalize
)func
และอนุญาตให้ ฟังก์ชั่นพอยน์เตอร์/ผู้แทน ผ่านคำสั่ง alias @ directive
x = {mymember: 1}
) และอาร์เรย์ (เช่น x = [1,2,3,4]
))wrap
arrays functions
date
html
maths functions
object
regex functions
string functions
timespan
{{...}}
คุณสามารถติดตั้ง Scriban Extension สำหรับ Visual Studio Code เพื่อรับสีไวยากรณ์สำหรับสคริปต์ Scriban (ไม่มี HTML) และไฟล์ Scriban HTML โปรดทราบว่าส่วนขยายไม่รู้จักคุณสมบัติสคริปต์ที่ด้านบนของ Scriban
Scriptic เพิ่มคำหลักเพิ่มเติมสองสามคำให้กับภาษาสคริปต์:
layout
- ตัวอย่างเช่นคำสั่ง {{layout "_main_layout.htmls"}}
หมายถึงไฟล์เลย์เอาต์สำหรับหน้าปัจจุบัน เลย์เอาต์สามารถซ้อนกันได้เช่นไฟล์เลย์เอาต์สามารถมีคำสั่ง layout
สามารถมีคำสั่ง layout
เดียวในไฟล์ที่กำหนด แนวคิดเลย์เอาต์ทั้งหมดเป็นแบบจำลองหลังจากมุมมอง. NET มีดโกนbody
- ตัวยึดตำแหน่งภายในไฟล์เลย์เอาต์ที่ระบุว่าจะแสดงเนื้อหาของหน้าเว็บที่ไหนsection
- ตัวอย่างเช่น {{section "main-menu}"}}
ในหน้านั้นเป็นตัวอย่างที่มีชื่อและสามารถนำมาใช้ใหม่ได้ของ HTML และ Scriptic เนื้อหาของส่วนจะแสดงผลทุกที่ที่วางคำสั่ง render
ที่สอดคล้องกันrender
- ตัวอย่างเช่น {{render "main-menu"}}
ระบุว่าส่วนที่ชื่อที่กำหนดจะต้องแสดงผลภายในไฟล์เลย์เอาต์ ส่วนต่าง ๆ ยังสามารถกำหนดและแสดงผลภายในหน้าเดียวกัน ส่วนเดียวกันสามารถแสดงผลได้หลายครั้งทำให้เป็นวิธีที่สะดวกในการแยกมาร์กอัปขนาดเล็กที่นำกลับมาใช้ใหม่ได้markdown
- สามารถใช้ในสองวิธีที่แตกต่างกัน:{{markdown}} <markdown text goes here> {{end}}
ซึ่งในกรณีนี้ข้อความภายในคู่ markdown-end
ถือเป็น markdown บริสุทธิ์ (ต้องไม่มีการแสดงออกของสคริปต์){{markdown "mdfilename.md"}}
ซึ่งในกรณีนี้ไฟล์ markdown ภายนอกที่ระบุจะถูกดึงเข้ามา; ไฟล์ Markdown ยังสามารถมีคำสั่งสคริปต์และนิพจน์ พวกเขาได้รับการประเมินก่อนที่จะประมวลผลไวยากรณ์ของ Markdown คำหลักของ markdown
จะใช้งานได้เฉพาะเมื่อคุณให้ตัวแสดงข้อความ Markdown สิ่งนี้ทำในลักษณะเดียวกันกับวิธีการระบุตัวโหลดเทมเพลตภายนอก:
context . Markdown = new MarkdownRenderer ( ) ;
โดยที่ MarkdownRenderer
ใช้อินเทอร์เฟซ IStringTransformer
:
public interface IStringTransformer
{
string Render ( string text ) ;
}
หม้อแปลงสามารถทำชุดการแปลงตามอำเภอใจบนข้อความได้ แต่มันก็มีจุดประสงค์เพื่อทำงานได้ดีกับโปรเซสเซอร์ Markdown เช่น Markdig
(น่าสนใจจากผู้เขียนคนเดียวกันกับ Scriban)
Scriban มีให้แล้วพักหนึ่งเป็นแพ็คเกจ NuGet: Scriptic ยังไม่สามารถใช้งานได้ใน Nuget
Scriptic ยังคงทำงานอยู่อย่างมาก มันไม่ได้ประสบความสำเร็จในระดับเดียวกันของความมั่นคงและวุฒิภาวะเช่นเดียวกับ Scriban ที่กล่าวว่า Scriptic เป็นเพียงส่วนขยายเล็กน้อยของ Scriban ดังนั้นมันจึงได้รับประโยชน์มากมายจากฐานรหัสผู้ใหญ่ เราอาจทำลายบางสิ่งบางอย่างโดยไม่ได้ตั้งใจ ... อย่างไรก็ตามเราใช้สคริปต์สำหรับงานการผลิต ymmv. ใช้ความเสี่ยงของคุณเอง
Scriptic/Scriban กำลังลุกโชนอย่างรวดเร็ว ! สำหรับรายละเอียดเพิ่มเติมคุณสามารถตรวจสอบเอกสารมาตรฐานได้
ซอฟต์แวร์นี้เปิดตัวภายใต้ใบอนุญาต BSD-Clause 2
โลโก้สคริปต์ซึ่งได้รับแรงบันดาลใจจาก ปริศนา ของ Scriban อย่างชัดเจนยังคงเป็นงานต้นฉบับโดย Andrew J. Wozniewicz (Source Coreldraw File)
Scriban ถูกสร้างขึ้นและได้รับการดูแลโดย Alexandre Mutel หรือที่รู้จักกันในชื่อ Xoofx สคริปต์ถูกแยกจาก Scriban และขยายโดย Andrew J. Wozniewicz (aka ancz)