پیکربندی موتور قالب Sempare برای دلفی

Summarize this content to 400 words in Persian Lang
Sempare Template Engine (موجود در https://github.com/sempare/sempare-delphi-template-engine و GetIt) یک سیستم قالب همه کاره است که به طور خاص برای توسعه دهندگان دلفی طراحی شده است تا ایجاد و مدیریت HTML پویا، متن یا متن را ساده کند. هر فرمت خروجی مبتنی بر متن دیگر چه در حال ساخت برنامه های کاربردی وب، گزارش ها یا قالب های ایمیل هستید، Sempare Template Engine راه حلی قدرتمند و در عین حال ساده ارائه می دهد که با حداقل دیگ بخار در پروژه های دلفی ادغام می شود. موتور قالب از سال 2019 در دسترس بوده است و ویژگی های زیادی برای بررسی شما دارد.
در این آموزش، ما برخی از گزینه های پیکربندی یک زمینه قالب را بررسی می کنیم.
توسعه وب ایمن
ما می دانیم که در یک دنیای ناامن هستیم! حملات به طور مداوم در حال وقوع است. تزریق SQL، تزریق HTML فقط برای نام بردن واضح ترین …
Sempare Template Engine دارای ویژگی هایی است که اطمینان حاصل می کند برنامه وب شما ایمن و پاسخگو است. دو ویژگی مهم عبارتند از:
حداکثر زمان اجرا
رمزگذاری خودکار HTML
حداکثر زمان اجرا
به طور پیش فرض، حداکثر زمان اجرا روی 5 میلی ثانیه تنظیم شده است.
این را می توان سفارشی کرد:
var ctx := Template.Context();
ctx.MaxRunTimeMs = 5;
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
رمزگذاری خودکار HTML
به طور پیش فرض، حداکثر زمان اجرا روی 5 میلی ثانیه تنظیم شده است.
این را می توان سفارشی کرد:
var LCtx := Template.Context();
LCtx.UseHtmlVariableEncoder();
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
فرض کنید سناریوی زیر را داریم:
type
TTemplateData = record
DataField : string;
end;
var LData : TTemplateData;
LData.DataField := ”;
writeln(Template.Eval(‘Unsafe: <% DataField %>’, LData));
writeln(Template.Eval(LCtx, ‘Safe: <% DataField %>’, LData));
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
خروجی:
Unsafe: alert(“hello world”);
Safe: <script>alert(“hello world”);</script>
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
هنگامی که رمزگذاری HTML را فعال کرده اید، ممکن است سناریوهایی داشته باشید که بخواهید HTML خام را ارزیابی کنید. می توانید استفاده کنید چاپ کنید بیانیه برای انجام این کار
<% DataField %>
vs
<% print(DataField) %>
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
تغییر تگ های اسکریپت
به طور پیش فرض، برنامه نویسی قالب بین تگ های انجام می شود.
این را می توان به صورت زیر تغییر داد:
var LCtx := Template.Context();
LCtx.StartToken := ‘{{‘;
LCtx.EndToken := ‘}}’;
writeln(Template.Eval(LCtx, ‘{{ if true }}hello{{else}}bye{{end}}’));
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
پیام های خطای جاسازی شده
به طور پیشفرض، خطاها در ارزیابی الگو منجر به ایجاد استثنای الگو میشوند.
try
writeln(Template.Eval(LCtx, ‘<% a := [“a”; “b”] %>’));
except on E: Exception do
writeln(E.Message);
end;
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
مثال بالا یک استثنا ایجاد می کند که می گوید %> وجود ندارد.
می توانیم رفتار را به صورت زیر تغییر دهیم:
var LCtx := Template.Context();
LCtx.Options := LCtx.Options + [eoEmbedException];
try
writeln(Template.Eval(LCtx, ‘<% a := [“a”; “b”] %>’));
except on E: Exception do
writeln(E.Message);
end;
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
مثال بالا خروجی تولید خواهد کرد:
(Line 1, Column 14) Parsing error. Expecting: ;
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
مستندات
اسناد مربوط به زمینه در https://github.com/sempare/sempare-delphi-template-engine/blob/main/docs/configuration.md موجود است.
نتیجه گیری
گزینه های پیکربندی زیادی برای دستکاری رفتار موتور قالب وجود دارد.
حمایت مالی لازم است
لطفاً با حمایت از Sempare از طریق حامیان مالی GitHub (https://github.com/sponsors/sempare) یا از طریق پیوند پرداخت ما (https://buy.stripe.com/aEU7t61N88pffQIdQQ) در حفظ پروژه به ما کمک کنید. حامیان مالی می توانند به جادوگر IDE یکپارچه ما برای RAD Studio دسترسی پیدا کنند.
Sempare Template Engine (موجود در https://github.com/sempare/sempare-delphi-template-engine و GetIt) یک سیستم قالب همه کاره است که به طور خاص برای توسعه دهندگان دلفی طراحی شده است تا ایجاد و مدیریت HTML پویا، متن یا متن را ساده کند. هر فرمت خروجی مبتنی بر متن دیگر چه در حال ساخت برنامه های کاربردی وب، گزارش ها یا قالب های ایمیل هستید، Sempare Template Engine راه حلی قدرتمند و در عین حال ساده ارائه می دهد که با حداقل دیگ بخار در پروژه های دلفی ادغام می شود. موتور قالب از سال 2019 در دسترس بوده است و ویژگی های زیادی برای بررسی شما دارد.
در این آموزش، ما برخی از گزینه های پیکربندی یک زمینه قالب را بررسی می کنیم.
توسعه وب ایمن
ما می دانیم که در یک دنیای ناامن هستیم! حملات به طور مداوم در حال وقوع است. تزریق SQL، تزریق HTML فقط برای نام بردن واضح ترین …
Sempare Template Engine دارای ویژگی هایی است که اطمینان حاصل می کند برنامه وب شما ایمن و پاسخگو است. دو ویژگی مهم عبارتند از:
- حداکثر زمان اجرا
- رمزگذاری خودکار HTML
حداکثر زمان اجرا
به طور پیش فرض، حداکثر زمان اجرا روی 5 میلی ثانیه تنظیم شده است.
این را می توان سفارشی کرد:
var ctx := Template.Context();
ctx.MaxRunTimeMs = 5;
رمزگذاری خودکار HTML
به طور پیش فرض، حداکثر زمان اجرا روی 5 میلی ثانیه تنظیم شده است.
این را می توان سفارشی کرد:
var LCtx := Template.Context();
LCtx.UseHtmlVariableEncoder();
فرض کنید سناریوی زیر را داریم:
type
TTemplateData = record
DataField : string;
end;
var LData : TTemplateData;
LData.DataField := '';
writeln(Template.Eval('Unsafe: <% DataField %>', LData));
writeln(Template.Eval(LCtx, 'Safe: <% DataField %>', LData));
خروجی:
Unsafe: alert("hello world");
Safe: <script>alert("hello world");</script>
هنگامی که رمزگذاری HTML را فعال کرده اید، ممکن است سناریوهایی داشته باشید که بخواهید HTML خام را ارزیابی کنید. می توانید استفاده کنید چاپ کنید بیانیه برای انجام این کار
<% DataField %>
vs
<% print(DataField) %>
تغییر تگ های اسکریپت
به طور پیش فرض، برنامه نویسی قالب بین تگ های <% و %> انجام می شود.
این را می توان به صورت زیر تغییر داد:
var LCtx := Template.Context();
LCtx.StartToken := '{{';
LCtx.EndToken := '}}';
writeln(Template.Eval(LCtx, '{{ if true }}hello{{else}}bye{{end}}'));
پیام های خطای جاسازی شده
به طور پیشفرض، خطاها در ارزیابی الگو منجر به ایجاد استثنای الگو میشوند.
try
writeln(Template.Eval(LCtx, '<% a := ["a"; "b"] %>'));
except on E: Exception do
writeln(E.Message);
end;
مثال بالا یک استثنا ایجاد می کند که می گوید %> وجود ندارد.
می توانیم رفتار را به صورت زیر تغییر دهیم:
var LCtx := Template.Context();
LCtx.Options := LCtx.Options + [eoEmbedException];
try
writeln(Template.Eval(LCtx, '<% a := ["a"; "b"] %>'));
except on E: Exception do
writeln(E.Message);
end;
مثال بالا خروجی تولید خواهد کرد:
(Line 1, Column 14) Parsing error. Expecting: ;
مستندات
اسناد مربوط به زمینه در https://github.com/sempare/sempare-delphi-template-engine/blob/main/docs/configuration.md موجود است.
نتیجه گیری
گزینه های پیکربندی زیادی برای دستکاری رفتار موتور قالب وجود دارد.
حمایت مالی لازم است
لطفاً با حمایت از Sempare از طریق حامیان مالی GitHub (https://github.com/sponsors/sempare) یا از طریق پیوند پرداخت ما (https://buy.stripe.com/aEU7t61N88pffQIdQQ) در حفظ پروژه به ما کمک کنید. حامیان مالی می توانند به جادوگر IDE یکپارچه ما برای RAD Studio دسترسی پیدا کنند.