You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
574 lines
24 KiB
574 lines
24 KiB
|
|
<!DOCTYPE HTML>
|
|
<html lang="" >
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
|
|
<title>Introduction · GitBook</title>
|
|
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
|
<meta name="description" content="">
|
|
<meta name="generator" content="GitBook 3.2.3">
|
|
|
|
|
|
|
|
|
|
<link rel="stylesheet" href="gitbook/style.css">
|
|
|
|
|
|
|
|
|
|
<link rel="stylesheet" href="gitbook/gitbook-plugin-highlight/website.css">
|
|
|
|
|
|
|
|
<link rel="stylesheet" href="gitbook/gitbook-plugin-search/search.css">
|
|
|
|
|
|
|
|
<link rel="stylesheet" href="gitbook/gitbook-plugin-fontsettings/website.css">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<meta name="HandheldFriendly" content="true"/>
|
|
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
|
|
<meta name="apple-mobile-web-app-capable" content="yes">
|
|
<meta name="apple-mobile-web-app-status-bar-style" content="black">
|
|
<link rel="apple-touch-icon-precomposed" sizes="152x152" href="gitbook/images/apple-touch-icon-precomposed-152.png">
|
|
<link rel="shortcut icon" href="gitbook/images/favicon.ico" type="image/x-icon">
|
|
|
|
|
|
<link rel="next" href="1_LIFECYCLE_METHODS.html" />
|
|
|
|
|
|
|
|
</head>
|
|
<body>
|
|
|
|
<div class="book">
|
|
<div class="book-summary">
|
|
|
|
|
|
<div id="book-search-input" role="search">
|
|
<input type="text" placeholder="Type to search" />
|
|
</div>
|
|
|
|
|
|
<nav role="navigation">
|
|
|
|
|
|
|
|
<ul class="summary">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li class="chapter active" data-level="1.1" data-path="./">
|
|
|
|
<a href="./">
|
|
|
|
|
|
Introduction
|
|
|
|
</a>
|
|
|
|
|
|
|
|
</li>
|
|
|
|
<li class="chapter " data-level="1.2" data-path="1_LIFECYCLE_METHODS.html">
|
|
|
|
<a href="1_LIFECYCLE_METHODS.html">
|
|
|
|
|
|
1. Lifecycle Methods
|
|
|
|
</a>
|
|
|
|
|
|
|
|
</li>
|
|
|
|
<li class="chapter " data-level="1.3" data-path="2_STRING_RENDER.html">
|
|
|
|
<a href="2_STRING_RENDER.html">
|
|
|
|
|
|
2. Rendering from string
|
|
|
|
</a>
|
|
|
|
|
|
|
|
</li>
|
|
|
|
<li class="chapter " data-level="1.4" data-path="3_TEMPLATE_RENDER.html">
|
|
|
|
<a href="3_TEMPLATE_RENDER.html">
|
|
|
|
|
|
3. Rendering template tags
|
|
|
|
</a>
|
|
|
|
|
|
|
|
</li>
|
|
|
|
<li class="chapter " data-level="1.5" data-path="4_HANDLING_INPUT.html">
|
|
|
|
<a href="4_HANDLING_INPUT.html">
|
|
|
|
|
|
4. Handling user input
|
|
|
|
</a>
|
|
|
|
|
|
|
|
</li>
|
|
|
|
<li class="chapter " data-level="1.6" data-path="5_FLAGS.html">
|
|
|
|
<a href="5_FLAGS.html">
|
|
|
|
|
|
5. Flags
|
|
|
|
</a>
|
|
|
|
|
|
|
|
</li>
|
|
|
|
<li class="chapter " data-level="1.7" data-path="6_SHADOW_DOM.html">
|
|
|
|
<a href="6_SHADOW_DOM.html">
|
|
|
|
|
|
6. Shadow DOM
|
|
|
|
</a>
|
|
|
|
|
|
|
|
</li>
|
|
|
|
<li class="chapter " data-level="1.8" data-path="7_DEVTOOLS.html">
|
|
|
|
<a href="7_DEVTOOLS.html">
|
|
|
|
|
|
7. Pillar DevTools
|
|
|
|
</a>
|
|
|
|
|
|
|
|
</li>
|
|
|
|
|
|
|
|
|
|
<li class="divider"></li>
|
|
|
|
<li>
|
|
<a href="https://www.gitbook.com" target="blank" class="gitbook-link">
|
|
Published with GitBook
|
|
</a>
|
|
</li>
|
|
</ul>
|
|
|
|
|
|
</nav>
|
|
|
|
|
|
</div>
|
|
|
|
<div class="book-body">
|
|
|
|
<div class="body-inner">
|
|
|
|
|
|
|
|
<div class="book-header" role="navigation">
|
|
|
|
|
|
<!-- Title -->
|
|
<h1>
|
|
<i class="fa fa-circle-o-notch fa-spin"></i>
|
|
<a href="." >Introduction</a>
|
|
</h1>
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<div class="page-wrapper" tabindex="-1" role="main">
|
|
<div class="page-inner">
|
|
|
|
<div id="book-search-results">
|
|
<div class="search-noresults">
|
|
|
|
<section class="normal markdown-section">
|
|
|
|
<p align="left" style="margin-left: -24px">
|
|
<img alt="PillarJS" title="PillarJS" src="http://stuffs.fivepointseven.com/i/pillar.svg" width="250">
|
|
</p>
|
|
|
|
<p>PillarJS is a "batteries included" JavaScript library for writing smart reusable <a href="https://www.webcomponents.org/introduction" target="_blank">Web Components</a> in a modern way.</p>
|
|
<p>Inspired by React components PillarJS provides familiar state management mechanisms and Virtual DOM, while also providing all of the sweetness of Web Components like Shadow DOM, "by-definition" server side rendering and ability to render from template tags and strings.</p>
|
|
<h1 id="shortcuts">Shortcuts</h1>
|
|
<ol>
|
|
<li><a href="#getting-started">Getting started</a></li>
|
|
<li><a href="#stateless-components">Using stateless components</a></li>
|
|
<li><a href="#options">Options</a></li>
|
|
<li><a href="#jsx">Using JSX</a></li>
|
|
<li><a href="#browser-support">Browser support</a></li>
|
|
<li><a href="#faq">FAQ</a></li>
|
|
</ol>
|
|
<p><a name="getting-started"></a></p>
|
|
<h1 id="getting-started">Getting Started</h1>
|
|
<p>Getting started is simple:</p>
|
|
<p><strong>Step 1.</strong> Import PillarJS:</p>
|
|
<pre><code class="lang-javascript"><span class="hljs-keyword">import</span> Pillar <span class="hljs-keyword">from</span> <span class="hljs-string">'pillarjs'</span>;
|
|
</code></pre>
|
|
<p><strong>Step 2.</strong> Create your component:</p>
|
|
<pre><code class="lang-jsx"><span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">SuperHeader</span> <span class="hljs-keyword">extends</span> <span class="hljs-title">Pillar</span> </span>{
|
|
render(props) {
|
|
<span class="hljs-keyword">return</span> (
|
|
<span class="xml"><span class="hljs-tag"><<span class="hljs-name">div</span>></span>
|
|
<span class="hljs-tag"><<span class="hljs-name">h1</span>></span>{props.text}<span class="hljs-tag"></<span class="hljs-name">h1</span>></span>
|
|
<span class="hljs-tag"><<span class="hljs-name">h3</span>></span>It's Superpowered!<span class="hljs-tag"></<span class="hljs-name">h3</span>></span>
|
|
<span class="hljs-tag"></<span class="hljs-name">div</span>></span></span>
|
|
);
|
|
}
|
|
}
|
|
</code></pre>
|
|
<p>Looks familiar? Pillar components are written in the exact same way as React components.</p>
|
|
<p><em><strong>Note:</strong> Because Pillar uses <a href="https://github.com/developit/preact" target="_blank">Preact</a> for rendering JSX, <code>props</code> and <code>state</code> are passed as arguments to the <code>render()</code> method for convenient destructuring. You can still use <code>this.props</code> and <code>this.state</code> if you want to, but it's not required.</em></p>
|
|
<p><strong>Step 3.</strong> Register your custom tag:</p>
|
|
<pre><code class="lang-javascript">Pillar.register(SuperHeader, <span class="hljs-string">'super-header'</span>);
|
|
</code></pre>
|
|
<p>Second argument is an optional tag name. If not set, component name converted to dash-case will be used.</p>
|
|
<p><strong>Step 4.</strong> Use it!</p>
|
|
<pre><code class="lang-html"><span class="hljs-tag"><<span class="hljs-name">div</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"main"</span>></span>
|
|
<span class="hljs-tag"><<span class="hljs-name">super-header</span> <span class="hljs-attr">text</span>=<span class="hljs-string">"This is not a simple header!"</span>></span><span class="hljs-tag"></<span class="hljs-name">super-header</span>></span>
|
|
<span class="hljs-tag"></<span class="hljs-name">div</span>></span>
|
|
</code></pre>
|
|
<p>And you're good to go! Custom tag's attributes will be passed to <code>this.props</code> in your component and resulting HTML on the page will be:</p>
|
|
<pre><code class="lang-html"><span class="hljs-tag"><<span class="hljs-name">div</span>></span>
|
|
<span class="hljs-tag"><<span class="hljs-name">h1</span>></span>This is not a simple header!<span class="hljs-tag"></<span class="hljs-name">h1</span>></span>
|
|
<span class="hljs-tag"><<span class="hljs-name">h3</span>></span>It's Superpowered!<span class="hljs-tag"></<span class="hljs-name">h3</span>></span>
|
|
<span class="hljs-tag"></<span class="hljs-name">div</span>></span>
|
|
</code></pre>
|
|
<p><a name="stateless-components"></a></p>
|
|
<h3 id="can-i-use-stateless-components">Can I use stateless components?</h3>
|
|
<p>Yes, you can! The above class example can be trimmed down to this:</p>
|
|
<pre><code class="lang-jsx"><span class="hljs-keyword">const</span> SuperHeader = ({ text }) => (
|
|
<span class="xml"><span class="hljs-tag"><<span class="hljs-name">div</span>></span>
|
|
<span class="hljs-tag"><<span class="hljs-name">h1</span>></span>{text}<span class="hljs-tag"></<span class="hljs-name">h1</span>></span>
|
|
<span class="hljs-tag"><<span class="hljs-name">h3</span>></span>It's Superpowered!<span class="hljs-tag"></<span class="hljs-name">h3</span>></span>
|
|
<span class="hljs-tag"></<span class="hljs-name">div</span>></span></span>
|
|
);
|
|
</code></pre>
|
|
<p><a name="getting-started"></a></p>
|
|
<h3 id="options">Options</h3>
|
|
<p>A third argument passed to <code>Pillar.register</code> is an options object:</p>
|
|
<pre><code class="lang-javascript">{
|
|
useShadow: <span class="hljs-string">'open'</span> || <span class="hljs-string">'closed'</span>,
|
|
allowScripts: <span class="hljs-literal">true</span> <span class="hljs-comment">// Template render only</span>
|
|
}
|
|
</code></pre>
|
|
<p><strong><code>useShadow</code></strong> option enables Shadow DOM. Pass <strong>open</strong> for open mode and <strong>closed</strong> for closed. See the difference <a href="https://developer.mozilla.org/en-US/docs/Web/API/ShadowRoot/mode" target="_blank">here</a>.</p>
|
|
<p><strong><code>allowScripts</code></strong> By default, all <code><script></code> tags will be removed from the content of the template tag before rendering. This option re-enables them and permits executing <strong><em>any JavaScript code within template tag</em></strong>. Be careful with this option.</p>
|
|
<p><a name="jsx"></a></p>
|
|
<h3 id="notes-on-jsx">Notes on JSX</h3>
|
|
<p>There are 3 ways to enable JSX with Pillar:</p>
|
|
<ol>
|
|
<li><p>Using a Babel preset (easiest)</p>
|
|
<pre><code class="lang-json"> <span class="hljs-comment">// .babelrc</span>
|
|
{
|
|
<span class="hljs-string">"presets"</span>: [<span class="hljs-string">"pillar"</span>]
|
|
}
|
|
</code></pre>
|
|
</li>
|
|
<li><p>By adding:</p>
|
|
<pre><code class="lang-javascript"> <span class="hljs-comment">/** @jsx Pillar.h */</span>
|
|
</code></pre>
|
|
<p> on top of the file containing JSX. This will tell Babel to turn all JSX calls into <code>Pillar.h</code> calls. This is useful if for instance you already have React in your project and don't wan't to overwrite all of JSX behavior.</p>
|
|
</li>
|
|
<li><p>In <code>.babelrc</code>:</p>
|
|
<pre><code class="lang-json"> {
|
|
<span class="hljs-string">"presets"</span>: [...],
|
|
<span class="hljs-string">"plugins"</span>: [
|
|
<span class="hljs-string">"transform-react-jsx"</span>,
|
|
{
|
|
<span class="hljs-string">"pragma"</span>: <span class="hljs-string">"h"</span> <span class="hljs-comment">// default pragma is React.createElement</span>
|
|
}
|
|
]
|
|
}
|
|
</code></pre>
|
|
</li>
|
|
</ol>
|
|
<p><a name="browser-support"></a></p>
|
|
<h3 id="what-browsers-are-supported">What browsers are supported?</h3>
|
|
<p>Pillar is written with the web platform in mind. According to <a href="https://www.webcomponents.org/" target="_blank">WebComponents.org</a>, the current support for platform features is as follows:</p>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th style="text-align: left;"><strong>Browser Support</strong></th>
|
|
<th><img src="https://upload.wikimedia.org/wikipedia/commons/thumb/a/a5/Google_Chrome_icon_%28September_2014%29.svg/64px-Google_Chrome_icon_%28September_2014%29.svg.png" style="height: 24px"></th>
|
|
<th><img src="https://upload.wikimedia.org/wikipedia/commons/thumb/4/49/Opera_2015_icon.svg/48px-Opera_2015_icon.svg.png" style="height: 24px"></th>
|
|
<th><img src="https://upload.wikimedia.org/wikipedia/en/6/61/Apple_Safari.png" style="height: 24px"></th>
|
|
<th><img src="https://upload.wikimedia.org/wikipedia/commons/thumb/6/67/Firefox_Logo%2C_2017.svg/64px-Firefox_Logo%2C_2017.svg.png" style="height: 24px"></th>
|
|
<th><img src="https://upload.wikimedia.org/wikipedia/commons/thumb/d/d6/Microsoft_Edge_logo.svg/48px-Microsoft_Edge_logo.svg.png" style="height: 24px"></th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td>Template Tags</td>
|
|
<td>❇️ Stable</td>
|
|
<td>❇️ Stable</td>
|
|
<td>❇️ Stable</td>
|
|
<td>❇️ Stable</td>
|
|
<td>❇️ Stable</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Custom Elements</td>
|
|
<td>❇️ Stable</td>
|
|
<td>❇️ Stable</td>
|
|
<td>❇️ Stable</td>
|
|
<td>
|
|
🛠 Developing
|
|
</td>
|
|
<td>
|
|
🤔 Considering
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Shadow DOM</td>
|
|
<td>❇️ Stable</td>
|
|
<td>❇️ Stable</td>
|
|
<td>❇️ Stable</td>
|
|
<td>
|
|
🛠 Developing
|
|
</td>
|
|
<td>
|
|
🤔 Considering
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Module Scripts</td>
|
|
<td>❇️ Stable</td>
|
|
<td>❇️ Stable</td>
|
|
<td>❇️ >10.1</td>
|
|
<td>🏁 Flag in 54</td>
|
|
<td>🏁 Flag in 15</td>
|
|
</tr>
|
|
<tr>
|
|
<td>HTML Imports</td>
|
|
<td>❇️ Stable</td>
|
|
<td>❇️ Stable</td>
|
|
<td>⏱ On Hold</td>
|
|
<td>⏱ On Hold</td>
|
|
<td>🤔 Considering</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
|
|
<p><br>
|
|
And this is what the support looks like with
|
|
<a href="https://github.com/webcomponents/webcomponentsjs" target="_blank">the polyfill</a>:</p>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th style="text-align: left;"><strong>Polyfill Support</strong></th>
|
|
<th><img src="https://upload.wikimedia.org/wikipedia/commons/thumb/a/a5/Google_Chrome_icon_%28September_2014%29.svg/64px-Google_Chrome_icon_%28September_2014%29.svg.png" style="height: 24px"></th>
|
|
<th><img src="https://upload.wikimedia.org/wikipedia/commons/thumb/4/49/Opera_2015_icon.svg/48px-Opera_2015_icon.svg.png" style="height: 24px"></th>
|
|
<th><img src="https://upload.wikimedia.org/wikipedia/en/6/61/Apple_Safari.png" style="height: 24px"></th>
|
|
<th><img src="https://upload.wikimedia.org/wikipedia/commons/thumb/6/67/Firefox_Logo%2C_2017.svg/64px-Firefox_Logo%2C_2017.svg.png" style="height: 24px"></th>
|
|
<th><img src="https://upload.wikimedia.org/wikipedia/commons/thumb/d/d6/Microsoft_Edge_logo.svg/48px-Microsoft_Edge_logo.svg.png" style="height: 24px"></th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td>Template Tags</td>
|
|
<td>❇️ Stable</td>
|
|
<td>❇️ Stable</td>
|
|
<td>❇️ Stable</td>
|
|
<td>❇️ Stable</td>
|
|
<td>❇️ Stable</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Custom Elements</td>
|
|
<td>❇️ Stable</td>
|
|
<td>❇️ Stable</td>
|
|
<td>❇️ Stable</td>
|
|
<td>
|
|
☘️ Polyfill
|
|
</td>
|
|
<td>
|
|
☘️ Polyfill
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Shadow DOM</td>
|
|
<td>❇️ Stable</td>
|
|
<td>❇️ Stable</td>
|
|
<td>❇️ Stable</td>
|
|
<td>
|
|
☘️ Polyfill
|
|
</td>
|
|
<td>
|
|
☘️ Polyfill
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Module Scripts</td>
|
|
<td>❇️ Stable</td>
|
|
<td>❇️ Stable</td>
|
|
<td>❇️ >10.1</td>
|
|
<td>☘️ Polyfill</td>
|
|
<td>☘️ Polyfill</td>
|
|
</tr>
|
|
<tr>
|
|
<td>HTML Imports</td>
|
|
<td>❇️ Stable</td>
|
|
<td>❇️ Stable</td>
|
|
<td>☘️ Polyfill</td>
|
|
<td>☘️ Polyfill</td>
|
|
<td>☘️ Polyfill</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
|
|
<p><br>
|
|
<strong><em>Note:</em></strong> <em>Pillar does not include any polyfills. You are responsible for pollyfilling for your target browsers.</em></p>
|
|
<p><a name="faq"></a></p>
|
|
<h3 id="faq">FAQ</h3>
|
|
<h4 id="q-i-am-morally-opposed-to-jsx-how-can-i-use-this">Q: I am morally opposed to JSX! How can I use this?</h4>
|
|
<p>Pillar also supports <a href="">rendering from string</a> and <a href="">template tags</a>. We'll get to explaining those in a bit.</p>
|
|
<p>However using JSX provides a whole lot of awesome features that you'll be missing out on otherwise.</p>
|
|
<h4 id="q-im-morally-opposed-to-webpack-and-bundling-how-can-i-use-this">Q: I'm morally opposed to Webpack and bundling! How can I use this?</h4>
|
|
<p>Pillar doesn't impose any build systems on you. All you need to get started is drop a script tag on the page.</p>
|
|
<p>The downside of not using a build system is unavailability of JSX via Babel. But you can still use <a href="">string render</a> and <a href="">template tags</a> and get all benefits of Virtual DOM.</p>
|
|
<h4 id="q-i-am-morally-opposed-to-html-imports">Q: I am morally opposed to HTML Imports!</h4>
|
|
<p>We are too. Safari and Firefox <a href="https://platform-status.mozilla.org/#html-imports" target="_blank">aren't going to</a> implement them, and they are just generally weird. Pillar doesn't rely on them and we suggest not to use them.</p>
|
|
<h4 id="q-do-i-need-react-to-use-this">Q: Do I need React to use this?</h4>
|
|
<p>Nope. Pillar is inspired by React components approach and uses <a href="https://github.com/developit/preact/" target="_blank">Preact</a> under the hood for features like Virtual DOM and <a href="https://github.com/developit/preact/wiki/Linked-State#linked-state-to-the-rescue" target="_blank"><code>linkState</code></a> but it's not React nor does it require it.</p>
|
|
<h4 id="q-can-i-have-content-inside-of-my-custom-elements">Q: Can I have content inside of my custom elements?</h4>
|
|
<p>Yes! By default all elements inside your custom tag will be passed to <code>this.props.children</code>. There's a <a href="">flag</a> to disable that behavior.</p>
|
|
<h4 id="q-i-am-morally-supportive-of-imperative-dom-manipulations-will-this-still-work">Q: I am morally supportive of imperative DOM manipulations. Will this still work?</h4>
|
|
<p>Pillar is your friend! If outside forces like jQuery decide to change your element's attributes, changes will be passed down to <code>this.props</code> and <code>componentWillReceiveProps</code> will be called as you would expect.</p>
|
|
<h4 id="q-can-i-use-react-library-xyz-to-do-zyx">Q: Can I use React library XYZ to do ZYX?</h4>
|
|
<p>No idea. Pillar doesn't use React, it only uses JSX via <a href="https://github.com/developit/preact/" target="_blank">Preact</a>, so if library XYZ just does some JSX stuff and doesn't heavily depend on React core, it might work, but no promises.</p>
|
|
<h4 id="q-how-do-i-port-my-single-page-app-to-pillar">Q: How do I port my single page app to Pillar?</h4>
|
|
<p>Whoa whoa, hold your horses. Pillar serves different purpose than React or Angular or Vue or what have you. You're not supposed to be building an SPA with this.</p>
|
|
<p>Pillar is not a framework, it's a <a href="https://www.webcomponents.org/introduction" target="_blank">Web Components</a> library.</p>
|
|
<blockquote>
|
|
<p>Web components are a set of web platform APIs that allow you to create new custom, reusable encapsulated HTML tags to use in web pages and web apps.</p>
|
|
</blockquote>
|
|
<p>What Pillar does is allows you to create componens that are smarter than just a collection of tags and styles and allow you to do things like interactivity, networking, etc.</p>
|
|
<p>If you want to build a dynamic single page app, this library is probably not the tool you're looking for.</p>
|
|
<p><strong><em>Next: <a href="1_LIFECYCLE_METHODS.html">Lifecycle Methods →</a></em></strong></p>
|
|
|
|
|
|
</section>
|
|
|
|
</div>
|
|
<div class="search-results">
|
|
<div class="has-results">
|
|
|
|
<h1 class="search-results-title"><span class='search-results-count'></span> results matching "<span class='search-query'></span>"</h1>
|
|
<ul class="search-results-list"></ul>
|
|
|
|
</div>
|
|
<div class="no-results">
|
|
|
|
<h1 class="search-results-title">No results matching "<span class='search-query'></span>"</h1>
|
|
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<a href="1_LIFECYCLE_METHODS.html" class="navigation navigation-next navigation-unique" aria-label="Next page: 1. Lifecycle Methods">
|
|
<i class="fa fa-angle-right"></i>
|
|
</a>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
<script>
|
|
var gitbook = gitbook || [];
|
|
gitbook.push(function() {
|
|
gitbook.page.hasChanged({"page":{"title":"Introduction","level":"1.1","depth":1,"next":{"title":"1. Lifecycle Methods","level":"1.2","depth":1,"path":"1_LIFECYCLE_METHODS.md","ref":"1_LIFECYCLE_METHODS.md","articles":[]},"dir":"ltr"},"config":{"plugins":[],"root":"./docs","styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"pluginsConfig":{"highlight":{},"search":{},"lunr":{"maxIndexSize":1000000,"ignoreSpecialCharacters":false},"sharing":{"facebook":true,"twitter":true,"google":false,"weibo":false,"instapaper":false,"vk":false,"all":["facebook","google","twitter","weibo","instapaper"]},"fontsettings":{"theme":"white","family":"sans","size":2},"theme-default":{"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"showLevel":false}},"theme":"default","pdf":{"pageNumbers":true,"fontSize":12,"fontFamily":"Arial","paperSize":"a4","chapterMark":"pagebreak","pageBreaksBefore":"/","margin":{"right":62,"left":62,"top":56,"bottom":56}},"structure":{"langs":"LANGS.md","readme":"README.md","glossary":"GLOSSARY.md","summary":"SUMMARY.md"},"variables":{},"gitbook":"*"},"file":{"path":"README.md","mtime":"2017-12-10T07:28:46.904Z","type":"markdown"},"gitbook":{"version":"3.2.3","time":"2017-12-10T08:13:31.653Z"},"basePath":".","book":{"language":""}});
|
|
});
|
|
</script>
|
|
</div>
|
|
|
|
|
|
<script src="gitbook/gitbook.js"></script>
|
|
<script src="gitbook/theme.js"></script>
|
|
|
|
|
|
<script src="gitbook/gitbook-plugin-search/search-engine.js"></script>
|
|
|
|
|
|
|
|
<script src="gitbook/gitbook-plugin-search/search.js"></script>
|
|
|
|
|
|
|
|
<script src="gitbook/gitbook-plugin-lunr/lunr.min.js"></script>
|
|
|
|
|
|
|
|
<script src="gitbook/gitbook-plugin-lunr/search-lunr.js"></script>
|
|
|
|
|
|
|
|
<script src="gitbook/gitbook-plugin-sharing/buttons.js"></script>
|
|
|
|
|
|
|
|
<script src="gitbook/gitbook-plugin-fontsettings/fontsettings.js"></script>
|
|
|
|
|
|
|
|
</body>
|
|
</html>
|
|
|