Table of contents
download codes from ObservableHQ (μμ)
download
observableHQμμ Exportλ₯Ό ν΅ν΄ μ½λλ₯Ό λ€μ΄
μλ₯Ό λ€μ΄. observableHQμμ μμ±ν νμΌμ΄ μλμ κ°κ³ Exportλ₯Ό ν΅ν΄ μ½λλ₯Ό λ€μ΄λ°λλ€λ©΄,
//javascript
viewof amount = Inputs.range([0, 200], {label: "Amount", step: 1})
//javascript
viewof tipPercent = Inputs.radio([10, 12, 15, 18, 20, 25],
{label: "Tip Percentage", value: 20})
//javascript
tip = amount * (tipPercent / 100)
#markdown
A **${tipPercent}%** tip on **$${amount.toFixed(2)}** is **$${tip.toFixed(2)}**,
for a total of **$${(amount+tip).toFixed(2)}**
visual studio
λ€μ΄λ‘λ λ°μ μ½λμ ꡬ쑰λ, μλμ κ°λ€.
7d2f01ccb9e8dd3e
ββ 7d2f01ccb9e8dd3e@14.js
ββ README.md
ββ index.html
ββ index.js
ββ inspector.css
ββ package.json
ββ runtime.js
visual studioμμ μμΆν΄μ ν νμΌ μ 체λ₯Ό μ΄κ³ live serverλ₯Ό μ€ννλ©΄, λΆνμνλ€κ³ μκ°λλ μΆλ ₯ κ²°κ³Όκ° ν¨κ» 보μ¬μ§λ€.
μλ₯Ό λ€λ©΄,
range λ° μλμ, amount = 100
radio button μλμ, tipPercent = 20
index.htmlλ₯Ό μμ νλ©΄, λΆνμν μΆλ ₯ κ²°κ³Όλ₯Ό μμ ν μ μλ€.
# as-is
const runtime = new Runtime();
const main = runtime.module(define, Inspector.into(document.body));
# be-to
## <body>μμ μΆκ°
<section>
<div id="amount"></div>
<div id="tipPercent"></div>
<div id="tip"></div>
</section>
## mainμ μλ μ½λλ‘ μμ
const main = runtime.module(define, (name) => {
if (name === "viewof amount") {
return new Inspector(document.getElementById("amount"));
} else if (name === "viewof tipPercent") {
return new Inspector(document.getElementById("tipPercent"));
} else if (name === "viewof tip") {
return new Inspector(document.getElementById("tip"));
}
});
νμ§λ§, μ μ½λλ λ κ°μ§ λ¬Έμ μ μ κ°μ§κ³ μλ€.
첫λ²μ§Έ λ¬Έμ , tipμ λν λΆλΆμ λνλμ§ μλλ€.
κ·Έ μ΄μ λ, jsμμ νμΈν μ μλ€.
//μλμ μ½λλ 'tip'
main.variable(observer("tip")).define("tip", ["amount","tipPercent"], _tip);
//μλμ μ½λλ 'tipPercent'
//radio button
main.variable(observer("viewof tipPercent")).define("viewof tipPercent", ["Inputs"], _tipPercent);
//radio button μλμ tipPercent = 20
main.variable(observer("tipPercent")).define("tipPercent", ["Generators", "viewof tipPercent"], (G, _) => G.input(_));
νλ©΄μ μΆλ ₯νκ³ μΆλ€λ©΄, viewofλ₯Ό μ¬μ©ν΄μΌνλ€.
main
.variable(observer("viewof tip"))
.define("tip", ["amount", "tipPercent"], _tip);
λλ²μ§Έ λ¬Έμ , observableHQμμ markdownμΌλ‘ μμ±ν λΆλΆμ΄ μΆλ ₯λμ§ μλλ€.
μ? index.htmlμ κ΄λ ¨λ λΆλΆμ μμ±νμ§ μμκΈ° λλ¬Έμ΄λ€.
functionμ μ΄λ¦μ΄ μμκΈ° λλ¬Έμ μμ±ν μ μμλ€.
html, jsμ μλμ μ½λλ₯Ό μμ λλ μΆκ°νλ€.
html
<!-- htmlμ section-->
<div id="markdown"></div>
<!-- htmlμ define -->
else if (name === "viewof markdown") {
return new Inspector(document.getElementById("markdown"));
}
js
//jsμ define
//λ°λΌμ, μλμ μ½λμ (as-is)
main.variable(observer()).define(["tipPercent", "amount", "tip", "md"], _4);
//μ΄λ¦μ μ§μ΄μ£Όκ³ (to-be)
main
.variable(observer("viewof markdown"))
.define(["tipPercent", "amount", "tip", "md"], _markdown);
//jsμ function
//μλμ μ½λμ(as-is)
function _4(tipPercent, amount, tip, md) {
return md`A **${tipPercent}%** tip on **$${amount.toFixed(2)}** is **$${tip.toFixed(2)}**,
for a total of **$${(amount + tip).toFixed(2)}**`;
}
//μ΄λ¦μ μ§μ΄μ€λ€ (to-be)
function _markdown(tipPercent, amount, tip, md) {
return md`A **${tipPercent}%** tip on **$${amount.toFixed(2)}** is **$${tip.toFixed(2)}**,
for a total of **$${(amount + tip).toFixed(2)}**`;
}
νμμλ μ½λλ μ§μ°κ³ , μνλ μ½λλ λͺ¨λ μΆλ ₯ν μ μλ€.
download codes from ObservableHQ
λΆνμν μ½λ μΆλ ₯
issue> λΆνμν λΆλΆκΉμ§ λͺ¨λ μΆλ ₯λλ€.
fix > runtimeμ μ°Έκ³ νμ¬ νμν λΆλΆλ§ μΆλ ₯λλλ‘ μ½λλ₯Ό μμ νλ€.
κΈ°λ³Έμ μΈ κ΅¬μ‘°λ λ€μκ³Ό κ°λ€.
html μλ¨μ
<div id=βfunction_nameβ><div>
<body>μ runtime.module μμ
if (name === "viewof function_name") {
return new Inspector(document.getElementById("function_name"));
}
ifλ¬Έμ΄ μ΄λ―Έ μ‘΄μ¬νλ€λ©΄,
else if (name === "viewof function_name") {
return new Inspector(document.getElementById("function_name"));
}
3κ°μ js νμΌ export
κΈ°μ‘΄μ μ½λλ νλμ js νμΌλ§ exportν μ μμ. μΈ κ°μ js νμΌμ exportν΄μΌλ¨.
as-is
//index.js
export {default} from "./5a9ffc9992b0449e@7454.js";
//index.html
import define from "./index.js";
to-be
//index.js μμ
//index.html
import define from "./5a9ffc9992b0449e@7454.js";
import define from "./λ λ€λ₯Έ js νμΌ"
λμμ μν΄μλ νμνμ§λ§, μΆλ ₯μ΄ νμμλ μ½λ
λμνκΈ° μν΄μλ νμνμ§λ§, μΆλ ₯μ΄ νμμλ μ½λκ° μλ€.
μ΄ κ²½μ°μλ, cssμμ ν¨μμ displayλ₯Ό noneμΌλ‘ μ€μ νλ©΄ μΆλ ₯λμ§ μλλ‘ μμ ν μ μλ€.
#mutableDataForMapUpdate {
display: none;
}
#indexOfFormattedDates {
display: none;
}
#colorChangeandTooltip {
display: none;
}
#default_zoom_value {
display: none;
}