I've created some approach for what you need, but designed to "compile" 
these templates and reusable components into a static site. 
Feel free to check the code for ideas to implement your own solution, it 
shouldn't be hard to do so: https://github.com/leonelquinteros/thtml

I guess the code you want to check deeper will be in this package: 
https://github.com/leonelquinteros/thtml/tree/master/templates
https://godoc.org/github.com/leonelquinteros/thtml/templates




El lunes, 8 de agosto de 2016, 15:53:05 (UTC-3), Paulo Janeiro escribió:
>
> I'm using html/template already.
> I'm able to parse my templates dynamically but my approach doesn't seems 
> to be the best to handle dozens of different templates that can be used 
> inside N different combinations, especially because I want to cache them 
> and not to have to parse those combination every time I render that view.
> For example, I have this code:
>
> func extractFileNames () (templateFileNamesFull []string) {
>     files, _ := ioutil.ReadDir("./views")                                 
>                                                        
>     for _, f := range files {                                             
>                                                               
>         if strings.Contains(f.Name(), ".html") {                         
>                                                                
>             templateFileNamesFull = append(templateFileNamesFull, "views/" 
> + f.Name())                   
>         }
>     }
>     return templateFileNamesFull                                         
>                                                                
> }
>
>
> var Templates = template.Must(template.ParseFiles(extractFileNames()...)) 
>
> This works great WITHOUT layouts/components, because using components make 
> me have N of these combinations, instead of just one "Templates" variable 
> with all posed templates:
>
> t1.ParseFiles("boilerplate.html", "page1.html")
> ...
> tN.ParseFiles("boilerplate.html", "pageN.html")
>
> AFAIK with GO I can't create dynamic variables like "template1",..., 
> "templateN" thus making this road not the best one for what I want.
>
> So,  as a newcomer to this language and with some homework done, my 
> question is if there are some best practices for using these small 
> components or is it something that makes the use of a Web Framework 
> necessary?
>
>
> On Monday, August 8, 2016 at 7:09:48 PM UTC+1, parais...@gmail.com wrote:
>>
>> Use the html/template package . It's a good idea to go through the 
>> documentation of the standard lib once and to see what packages it 
>> provides. In fact, with Go the knowledge of the std lib is as important 
>> knowing any other  features of the language. 
>>
>> Le dimanche 7 août 2016 23:51:05 UTC+2, Paulo Janeiro a écrit :
>>>
>>> Coming from another language, I'm starting to port a web app to Go using 
>>> default packages to test-drive it but I couldn't find any 
>>> standard/recommended way of using pre-defined HTML components that I could 
>>> use in HTML pages and inside other components.
>>>
>>> Specifically, is there a recommended pattern on how to use a component 
>>> inside another component inside another component passing data to each one 
>>> in a transparent way?
>>> As far as I understand Go differentiates itself from other languages 
>>> because you don't need to use a Web framework and rather use default 
>>> API/middleware. But when it comes to reusable templates/components (and 
>>> also layouts) I don't see an immediate  parallel.
>>>
>>> Could someone point me in the correct direction?
>>> Thanks.
>>>
>>

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/golang-nuts/660dc0cd-666d-4c1a-8e6b-a56972fbcc08%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to