By Fabrizio A. Vitale & Guido D'Orsi
Select2.prototype.render = function () { var $container = $( '<span class="select2 select2-container">' + '<span class="selection"></span>' + '<span class="dropdown-wrapper" aria-hidden="true"></span>' + '</span>' ); $container.attr('dir', this.options.get('dir')); this.$container = $container; this.$container[0].classList .add('select2-container--' + this.options.get('theme')); Utils.StoreData($container[0], 'element', this.$element); return $container; };
Select2.prototype.render = function () { var $container = $( '<span class="select2 select2-container">' + '<span class="selection"></span>' + '<span class="dropdown-wrapper" aria-hidden="true"></span>' + '</span>' ); $container.attr('dir', this.options.get('dir')); this.$container = $container; this.$container[0].classList .add('select2-container--' + this.options.get('theme')); Utils.StoreData($container[0], 'element', this.$element); return $container; };
Select2.prototype.render = function () { var $container = $( '<span class="select2 select2-container">' + '<span class="selection"></span>' + '<span class="dropdown-wrapper" aria-hidden="true"></span>' + '</span>' ); $container.attr('dir', this.options.get('dir')); this.$container = $container; this.$container[0].classList .add('select2-container--' + this.options.get('theme')); Utils.StoreData($container[0], 'element', this.$element); return $container; };
Select2.prototype.render = function () { var $container = $( '<span class="select2 select2-container">' + '<span class="selection"></span>' + '<span class="dropdown-wrapper" aria-hidden="true"></span>' + '</span>' ); $container.attr('dir', this.options.get('dir')); this.$container = $container; this.$container[0].classList .add('select2-container--' + this.options.get('theme')); Utils.StoreData($container[0], 'element', this.$element); return $container; };
By Fabrizio A. Vitale & Guido D'Orsi
Select2.prototype.render = function () { var $container = $( '<span class="select2 select2-container">' + '<span class="selection"></span>' + '<span class="dropdown-wrapper" aria-hidden="true"></span>' + '</span>' ); $container.attr('dir', this.options.get('dir')); this.$container = $container; this.$container[0].classList .add('select2-container--' + this.options.get('theme')); Utils.StoreData($container[0], 'element', this.$element); return $container; };
Select2.prototype.render = function () { var $container = $( '<span class="select2 select2-container">' + '<span class="selection"></span>' + '<span class="dropdown-wrapper" aria-hidden="true"></span>' + '</span>' ); $container.attr('dir', this.options.get('dir')); this.$container = $container; this.$container[0].classList .add('select2-container--' + this.options.get('theme')); Utils.StoreData($container[0], 'element', this.$element); return $container; };
Solid is a lightweight and declarative reactive library for building user interfaces.
function Counter(props) { const [count, setCount] = createSignal(props.initialCount ?? 0); createEffect(() => { console.log(`count ${count()}`); }); return ( <button type="button" onClick={() => setCount((n) => ++n)}> {count()} </button> ); }
function Counter(props) { const [count, setCount] = createSignal(props.initialCount ?? 0); createEffect(() => { console.log(`count ${count()}`); }); return ( <button type="button" onClick={() => setCount((n) => ++n)}> {count()} </button> ); }
A standard Solid component it’s just a function that:
setCount(n => n + 1);
setCount(n => n + 1);
function Sum() { const [a, setA] = createSignal(0); const [b, setB] = createSignal(0); createEffect(() => { console.log(`a + b = ${a() + b()}`); }); return ( <> <button type="button" onClick={() => setA((n) => ++n)}> a + 1 ({a()}) </button> <button type="button" onClick={() => setB((n) => ++n)}> b + 1 ({(b())}) </button> </> ); }
function Sum() { const [a, setA] = createSignal(0); const [b, setB] = createSignal(0); createEffect(() => { console.log(`a + b = ${a() + b()}`); }); return ( <> <button type="button" onClick={() => setA((n) => ++n)}> a + 1 ({a()}) </button> <button type="button" onClick={() => setB((n) => ++n)}> b + 1 ({(b())}) </button> </> ); }
function App() { const [isLoggedIn, setIsLoggedIn] = useState(false); const toggle = () => setIsLoggedIn((val) => !val); return isLoggedIn ? ( <button onClick={toggle}>Log out</button> ) : ( <button onClick={toggle}>Log in</button> ); }
function App() { const [isLoggedIn, setIsLoggedIn] = useState(false); const toggle = () => setIsLoggedIn((val) => !val); return isLoggedIn ? ( <button onClick={toggle}>Log out</button> ) : ( <button onClick={toggle}>Log in</button> ); }
function App() { const [isLoggedIn, setIsLoggedIn] = createSignal(false); const toggle = () => setIsLoggedIn((val) => !val); return ( <Show when={isLoggedIn()} fallback={<button onClick={toggle}>Log in</button>} > <button onClick={toggle}>Log out</button> </Show> ); }
function App() { const [isLoggedIn, setIsLoggedIn] = createSignal(false); const toggle = () => setIsLoggedIn((val) => !val); return ( <Show when={isLoggedIn()} fallback={<button onClick={toggle}>Log in</button>} > <button onClick={toggle}>Log out</button> </Show> ); }
const palette = [ '#26547C', '#EF476F', '#FFD166', '#06D6A0' ]; function Palette({ palette }: { palette: string [] }) { return ( <ul className="color-list"> {palette.map((color) => ( <li key={color} style={{ background: color }} /> ))} </ul> ); }
const palette = [ '#26547C', '#EF476F', '#FFD166', '#06D6A0' ]; function Palette({ palette }: { palette: string [] }) { return ( <ul className="color-list"> {palette.map((color) => ( <li key={color} style={{ background: color }} /> ))} </ul> ); }
const palette = [ '#26547C', '#EF476F', '#FFD166', '#06D6A0' ]; function Palette(props: { palette: string[] }) { return ( <ul class="color-list"> <For each={props.palette}> {(color) => <li style={{ background: color }} />} </For> </ul> ); }
const palette = [ '#26547C', '#EF476F', '#FFD166', '#06D6A0' ]; function Palette(props: { palette: string[] }) { return ( <ul class="color-list"> <For each={props.palette}> {(color) => <li style={{ background: color }} />} </For> </ul> ); }
npx degit solidjs/templates/ts my-solid-app
npx degit solidjs/templates/ts my-solid-app
npm create astro@latest
npm create astro@latest
Meta-framework developed by the SolidJS team, powered by vite and currently in beta.
import { component$ } from '@builder.io/qwik'; export const App = component$(() => { const str = 'hello'; return ( <button onClick$={() => alert(str)}> Hello Qwik </button> ); });
import { component$ } from '@builder.io/qwik'; export const App = component$(() => { const str = 'hello'; return ( <button onClick$={() => alert(str)}> Hello Qwik </button> ); });
app_component_button_onclick_0x8svzfkndi.js
import { useLexicalScope } from "@builder.io/qwik"; export const App_component_button_onClick_0X8SVzFKNdI = ()=>{ const [str] = useLexicalScope(); return alert(str); };
import { useLexicalScope } from "@builder.io/qwik"; export const App_component_button_onClick_0X8SVzFKNdI = ()=>{ const [str] = useLexicalScope(); return alert(str); };
app_component_akbu84a8zes.js
import { jsxDEV as _jsxDEV } from "@builder.io/qwik/jsx-dev-runtime"; import { qrlDEV } from "@builder.io/qwik"; export const App_component_AkbU84a8zes = ()=>{ const str = 'hello'; return /*#__PURE__*/ _jsxDEV("button", { onClick$: qrlDEV(()=>import("./app_component_button_onclick_0x8svzfkndi"), "App_component_button_onClick_0X8SVzFKNdI", { file: "/app.tsx", lo: 137, hi: 153, displayName: "App_component_button_onClick" }, [ str ]), children: "Hello Qwik" }, void 0, false, { fileName: "/app.tsx", lineNumber: 6, columnNumber: 10 }, this); };
import { jsxDEV as _jsxDEV } from "@builder.io/qwik/jsx-dev-runtime"; import { qrlDEV } from "@builder.io/qwik"; export const App_component_AkbU84a8zes = ()=>{ const str = 'hello'; return /*#__PURE__*/ _jsxDEV("button", { onClick$: qrlDEV(()=>import("./app_component_button_onclick_0x8svzfkndi"), "App_component_button_onClick_0X8SVzFKNdI", { file: "/app.tsx", lo: 137, hi: 153, displayName: "App_component_button_onClick" }, [ str ]), children: "Hello Qwik" }, void 0, false, { fileName: "/app.tsx", lineNumber: 6, columnNumber: 10 }, this); };
<!DOCTYPE html> <html q:container="paused" q:version="0.11.0" q:render="ssr" q:base="/repl/21uldbnhtl3/build/"> <html> <head q:head> <title q:head>Hello Qwik</title> </head> <body> <!--qv q:id=0 q:key=AkbU84a8zes:--> <button on:click="app_component_button_onclick_0x8svzfkndi.js#App_component_button_onClick_0X8SVzFKNdI[0]" q:id="1" >Hello Qwik</button><!--/qv--> </body> </html> <script type="qwik/json"> {"ctx":{"#1":{"r":"0"}},"objs":["hello"],"subs":[]} </script> <script id="qwikloader"> // qwik loader minifyed code </script> <script> window.qwikevents.push("click") </script> </html>
<!DOCTYPE html> <html q:container="paused" q:version="0.11.0" q:render="ssr" q:base="/repl/21uldbnhtl3/build/"> <html> <head q:head> <title q:head>Hello Qwik</title> </head> <body> <!--qv q:id=0 q:key=AkbU84a8zes:--> <button on:click="app_component_button_onclick_0x8svzfkndi.js#App_component_button_onClick_0X8SVzFKNdI[0]" q:id="1" >Hello Qwik</button><!--/qv--> </body> </html> <script type="qwik/json"> {"ctx":{"#1":{"r":"0"}},"objs":["hello"],"subs":[]} </script> <script id="qwikloader"> // qwik loader minifyed code </script> <script> window.qwikevents.push("click") </script> </html>
Qwik is still young and requires alot of work to become stable.
It’s a huge opportunity to become a contributor!