Is it's possible to make modular pug template in vibed?
Steven Schveighoffer via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Wed Aug 9 06:08:26 PDT 2017
On 8/9/17 5:30 AM, Suliman wrote:
>
> Big thanks! Now I understand. Now i redone dlang.ru in diet templates.
Great!
>
> Am I right understand that include is needed only for small includes
> without any nesting levels?
No, includes can be as big as you want, with as many nested levels as
you want. You just can't alter the structure of the including template.
I think what you are getting hung up on is that the indentation of the
include has nothing to do with the indentation of the template that's
including it. It's not like the text is copy-pasted and then evaluated
in that context.
So if you have:
someelement
include x
the resulting html file is going to be:
<someelement>
<!-- all the contents of x>
</someelement>
x cannot insert data *outside* that element, no matter how you indent it.
You would use includes when you have repeated html that you need in many
places. For instance, if you have many places that you display the
contents of a database row somehow, you can save that snippet in a
template, and then just include it whenever you need the same thing.
You would use blocks when you have a framework that you want to be the
same, but need to vary the inner html. So essentially the boilerplate
that goes around every page on your html (the css, javascript imports,
etc.). It's so you don't have to repeat the structure in every file.
I will say, there are some annoying limitations to the diet format.
Sometimes you *want* to vary the structure based on variables, and it's
hard to do. For example, I have a place where I output essentially a
calendar as a table. Each row is a different day, each column is an item
on that day. The input is a single sorted (by date) array of items. But
there's no "good" way to say "ooh, this is a new day, close this table
row and open a new one" and still keep the nice structure of the diet
templates. Yes, I can output the html manually, but it's ugly. What I
ended up doing is just splitting the array into another array of days,
each element an array of items for that day.
-Steve
More information about the Digitalmars-d-learn
mailing list