my favourite javascript framework is javascript

Sometimes to say that you “wrote” a piece of code feels wrong, it can feel more like you discovered it. Or re-discovered it anyhow, because it probably exists in many other places in slight variations.

function h (tag, attrs = {}, children = []) {
  const el = document.createElement(tag)

  for (const attr in attrs) {
    if (attr.startsWith('on')) {
      el[attr] = e => attrs[attr](el, e)
    } else {
      el.setAttribute(attr, attrs[attr])
    }
  }

  for (const child of children) {
    if (typeof child === 'string') {
      el.appendChild(document.createTextNode(child))
    } else {
      el.appendChild(child)
    }
  }

  return el
}

Which I wrote while updating alexandria as,

It captures what I like about Elm, but in a slightly uglier way.

h('input', {
  class: 'title',
  value: data.title,
  onblur: me => this.setTitle(me.value),
  onkeypress: (me, e) => {
    if (e.keyCode === 13) me.blur()
  }
})

Of course I’m not saying anyone should go out and use this as the core idea of their applications, especially if writing as part of a team. Using something with a bit more structure is obviously needed to prevent large apps becoming soup; this is a 300ish line app that essentially draws a <table>. And I’m pretty sure rebuilding rows when filtering or sorting isn’t the most efficient way of programming against the DOM, though I doubt it is too bad for the size of table I have.

What I’m trying to say is, with all of us only using frameworks we can sometimes forget how nice plain ol’ JavaScript is in the year 2019.

Pretty cool that Jamie is going to be starting a Homebrew Website Club in Nottingham. I will be there.

a picture of a can

I just wanted to share a picture of this can. Isn’t it great? I guess it still doesn’t beat a kwak.