<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>eunji.log</title>
        <link>https://velog.io/</link>
        <description>Frontend Engineer.</description>
        <lastBuildDate>Wed, 31 Mar 2021 13:35:42 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>eunji.log</title>
            <url>https://images.velog.io/images/shin-eunji/profile/723bdd50-4a2a-469b-9eeb-f2593784beb3/3201161A-9C5E-4043-8C0C-647D043B3FC1.jpeg</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. eunji.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/shin-eunji" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[선언적 렌더링]]></title>
            <link>https://velog.io/@shin-eunji/%EC%84%A0%EC%96%B8%EC%A0%81-%EB%A0%8C%EB%8D%94%EB%A7%81</link>
            <guid>https://velog.io/@shin-eunji/%EC%84%A0%EC%96%B8%EC%A0%81-%EB%A0%8C%EB%8D%94%EB%A7%81</guid>
            <pubDate>Wed, 31 Mar 2021 13:35:42 GMT</pubDate>
            <description><![CDATA[<h1 id="선언적-렌더링">선언적 렌더링</h1>
<pre><code>&lt;script&gt;
    import Hello from &#39;./Hello.svelte&#39;;
    let name = &#39;world&#39;;
    let age = 85;
&lt;/script&gt;

&lt;h1&gt;Hello {name}!&lt;/h1&gt;
&lt;h2&gt;{age}&lt;/h2&gt;</code></pre><p><img src="https://images.velog.io/images/shin-eunji/post/ed1a5d3d-dbcb-49ee-94f9-82bdc66054f1/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202021-03-31%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%2010.20.29.png" alt=""></p>
<h3 id="단방향-바인딩">단방향 바인딩</h3>
<p>데이터를 바인딩한다. (ex. name, age)</p>
<pre><code>&lt;script&gt;
    let name = &#39;world&#39;;
    let age = 85;
function assign() {
    name = &#39;Eunji&#39;
    age = 28
}
&lt;/script&gt;

&lt;h1&gt;Hello {name}!&lt;/h1&gt;
&lt;h2&gt;{age}&lt;/h2&gt;
&lt;img src=&quot;&quot; alt={name} /&gt;
&lt;input type=&quot;text&quot; value={name} /&gt;
&lt;button on:click={assign}&gt;
    Assign
&lt;/button&gt;</code></pre><h3 id="양방향-바인딩">양방향 바인딩</h3>
<p>값 앞에 <strong>&quot;bind:&quot;</strong> 명시해주면 양방향으로 바인딩 된다.</p>
<pre><code>&lt;script&gt;
    let name = &#39;world&#39;;
    let age = 85;
function assign() {
    name = &#39;Eunji&#39;
    age = 28
}
&lt;/script&gt;

&lt;h1&gt;Hello {name}!&lt;/h1&gt;
&lt;h2&gt;{age}&lt;/h2&gt;
&lt;img src=&quot;&quot; alt={name} /&gt;
&lt;input type=&quot;text&quot; bind:value={name} /&gt;
&lt;button on:click={assign}&gt;
    Assign
&lt;/button&gt;</code></pre><p>코드에 active class를 주려고 할 때, 삼항연산자를 사용하여 class에 줄 수 있다.
<strong>class={age &lt; 85 ? &#39;active&#39; : &#39;&#39;}</strong></p>
<pre><code>&lt;script&gt;
    import Hello from &#39;./Hello.svelte&#39;;
    let name = &#39;world&#39;;
    let age = 85;
function assign() {
    name = &#39;Eunji&#39;
    age = 28
}
&lt;/script&gt;

&lt;h1&gt;Hello {name}!&lt;/h1&gt;
&lt;h2 class={age &lt; 85 ? &#39;active&#39; : &#39;&#39;}&gt;{age}&lt;/h2&gt;
&lt;img src=&quot;&quot; alt={name} /&gt;
&lt;input type=&quot;text&quot; bind:value={name} /&gt;
&lt;button on:click={assign}&gt;
    Assign
&lt;/button&gt;


&lt;style&gt;
    h1 {
        color: red;
        font-size: 20px;
    }    
    .active {
        color: blue;
    }
&lt;/style&gt;</code></pre><p><strong>Assign</strong> 버튼 클릭 시, 28로 상태가 변화면서 active 스타일 속성인 컬러 값도 변하게 된다.</p>
<p><img src="https://images.velog.io/images/shin-eunji/post/57d87f7f-b982-4980-b796-d1c17baac51f/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202021-03-31%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%2010.32.11.png" alt=""></p>
<p><img src="https://images.velog.io/images/shin-eunji/post/e6916407-431e-416c-8558-2d9d2db83bf7/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202021-03-31%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%2010.32.21.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[Svelte 특징 분석]]></title>
            <link>https://velog.io/@shin-eunji/Svelte-%EA%B8%B0%EC%B4%88</link>
            <guid>https://velog.io/@shin-eunji/Svelte-%EA%B8%B0%EC%B4%88</guid>
            <pubDate>Tue, 30 Mar 2021 13:52:35 GMT</pubDate>
            <description><![CDATA[<h1 id="svelte">Svelte</h1>
<p>새로운 접근 방식의 Front-End Framework</p>
<h2 id="svelte-특징">Svelte 특징</h2>
<h3 id="1-더-적은-코드">1. 더 적은 코드</h3>
<ul>
<li>높은 가독성 유지</li>
<li>개발 시간 단축</li>
<li>쉬운 리팩토링</li>
<li>쉬운 디버깅</li>
<li>더 작은 번들(SPA 최적화)</li>
<li>낮은 러닝 커브</li>
</ul>
<pre><code>&lt;script&gt;
    let a = 1;
    let b = 2;
&lt;/script&gt;

&lt;input type=&quot;number&quot; bind:value={a}/&gt;
&lt;input type=&quot;number&quot; bind:value={b}/&gt;

&lt;p&gt;{a} + {b} = {a + b}&lt;/p&gt;</code></pre><h3 id="2-가상돔이-없다-no-virtual-dom">2. 가상돔이 없다. (No Virtual DOM!)</h3>
<ul>
<li>No Diffing</li>
<li>No Overhead</li>
<li>빠른 성능 </li>
</ul>
<h4 id="no-diffing">No Diffing</h4>
<p>스벨트는 갱신은 똑같이 일어나지만 가상돔을 생성하고 비교하는 부분이 없다.
리액트와 돔에 비해 오버헤드가 일어나지 않지 않아 아낄 수 있다.</p>
<blockquote>
<p>오버헤드(overhead)는 어떤 처리를 위해 들어가는, 간접적인 시간이나 메모리 등</p>
</blockquote>
<p>자바스크립트 환경 런타임에서 충분히 빠른 성능을 보여주고 퍼포먼스가 올라가고 메모리 사용이 적어진다.
리액트와 스벨트의 성능면은 스벨트가 더 좋다.</p>
<h3 id="3-진짜-반응성-truly-reactive">3. 진짜 반응성. (Truly Reactive)</h3>
<ul>
<li>프레임워크를 런타임에서 사용하지 않고 순수한 바닐라JS가 브라우저에서 동작한다.</li>
<li>일반 의존성(devDependencies) 컴파일러
(작업물&#39;애플리케이션&#39;을 바닐라JS로 변환(컴파일)하고 그 결과만 동작하기 때문에, 브라우저(런타임)에서 동작하지 않는 컴파일러라고 한다.)</li>
<li>명시적 설계(창의적 작업)</li>
</ul>
<blockquote>
<p>반응성이란 애플리케이션 상태(데이터)의 변화가, DOM에 자동으로 반영되는 현상을 말합니다.</p>
</blockquote>
<p><img src="https://images.velog.io/images/shin-eunji/post/fca5d554-47e3-4d84-8e96-a118ac0f6cf6/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202021-03-30%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%2010.42.47.png" alt="버튼을 누르기 전"></p>
<p><img src="https://images.velog.io/images/shin-eunji/post/81852edf-f4b2-404c-aeb9-0ab7e2e013d1/%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202021-03-30%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%2010.42.36.png" alt="버튼을 누르고 후"></p>
<h2 id="svelte-단점">Svelte 단점</h2>
<ul>
<li>낮은 성숙도(작은 생태계)</li>
<li>CDN 미제공 (런타임에서 동작하지 않기 때문에)</li>
<li>IE 지원하지 않는다.</li>
</ul>
]]></description>
        </item>
    </channel>
</rss>