JSX
Tyler Graham
21120

You can improve slightly on the nesting of method brackets, better handle optional parameters and have named parameters for clarity at the expense of introducing temporary objects by using the Builder pattern, e.g.:

ul().id('#bestest-menu')
.content(items.map(item =>
li().attrs(item.id)
.content(p().content(item.title).toHtml())
.toHtml())
.toHtml();