1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

picodomでリアルDOMを作ってみた

Posted at

すべてを仮想DOM化して運用する状況なら別ですが、ブラウザJavaScriptでいろいろ操作していると、どうしてもDOMノードを作らないといけないことがあります。そんなときにもpicodomを使ってみてもいいんじゃないか、ということをちらっと思った次第です。

従来のやり方

JavaScriptでDOMノードを作ろうと思えば、大きく分けて2つの方法があります。

  • innerHTMLにHTML文字列を代入する
  • createElementsetAttributeなどのDOM APIを駆使する

ただ、文字列から生成するとパースのコストが発生しますし、文字列を変化させようとすればXSSの危険もあります。一方、DOM APIを直接使うとコードが冗長になって、どんなDOMを生成しているのか見えづらくなってしまいます。

jQueryがあれば、$('<elem />', {属性オブジェクト})の形で作ることもできますが、さすがにこのためだけにjQueryを入れるのもアホらしい話です。

既存のものの活用

で、プロジェクトにすでにpicodomを使っていたので、そこから起こす、という方法を取ってみることにしました。

import {patch} from 'picodom';

const toRealDom = vdom => {
  const div = document.createElement('div');
  patch(null, vdom, div);
  return div.firstChild;
}

もちろん設定すればJSXでも動かせます(jsFiddle)。簡潔・高速・安全、そしてライブラリも軽量ということで、仮想DOMでない環境でも便利かもしれない、と少し思いました。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?