<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>仮想DOM  |  React入門</title>
	<atom:link href="https://react-js.jp/tag/%E4%BB%AE%E6%83%B3dom/feed" rel="self" type="application/rss+xml" />
	<link>https://react-js.jp</link>
	<description>WebアプリUI構築のためのJavaScriptライブラリ</description>
	<lastBuildDate>Thu, 08 Dec 2022 03:09:32 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.1.1</generator>

<image>
	<url>https://react-js.jp/wp-content/uploads/cropped-React_logo_logotype_emblem_512-32x32.png</url>
	<title>仮想DOM  |  React入門</title>
	<link>https://react-js.jp</link>
	<width>32</width>
	<height>32</height>
</image> 
<atom:link rel="hub" href="https://pubsubhubbub.appspot.com"/><atom:link rel="hub" href="https://pubsubhubbub.superfeedr.com"/><atom:link rel="hub" href="https://websubhub.com/hub"/>	<item>
		<title>仮想DOMとは</title>
		<link>https://react-js.jp/virtual-dom</link>
					<comments>https://react-js.jp/virtual-dom#respond</comments>
		
		<dc:creator><![CDATA[りあぴ]]></dc:creator>
		<pubDate>Thu, 08 Dec 2022 03:09:29 +0000</pubDate>
				<category><![CDATA[React]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[仮想DOM]]></category>
		<guid isPermaLink="false">https://react-js.jp/?p=36</guid>

					<description><![CDATA[目次 モダンJavaScript以前仮想DOMで高速化 モダンJavaScript以前 従来のJavaScriptでは以下のようにしてDOM(Document Object Model)の操作、つまり画面の更新をしていま [&#8230;]]]></description>
										<content:encoded><![CDATA[

  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-2" checked><label class="toc-title" for="toc-checkbox-2">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">モダンJavaScript以前</a></li><li><a href="#toc2" tabindex="0">仮想DOMで高速化</a></li></ol>
    </div>
  </div>

<h2><span id="toc1">モダンJavaScript以前</span></h2>



<p>従来のJavaScriptでは以下のようにしてDOM(Document Object Model)の操作、つまり画面の更新をしていました。<br>以下のコードはブラウザの開発コンソールでもそのまま実行できます。</p>



<pre class="wp-block-code javascript"><code>var elm = document.createElement('div'); //div要素を生成
var text = document.createTextNode('Hello!'); //テキストノード生成
elm.appendChild(text); // divの子要素にテキストノードを設定
document.body.appendChild(elm); // body要素の末尾にdiv要素を追加</code></pre>



<p>上のコード例は生のJavaScriptによるやや冗長な書き方で、jQueryなどのライブラリを使えばもっと簡潔に書けますが、内部的な処理としてはいずれも同様になります。<br>実行結果は以下のようになります。</p>



<pre class="wp-block-code html"><code>&lt;html>
&lt;body>
...
&lt;div>Hello&lt;/div>
&lt;/body></code></pre>



<p>しかし、この方法はレンダリングに時間がかかるため、Webアプリケーションで頻繁に行うと重くなってしまいます。<br>また、システムが大きくなるにつれ、JavaScriptのコードの見通しが悪くなりがちになってしまう問題がありました。</p>



<h2><span id="toc2">仮想DOMで高速化</span></h2>



<p>そういった問題を解決するのが仮想DOMという技術で、ReactやVue、Angularなどの、モダンなJavaScriptフレームワークで使われています。</p>



<p>仮想DOMは、実際のWebページを表す<span class="bold-green">DOMとは別に</span>、React内部でJavaScriptオブジェクトのデータ構造として扱われます。実体のDOMよりも軽量です。</p>



<p>Reactで画面を更新する際には、仮想DOMとの差分を実体のDOMに反映するようにしています。<br>それによってReactは高速に動作し、スムーズな画面の更新を実現しています。</p>



<p>少し難しそうに思えるかもしれませんが、Reactが内部で自動的にやってくれるので、最初のうちは開発する上で仮想DOMを意識する必要はありません。そういった仕組みがあるんだくらいに知っておくと良いと思います。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://react-js.jp/virtual-dom/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
