์ฌ๋ณด์ธ์!
Mustache.js ์ ES ๋ชจ๋ ๋ฒ์ ์ ์ง์ํ ๊ณํ์ด ์๋์ง ๊ถ๊ธํฉ๋๋ค. ๊ทธ๋ ๋ค๋ฉด ๋ด๊ฐ ๊ธฐ์ฌํ ์ ์์ต๋๋ค.
์์?
์ ๋ Deno ํ๋ก์ ํธ๋ฅผ ์งํ ์ค์ด๋ฉฐ ํ
ํ๋ฆฟ์ ๋ํ ๋
ผ์๊ฐ ์์ต๋๋ค(Deno๋ ES ๋ชจ๋๋ง ์ง์ํฉ๋๋ค). ๋ฌธ์ ๋ ํ์ฌ ํ
ํ๋ฆฟ ๋ ๋๋ฌ๊ฐ ์๋ค๋ ๊ฒ์
๋๋ค. ํ ๊ฐ์ง ์์ด๋์ด๋ ์ฝง์์ผ ์ Deno ๋ก ์ด์ํ๋ ๊ฒ์ด๋ฏ๋ก ํฌํธ๋ ์ ์ง ๊ด๋ฆฌ๊ฐ ํ์ํ ๋ค๋ฅธ ์ฝ๋ ์คํธ๋ฆผ์ ์๋ฏธํฉ๋๋ค. ์ฝง์์ผ์ ์ง์ ๋ฃ๋ ๊ฒ์ ๋ ํ๋ก์ ํธ ๋ชจ๋์ ์ด์ ์ด ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ฝง์์ผ์ ๊ฒฝ์ฐ mustache.mjs
๋ฅผ repo์ ์ถ๊ฐํ๊ฑฐ๋ ํธ์ง ํ๊ฑฐ๋ mustache.js๋ฅผ ES ๋ชจ๋๊ณผ ํธํ๋๋๋ก ๋ณ๊ฒฝํ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
๋น์ ์ ์๊ฐ?
์๋ ํ์ธ์ @zekth์ ๋๋ค!
deno์ ๋ํ ํฅ๋ฏธ์ง์งํ ๊ณํ์ด ์์ต๋๋ค. ๋๋ ์ด ํ๋ก์ ํธ๋ฅผ ES ๋ชจ๋๊ณผ ํธํ๋๊ฒ ๋ง๋๋ ๊ฒ์ ๋ํด ๋งค์ฐ ๊ธ์ ์ ์ด๋ฉฐ ํฌํธ๋ฅผ ํผํ๋ ๊ฒ์ ๋ํ ๊ทํ์ ์๊ฐ์ ์ ์ ์ผ๋ก ๋์ํฉ๋๋ค.
์ด๊ฒ์ ์คํํ๊ธฐ ์ํด ๋ฌด์์ด ํ์ํ์ง ๊ตฌ์ฒด์ ์ธ ์๊ฐ์ด ์์ต๋๊น?
๋ค์์ ์ค๋ ์์นจ์ ์ํํ (์ ๋ง ๋ชป์๊ธด) ํฌํธ์ ๋๋ค(typescript์์) https://github.com/zekth/deno_mustache/blob/master/mod.ts
๋๋ ์์์ ์ํด ๋ช ๊ฐ์ง ํ
์คํธ๋ฅผ ์ด์ํ์ต๋๋ค.
๋ด๊ฐ ๊ฐ์ง ์ ์ผํ ๊ด์ฌ์ฌ๋ ์ฝง์์ผ์ผ๋ก ์ง์ํ๋ ๋ชจ๋ ๋ค๋ฅธ ํ๊ฒฝ์
๋๋ค. ๊ธฐ๋ณธ js ํ์ผ ES ๋ชจ๋์ด ํธํ๋๋ ๊ฒ์ด ๋ค๋ฅธ mjs
๋ณด๋ค ๋ซ๋ค๊ณ ์๊ฐํ์ง๋ง ์๋ฌด ๊ฒ๋ ๊นจ๊ณ ์ถ์ง ์์ต๋๋ค. :)
๋ง์ ์ฐธ๊ณ ๋ถํ๋๋ฆฝ๋๋ค! ๐
๋๋ deno์ ๋ํ ๊ฒฝํ์ด ์ ํ ์๊ธฐ ๋๋ฌธ์ ๋ช ๊ฐ์ง ํ ๋ก ์ ์ด๋ฐํ๊ธฐ ์ํด ๋ช ๊ฐ์ง ์ฌ์ํ ์ง๋ฌธ์ ์์ํ๊ฒ ์ต๋๋ค.
.mjs
ํ์ผ์ด์ด์ผ ํฉ๋๊น ์๋๋ฉด type="module"
์ package.json
์์ต๋๊น?.. ๋ฑ๋ฑ, ์ด๋ค ๋จ์๋ผ๋ ๋ง์ด ์ฃผ์๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค. ํ์ฌ๋ก์๋ deno์ ๋ํ ์ง์์ด ๋๋ฌด ๋ถ์กฑํ์ฌ ์ด๋ฅผ ํด๊ฒฐํ๋ ๊ทธ๋ด๋ฏํ ๋ฐฉ๋ฒ์ ๋ํด ์ฐฝ์์ ์ผ๋ก ์๊ฐํ ์ ์์ต๋๋ค.
lodash
๋ ์ด์ ์์ด ์๋ํฉ๋๋ค. ๋ชจ๋ ๋ก๋๋ ํจํค์ง json ๋๋ ๊ธฐํ ์์ด HTTP ๊ฐ์ ธ์ค๊ธฐ๋ฅผ ํตํด ์ด๋ฃจ์ด์ง๋๋ค.์๋ฅผ ๋ค์ด deno์์ ์ฝง์์ผ์ ์ฌ์ฉํ๋ ๊ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
import * as mustache from 'https://raw.githubusercontent.com/janl/mustache.js/master/mustache.js'
mustache.render(......
๋ ๋ง์ ์ ๋ณด๋ฅผ ์ํ์๋ฉด Ryan์ ์ด ๊ฐ์ฐ์ ํ์ธ ํ์ธ์ :
์์ํ!
๊ทธ๋์ ์ฌ๊ธฐ์ ๋ช ๊ฐ์ง ์๊ฐ๊ณผ ๋งฅ๋ฝ์ ๊ณต์ ํ ์ ์๋ ๋ช ๊ฐ์ง ์ด์ผ๊ธฐ๊ฐ ์์ต๋๋ค. ES ๋ชจ๋์ ๋ํ ๋์ ์ดํด๋ export
ed์ ๊ด์ ์์ ๊ตฌ๋ฌธ ๋ถ์์ด ๊ฐ๋ฅํ๋ค๋ ๊ฒ์
๋๋ค. ์ด๋ ๋ณธ์ง์ ์ผ๋ก ํจ์ฌ ๋ ์ญ๋์ ์ธ CommonJS, AMD ๋ฑ๊ณผ ๊ฐ์ ์ ๊ตฌ์๋ค๊ณผ ์ด๋์ด ๋์กฐ๋ฅผ ์ด๋ฃน๋๋ค.
์ด๋ฅผ ์ผ๋์ ๋๊ณ , ํ์ฌ ์ฝ๋๊ฐ ์คํ ์ค์ธ ๋ชจ๋ ์์คํ ์ ๊ฐ์งํ๋ ๊ธฐ๋ฅ์ ์๋ฏธํ๋ ์ค๋๋ mustache.js์ ๋ณธ๋ฌธ์ ๋๋ฌ์ผ IIFE ๊ฐ ES ๋ชจ๋ ์์ญ์์ ์๋ํ์ง ์์ ๊ฒ์ด๋ผ๊ณ ๊ฐ์ ํ๊ณ ์์ต๋๋ค. m ํ๋ ธ์ด!
์ฆ, zekth/deno_mustache/mod.ts#L689 ํฌํธ์ ์๋ ๊ฒ๊ณผ ๊ฐ์ด ํ๋ฒํ๊ณ ๋จ์ํ export ...
๊ฐ ์๋ .js | .mjs | .ts
ํ์ผ์ด ์์ด์ผ ํฉ๋๋ค.
์ฌ๋ฏธ๋ ์ฐ๋ฆฌ๊ฐ ์ด์ ๋์์ ์ ์งํ๊ณ ๋ค๋ฅธ ๋ชจ๋ ์์คํ ์ ์ฌ์ฉํ๋ ํ๋ก์ ํธ์ ํธํ์ฑ์ ์ ์งํ๊ฑฐ๋ ์ฌ์ง์ด ๋ชจ๋ ์์คํ ์ด ์ ํ ํ์ํ์ง ์์ ๋ ์์๋ฉ๋๋ค. ๋ฐ๋ผ์ ์ธ๊ธ๋ IIFE ๋ํผ๊ฐ ํ์ํฉ๋๋ค. ์๋ฒ์ ๋ธ๋ผ์ฐ์ ์์ ์คํ๋ฉ๋๋ค.
๋ ๊ฐ์ ์๋ก ๋ค๋ฅธ ๊ตฌํ(ES ๋ชจ๋ + ๋๋จธ์ง)์ ๋๊ธฐํ ์ํ๋ก ์ ์งํ๊ณ ์ถ์ง ์๊ธฐ ๋๋ฌธ์ ๋น๋ ๋จ๊ณ๋ฅผ ๊ณ ๋ คํ ๊ฐ์น๊ฐ ์๋ค๊ณ ๋๋ผ๊ธฐ ์์ํฉ๋๋ค. ์๋ฅผ ๋ค์ด ์์ค ์ฝ๋๋ฅผ ES ๋ชจ๋ ์คํ์ผ๋ก ์์ฑํ๋ค๋ฉด ๋น๋ ๋จ๊ณ์์ ์ค๋๋ ๊ณผ ๊ฐ์ด ES ๋ชจ๋์ด ์๋ ๋ชจ๋๋ก ๋ณํํ ์ ์์ต๋๋ค. ๋๋ ๋ ๋ฐฉํด๊ฐ ๋๋ ๊ฒฝ์ฐ์๋ ๊ทธ ๋ฐ๋์ ๋๋ค.
๋ง์ง๋ง์ผ๋ก ์ ๋ ๊ฐ๋ฅํ ํ ์์ ๋จ๊ณ๋ฅผ ์ํํ๋ ๊ฒ์ ์ข์ํฉ๋๋ค. ๋๋ ์ผ๋ฐ์ ์ผ๋ก TypeScript์ ๋ํด ๊ธ์ ์ ์ด์ง๋ง, ์ฐ๋ฆฌ๊ฐ ES ๋ชจ๋์ ๊ณ์ ์ด์ ์ ๋ง์ถ๊ณ TypeScript/export typedef๋ก ๋ณํํ ์ง ์ฌ๋ถ์ ์ด์ ์ ๋ง์ถ ๋ค๋ฅธ ๋ผ์ด๋๋ฅผ ์ํํด๋ ๊ด์ฐฎ์ต๋๊น?
์๊ฐ๋๋ ๋ค๋ฅธ ์๊ฐ์ด๋ ์์ ์ฌํญ์ด ์์ต๋๊น?
๋ง์ต๋๋ค. ์ฒซ ๋ฒ์งธ ๋จ๊ณ๋ TypeScript ์คํ์ ์ถ๊ฐํ๊ณ ์ปดํ์ผ๋ฌ๋ฅผ ์ฌ์ฉํ์ฌ commonjs/ES5/ES6 ๋ฑ๊ณผ ๊ฐ์ ์ฌ๋ฌ ํ์ผ์ ์ถ๋ ฅํ๋ ๊ฒ์ ๋๋ค( https://www.typescriptlang.org/docs/handbook/compiler-options .html ) . TS ์ปดํ์ผ๋ฌ๋ฅผ ์ฌ์ฉํ๋ค๊ณ ํด์ TypeScript๋ฅผ ์ฌ์ฉํด์ผ ํ๋ ๊ฒ์ ์๋๋ฉฐ ES6 ์ฝ๋๋ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ค ์ข์ ์ ์์ด๋ค์! ์ฒ์์๋ ES -> ๋ค๋ฅธ ๋ชจ๋ ์์คํ ์์ TS ์ปดํ์ผ๋ฌ๋ฅผ ์ผ๋ฐ ๋น๋ ๋๊ตฌ๋ก ์ฌ์ฉํ๋ ค๊ณ ํฉ๋๋ค. ๊ทธ๋ฌ๋ฉด ๋์ค์ ๊ทธ๋ด๋ฏํ TS ๋ณํ์ด ํจ์ฌ ๋ ์ํํด์ง๋๋ค.
๊ทธ ์ ๊ทผ ๋ฐฉ์์ ์๋ํ ์ ์์ต๋๊น? ํ ๋ฒ์ ๋ชจ๋ ๊ฒ์ ํด๊ฒฐํ ํ์๋ ์์ง๋ง ์ต์ํ ์ฒซ ๋ฒ์งธ ๋น๋ฉ ๋ธ๋ก์ ํด๊ฒฐํด์ผ ํฉ๋๋ค. ๊ตฌ์ฒด์ ์ธ ๋ด์ฉ์ ์ดํด๋ณด๊ณ ํฅํ ๋ ผ์์ ๊ธฐ๋ฐ์ด ๋๋ ๊ฒ์ด ์๋ค๋ฉด ์ ๋ง ๊ฐ์น๊ฐ ์์ ๊ฒ์ ๋๋ค.
Sooo ๋๋ ES ๋ชจ๋๋ก์ ์ ํ์ ์๋ํ์ต๋๋ค.
๋ด ๊ฐ๋ ์ฆ๋ช ์ ์ฃผ๋ก ์์ฑ๋๋ UMD ๋ฒ์ ๋๋ฌธ์ TypeScript ์ปดํ์ผ๋ฌ(๋๋ babel) ๋์ rollup.js๋ฅผ ์ฌ์ฉํ๊ฒ ๋์์ต๋๋ค. ์ฐ๋ฆฌ๋ ์ฌ์ ํ ์ด์ ๋ชจ๋ ์์คํ ๊ณผ์ ํธํ์ฑ์ ์ ์งํ๊ฑฐ๋ ๋ชจ๋ ์์คํ ์ด ์ ํ ํ์ํ์ง ์์ต๋๋ค.
์์๋๋ก ์๋ํ๋์ง ํ์ธํ๊ธฐ ์ํด deno๋ฅผ ์ฌ์ฉํ์ฌ ํ ์คํธํ ์ํฅ์ด ์์ต๋๊น? philipj/mustache.js#esm-ify mustache.mjs
@philipj ๊ฐ ํ ๊ฒ์ ๋๋ค!
๋ช ๊ฐ์ง ์ค๋ฅ๊ฐ ์์ง๋ง ์ฌ์ํ ์์ ์ฌํญ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
error TS2339: Property 'render' does not exist on type '{ name: string; version: string; tags: string[]; }'.
โบ file:///Users/vlegoff/projects/genesys/github/telemetry/t/mustache.ts:10:23
10 var output = mustache.render('{{title}} spends {{calc}}', view);
~~~~~~
error TS2554: Expected 2 arguments, but got 1.
โบ https://raw.githubusercontent.com/phillipj/mustache.js/esm-ify/mustache.mjs:525:52
525 var context = (view instanceof Context) ? view : new Context(view);
~~~~~~~~~~~~~~~~~
An argument for 'parentContext' was not provided.
โบ https://raw.githubusercontent.com/phillipj/mustache.js/esm-ify/mustache.mjs:377:25
377 function Context (view, parentContext) {
~~~~~~~~~~~~~
error TS2339: Property 'escape' does not exist on type '{ name: string; version: string; tags: string[]; }'.
โบ https://raw.githubusercontent.com/phillipj/mustache.js/esm-ify/mustache.mjs:640:21
640 return mustache.escape(value);
~~~~~~
error TS2339: Property 'clearCache' does not exist on type '{ name: string; version: string; tags: string[]; }'.
โบ https://raw.githubusercontent.com/phillipj/mustache.js/esm-ify/mustache.mjs:659:10
659 mustache.clearCache = function clearCache () {
~~~~~~~~~~
error TS2339: Property 'parse' does not exist on type '{ name: string; version: string; tags: string[]; }'.
โบ https://raw.githubusercontent.com/phillipj/mustache.js/esm-ify/mustache.mjs:668:10
668 mustache.parse = function parse (template, tags) {
~~~~~
error TS2339: Property 'render' does not exist on type '{ name: string; version: string; tags: string[]; }'.
โบ https://raw.githubusercontent.com/phillipj/mustache.js/esm-ify/mustache.mjs:678:10
678 mustache.render = function render (template, view, partials, tags) {
~~~~~~
error TS2339: Property 'to_html' does not exist on type '{ name: string; version: string; tags: string[]; }'.
โบ https://raw.githubusercontent.com/phillipj/mustache.js/esm-ify/mustache.mjs:690:10
690 mustache.to_html = function to_html (template, view, partials, send) {
~~~~~~~
error TS2339: Property 'render' does not exist on type '{ name: string; version: string; tags: string[]; }'.
โบ https://raw.githubusercontent.com/phillipj/mustache.js/esm-ify/mustache.mjs:693:25
693 var result = mustache.render(template, view, partials);
~~~~~~
error TS2339: Property 'escape' does not exist on type '{ name: string; version: string; tags: string[]; }'.
โบ https://raw.githubusercontent.com/phillipj/mustache.js/esm-ify/mustache.mjs:704:10
704 mustache.escape = escapeHtml;
~~~~~~
error TS2339: Property 'Scanner' does not exist on type '{ name: string; version: string; tags: string[]; }'.
โบ https://raw.githubusercontent.com/phillipj/mustache.js/esm-ify/mustache.mjs:707:10
707 mustache.Scanner = Scanner;
~~~~~~~
error TS2339: Property 'Context' does not exist on type '{ name: string; version: string; tags: string[]; }'.
โบ https://raw.githubusercontent.com/phillipj/mustache.js/esm-ify/mustache.mjs:708:10
708 mustache.Context = Context;
~~~~~~~
error TS2339: Property 'Writer' does not exist on type '{ name: string; version: string; tags: string[]; }'.
โบ https://raw.githubusercontent.com/phillipj/mustache.js/esm-ify/mustache.mjs:709:10
709 mustache.Writer = Writer;
~~~~~~
Found 12 errors.
์ํธ:
import mustache from 'https://raw.githubusercontent.com/phillipj/mustache.js/esm-ify/mustache.mjs';
var view = {
title: 'Joe',
calc: function() {
return 2 + 4;
},
};
var output = mustache.render('{{title}} spends {{calc}}', view);
console.log(output);
.mjs
ํ์ผ์ ๋ํด ํ๋ณด๋ฅผ ํ์๊ฒ ์ต๋๊น?
๊ฐ์ฌ ํด์!
๋ด๊ฐ ์ฒ์์ ํ๋ ค๊ณ ํ๋ ๊ฒ์ ๋ํด ์ข ๋ ๋ง์ ๋งฅ๋ฝ์ ๊ณต์ ํด์ผ ํ๋ค๋ ๊ฒ์ ์ด์ ๊นจ๋ซ์ต๋๋ค. ์ฃ์กํฉ๋๋ค.
์์ ๋ ผ์ํ ๋ฐ์ ๊ฐ์ด TypeScript ์ปดํ์ผ๋ฌ๋ฅผ ์ฌ์ฉํ ์ด๊ธฐ ์๋์์๋ ์ง๊ธ ์ ๊ณตํ ๊ฒ๊ณผ ๋ค์ ์ ์ฌํ ๋ช ๊ฐ์ง ์ค๋ฅ๊ฐ ๋ฐ์ํ์ต๋๋ค. ๊ทธ๋ผ์๋ ๋ถ๊ตฌํ๊ณ ์ถ๋ ฅ์ ์์ฑํ๊ณ ๋ด๊ฐ ์ํ๋ ๊ฒ๊ณผ ๋งค์ฐ ๊ฐ๊น๋ค๋ ์ฌ์ค์ ๋๋์ต๋๋ค.
๋ด๊ฐ ๋ง์กฑํ์ง ๋ชปํ ๊ฒ์ ์ปดํ์ผ๋ ์ถ๋ ฅ์ ๊ฐ์ธ๋ UMD ์ฝ๋์์ต๋๋ค. ์ฃผ๋ก ๋ ๊ฐ์ง:
window.Mustache
์๊ฐ). ์ด๊ฒ์ ๋ชจ๋ ์์คํ
์ด ์๋ ์ฌ์ฉ์์๊ฒ ๋งค์ฐ ์ค์ํฉ๋๋ค.module.exports.default
๋ณด๋ค๋ module.exports
. CommonJS require()
๊ฐ ES ๋ชจ๋์ผ ๋ ๊ทธ๊ฒ์ด ์ฌ๋ฐ๋ฅด๊ณ ์์๋ ๋์์ผ ์ ์์ง๋ง, ์ด๋ ๋ด๊ฐ ํผํ๊ณ ์ถ์๋ ์ด์ ๋ฒ์ ๊ณผ์ ํธํ์ฑ์ ๊นจ๋จ๋ฆด ๊ฒ์
๋๋ค.๋ด ์ฃผ์ ๋ชฉํ๋ ๋ฌด์๋ณด๋ค๋ ์์ค ์ฝ๋๋ฅผ TypeScript๋ฅผ ๋์ ํ์ง ์๊ณ ES ๋ชจ๋๋ก ์ ํํ๋ ๊ฒ์ด์๊ธฐ ๋๋ฌธ์ ๋ค๋ฅธ ์ปดํ์ผ๋ฌ/๋ฒ๋ค๋ฌ๋ฅผ ์ฌ์ฉํ์ฌ ์์ ๋ ๊ฐ์ง ๋ฌธ์ ๋ฅผ ํผํ๊ธฐ ์ํด ๋ค๋ฅธ ์์ ์ ์ํํ๋์ง ํ์ธํ๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค.
๋ฐ๋ผ์ ๋ด๊ฐ rollup.js๋ก ๋๋ ์ด์ . UMD ์ถ๋ ฅ์ ์ฐ๋ฆฌ๊ฐ ํ์๋ก ํ๋ ๊ฒ์ด๋ฉฐ ์ด ํจํค์ง์ ์ฌ์ฉ์์๊ฒ ์ฃผ์ ๋ณ๊ฒฝ ์ฌํญ์ ์ผ์ผํค์ง ์์ต๋๋ค.
๋ด ์ค์ ์ง๋ฌธ์ Sooo; ์ง๊ธ TypeScript์ ๊ด์ฌ์ ๊ฐ์ ธ์ผ ํฉ๋๊น?
์ด ๋
ผ์์ ์๋ถ๋ถ์์ ๋ด๊ฐ ์ดํดํ ๋ฐ๋ TypeScript๋ก ์์ ํ ์ ํ๋์ง ์์ ๊ฒ์ผ๋ก ๊ฐ์ฃผํ ์ ์๋ค๋ ๊ฒ์
๋๋ค. ๊ทธ๋ผ์๋ ๋ถ๊ตฌํ๊ณ ์ค์ ๋ก ES ๋ชจ๋์ด๋ผ๋ฉด deno
๋์์ด ๋ ๊ฒ์ด์ง๋ง ์ ๊ฐ ์ฝ๊ฐ ์คํดํ์ ์๋ ์์ต๋๋ค.
์ฃผ์ ๋ฌธ์ ๋ ๋ค์๊ณผ ๊ฐ์ ์ฝง์์ผ์ ์ฒซ ๋ฒ์งธ ์ด๊ธฐํ๋ผ๊ณ ์๊ฐํฉ๋๋ค.
https://github.com/janl/mustache.js/blob/master/mustache.js#L14
๋ํ ์ด๊ฒ์ https://github.com/janl/mustache.js/blob/master/mustache.js#L536
new Context(view, null)
๋ก ๋ค์ ์ธ ์ ์์ต๋๋ค.
๋น์ ์ ์๊ฐํ์ง ์์ต๋๋ค?
๊ฐ์ฅ ํฐ ๋ฌธ์ ๋ ์ฝง์์ผ์ ์ฒซ ๋ฒ์งธ ์ด๊ธฐํ๋ผ๊ณ ์๊ฐํฉ๋๋ค.
๋น์ ์ด ์ณ์ ๊ฒ์
๋๋ค. .mjs
๋ฒ์ ์์๋ UMD ๋ํผ์์ ์ ๋ฌ๋ ๊ฐ์ฒด๊ฐ ์๋ ์ค์ ์์ค ์ฝ๋๋ก ์ด๋ํ๋ ค๊ณ ํ์ต๋๋ค.
var mustache = {
name: 'mustache.js',
version: version,
tags: [ '{{', '}}' ]
}
TypeScript ์ค๋ฅ๋ฅผ ์์ ํ๋ ์ ๊ทผ ๋ฐฉ์์ ๋ณด๋ฉด ๋ฉ์ง ๊ฒ์ ๋๋ค ๐
์๋ก์ด Context(view, null)๋ก ๋ค์ ์์ฑํ ์ ์์ต๋๋ค.
๊ฑฐ์.. new Context(view, undefined)
๋ ๋ ๋ฒ์งธ ์ธ์๋ฅผ ์ ํ ์ ๋ฌํ์ง ์๋ ๊ฒ๊ณผ ๋์ผํ์ง ์์ต๋๊น?
์ new Context
์ ๋ํด ์ ํํฉ๋๋ค.
๊ทธ๋ ๊ฒ ๋ ธ๋ ฅํ๊ฒ ์ต๋๋ค :)
์ฌ๊ธฐ ํ๋ณด๊ฐ ์์ต๋๋ค: https://github.com/phillipj/mustache.js/pull/1
CI๊ฐ ์์๋์์ง๋ง ๋ณดํ์ด ๋ฐ์ํ๋ ๋ฉ์์ง๋ฅผ ๋ฐ์ ์ด์ ๋ฅผ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.
๊ต์ฅํฉ๋๋ค, ์ ๋ง ๊ฐ์ฌํฉ๋๋ค! ์์ผ๋ก ๋ฉฐ์น ๊ฐ ๊ฝค ๋ฐ๋น ์, ์ด๋ฒ์ฃผ๊ฐ ๋๋๊ธฐ ์ ์ ์ต์ ์ ๋คํด ๋ฆฌ๋ทฐํ๊ฒ ์ต๋๋ค.
์ํ ์ ๋ฐ์ดํธ; ๋ด esm-ify ๋ธ๋์น ์ ๋ํด ์ฐ PR์์ ์ธ๊ธํ๋ฏ์ด ์ด์ ์ด ํจํค์ง๊ฐ #724์์ ์๋ ๊ฐ ์ง์ํด ์จ ๋ค๋ฅธ ๋ชจ๋ ์์คํ ์ ๋ํด ์๋ํ ๋๋ก ์๋ํ๋์ง ํ์ธํ๋ ๋ช ๊ฐ์ง ํ ์คํธ๊ฐ ์์ต๋๋ค.
๋๊ตฐ๊ฐ ์ด์๋ฅผ ์ ๊ธฐํ๊ฑฐ๋ ๋ง์์ ๋ ๋ง์ ์กฐ์ ์ด ์๋ ๊ฒฝ์ฐ๋ฅผ ๋๋นํ์ฌ ๋ช ๊ฐ์ง ๊ฐ์ ์ฌํญ์ ํธ์ํ ๋๋ก ๋ฉฐ์น ๋์ ์์กฐํ๋๋ก ํ๊ฒ ์ต๋๋ค.
์ด๋ฌํ ํ
์คํธ๊ฐ ์๋ฃ๋๋ฉด ์ด ํ๋ก์ ํธ๋ฅผ ES ๋ชจ๋๋ก ์์ฑ๋ ์์ค ์ฝ๋๋ก ์ ํํ๊ณ ์ค๋ mustache.js
์ ์๋ ๊ฒ์ ์์ฑํ๋ ๋จ๊ณ๋ฅผ ๋น๋ํ๋ ๊ฒ์ด ํธ์ํด์ง๋๋ค. ๋ฌผ๋ก ์๋ฃ๋ ๊ฒ์
๋๋ค. ๋ค๊ฐ์ค๋ PR์์.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์ํ ์ ๋ฐ์ดํธ; ๋ด esm-ify ๋ธ๋์น ์ ๋ํด ์ฐ PR์์ ์ธ๊ธํ๋ฏ์ด ์ด์ ์ด ํจํค์ง๊ฐ #724์์ ์๋ ๊ฐ ์ง์ํด ์จ ๋ค๋ฅธ ๋ชจ๋ ์์คํ ์ ๋ํด ์๋ํ ๋๋ก ์๋ํ๋์ง ํ์ธํ๋ ๋ช ๊ฐ์ง ํ ์คํธ๊ฐ ์์ต๋๋ค.
๋๊ตฐ๊ฐ ์ด์๋ฅผ ์ ๊ธฐํ๊ฑฐ๋ ๋ง์์ ๋ ๋ง์ ์กฐ์ ์ด ์๋ ๊ฒฝ์ฐ๋ฅผ ๋๋นํ์ฌ ๋ช ๊ฐ์ง ๊ฐ์ ์ฌํญ์ ํธ์ํ ๋๋ก ๋ฉฐ์น ๋์ ์์กฐํ๋๋ก ํ๊ฒ ์ต๋๋ค.
์ด๋ฌํ ํ ์คํธ๊ฐ ์๋ฃ๋๋ฉด ์ด ํ๋ก์ ํธ๋ฅผ ES ๋ชจ๋๋ก ์์ฑ๋ ์์ค ์ฝ๋๋ก ์ ํํ๊ณ ์ค๋
mustache.js
์ ์๋ ๊ฒ์ ์์ฑํ๋ ๋จ๊ณ๋ฅผ ๋น๋ํ๋ ๊ฒ์ด ํธ์ํด์ง๋๋ค. ๋ฌผ๋ก ์๋ฃ๋ ๊ฒ์ ๋๋ค. ๋ค๊ฐ์ค๋ PR์์.