If you want to manipulate HTML files then there 
is https://godoc.org/golang.org/x/net/html,
but it comes with all the dangers of potential injection attacks and so 
on... which "html/template" avoids.
Writing something that injects into the specific nodes and afterwards 
encodes shouldn't be a big problem.

If you want to write HTML directly from code then writing a simple html 
encoder with the necessary models
isn't too complicated 
(https://github.com/egonelbre/exp/blob/master/htmlrender/main.go)

But the huge con you are ignoring is the Security Model. 
(https://rawgit.com/mikesamuel/sanitized-jquery-templates/trunk/safetemplate.html#problem_definition)

Anyways it's unclear what you are proposing or needing: in general standard 
libraries shouldn't do everything
and probably this, whatever it is, should belong to a 3-rd party package.

+ Egon

On Wednesday, 13 September 2017 22:02:02 UTC+3, Karv Prime wrote:
>
> Hello,
>
> I only recently found my way to go. I'm a (former?) fullstack web-dev and 
> as I ran into a PHP related problem (DOMDocument not working with HTML5 
> tags, I'd choose another solution stack if the language wouldn't be a fixed 
> point in history) I was looking if Go already has a good way to manipulate 
> HTML files. The templating is fine, but in my humble opinion there's a 
> problem...
>
> Problem: IMHO templating in the current form is flawed. To insert 
> placeholders (i.E. "{{.nav}}") probably isn't an optimal solution as it 
> just tells the code "hey, act upon me". It seems to be a shallow solution 
> to prevent code-mixins, but fails to really separate the concerns.
>
> Solution: If there would be a Go package to directly manipulate the DOM it 
> would be very helpful to separate Markup and Code. The code would act onto 
> the markup file (*.html) to create the page/site/module/... (whatever is 
> needed).
>
> Pros:
> - Frontend devs could create their own pages, modules, etc. without 
> thinking about any special tags they'd need.
> -> '<main></main>' instead of '<main>{{.content}}</main>'
> -> '<meta name="description" content="">' instead of '<meta 
> name="description" content="{{.description}}">'
> - Error/Exception if some tag/id/class/... has not been found instead of 
> admins possibly not knowing about it.
> -> You can act upon it and tell the users "Oops, something went wrong, 
> we're looking into it." so they know that the current state of the site 
> isn't what they should see.
> -> Better an empty element (and the admin knows about it) instead of users 
> seeing placeholders.
> - It's easier to avoid any problems with funny users trying to trick the 
> system.
> - In theory faster than templating solutions (untested claim, so there's a 
> big questionmark)?
> - It prefers modular frontends (main site, nav, main content, reusable 
> modules (i.E. for items on a sales platform)) instead of a single file with 
> placeholders
> - It prefers cleaner code and true SoC instead of the ofttimes preferred 
> workflow "just a little HTML in the code to create each item faster" or 
> vice versa.
> - ...
>
> Cons:
> - If there are elements unknown to the backend-devs, they will probably 
> stay empty
> -> Possible solution could be some kind of taint-checking for empty 
> elements after page creation
> - "Duplicate" code if there's frontend-scripting that is changing 
> parameters accordingly to AJAX results, but that's almost unavoidable.
> - Probably more communication needed between backend- and frontend-devs
> -> Possible solution, the aforementioned taint-checking, to see these 
> problems in testing, if they should arise
> - ...
>
> Feel free to contribute your thoughts, other pros/cons, etc. :)
>
> Kind regards
> Karv
>

-- 
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.
For more options, visit https://groups.google.com/d/optout.

Reply via email to