Socket
Socket
Sign inDemoInstall

github.com/stevelacy/daz

Package Overview
Dependencies
Alerts
File Explorer
Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

github.com/stevelacy/daz


Version published
Created
Source

daz

Composable HTML components in Golang

GoDocGo

daz carbon example

Daz is a "functional" alternative to using templates, and allows for nested components/lists Also enables template-free server-side rendered components with support for nested lists. It is inspired by HyperScript.

A component can be created and used with simple functions:

// Example prop for a component
type User struct {
	Name string
	// ...
}

func MyComponenet(user User) func() string {
	return H(
		"div",
		Attr{"class": "bg-grey-50"},
		user.Name,
	)
}

func Root() func() string {
	user := User{Name: "Daz"}
	html := H("html", MyComponenet(user))
}

// And used in a handler:

func Handler(w http.ResponseWriter, r *http.Request) {
	w.Write([]byte(Root()))
}

Lists can be easily created without needing to embed a range / end in a template:

items := []func() string{
	H("li", "item one"),
	H("li", "item two"),
}

element := H("ul", Attr{"class": "bg-grey-50"}, items)

div := H("div", element)

Install

import (
	"github.com/stevelacy/daz"
)

Usage

func H

Create a HTML element:

H("div", ...attrs)

struct Attr

HTML attributes:

Attr{
	"class": "app",
	"onClick": "javascriptFunc()",
}
func UnsafeContent

This will bypass HTML sanitization and allow for direct injecting


injection := "<script>alert('xss')</script>"
root := H("div", UnsafeContent(injection))
// <script>alert('xss')</script>

FAQs

Package last updated on 13 Apr 2021

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc