27 Feb 2015 on go golang rklotz open source
As I mentioned in rKlotz introduction post I choose Pongo2 as template engine for the first public version. Actually I tried html/template but found it too basic – it remind me my first steps in web-development with PHP and bunch of template files-blocks that were included in each page. But, as of Go 1.6 everything changed! Now Go templates do support {{ block "name" pipeline }} ... {{ end }}
that makes life much more easier.
Couple weeks ago, when 1.6 was not yet released, I decided that I need to move from Pongo2 to native go templates. It took couple evenings to understand how it should work and rewrite almost all templates. I found that moving from base template with blocks to list of templates with a bunch of includes makes my inner perfectionist cry, but I wanted to finish this. As a result, I rewrote all templates but one – @/form.html
. The problem with form is that it injects some code into header and footer of the page and I could not find solution that seemed elegant enough for me to use includes and avoid hard-coding. So I stopped and gave myself some time to think about it.
Fortunately Go 1.6 was released and I found uber-cool feature in its change log. It took me an evening to move back to base layout template with blocks of content and header/footer injections, my inner perfectionist was happy and I removed one vendor dependency from the project. Actually I added another dependency, Golang Template Functions, as Pongo2 has a lot of useful template functions that default go templates do not have.
Another change that I did is static files vendoring. I do not work a lot with front-end, so all of my job projects are bundled with pre-downloaded static libraries. It is quite old-school, but works well for back-office projects with simple Bootstrap-based UI and couple jQuery UI components. So, for rKlotz I choose bower as package manager and now GitHub gives me more relevant stats on languages usage for my project:
Instead of:
Next step is dockerization =)
Feel free to email me to provide some feedback on the project, give suggestions, or to just say hello!
built on top of rKlotz by Vladimir Garvardt