{"id":16974740,"url":"https://github.com/3f/jt","last_synced_at":"2026-05-02T23:31:22.334Z","repository":{"id":57303851,"uuid":"186302790","full_name":"3F/Jt","owner":"3F","description":"Extremely Small, Fast, and damn Customizable ⚙ template engine on Native low-level implementation. / Mr. Jt / [ TypeScript \u0026 JavaScript ]","archived":false,"fork":false,"pushed_at":"2019-05-28T20:45:26.000Z","size":56,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-02-26T20:39:47.864Z","etag":null,"topics":["customizable","customizable-templates","javascript","jevel","jt","mr-jt","mrjt","native-template","native-template-engine","nodejs","template","template-engine","templater","typescript","web"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/3F.png","metadata":{"files":{"readme":"Readme.md","changelog":"changelog.txt","contributing":null,"funding":".github/FUNDING.yml","license":"License.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null},"funding":{"github":"3F","patreon":"GitHub3F","ko_fi":"github3f","custom":"https://3F.github.com/Donation/"}},"created_at":"2019-05-12T20:50:27.000Z","updated_at":"2020-05-07T22:14:30.000Z","dependencies_parsed_at":"2022-08-24T17:10:35.237Z","dependency_job_id":null,"html_url":"https://github.com/3F/Jt","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/3F%2FJt","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/3F%2FJt/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/3F%2FJt/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/3F%2FJt/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/3F","download_url":"https://codeload.github.com/3F/Jt/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244868035,"owners_count":20523581,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["customizable","customizable-templates","javascript","jevel","jt","mr-jt","mrjt","native-template","native-template-engine","nodejs","template","template-engine","templater","typescript","web"],"created_at":"2024-10-14T01:07:52.512Z","updated_at":"2025-10-20T02:43:06.777Z","avatar_url":"https://github.com/3F.png","language":"JavaScript","funding_links":["https://github.com/sponsors/3F","https://patreon.com/GitHub3F","https://ko-fi.com/github3f","https://3F.github.com/Donation/"],"categories":[],"sub_categories":[],"readme":"\n# [![Mr. Jt](https://raw.githubusercontent.com/3F/Jt/master/Jt.logo.png)](https://github.com/3F/Jt)\n\n🎩\n\nMeet beardless customizable template engine, Mr. Jt for Node.js and Web browsers.\n\n[![Build status](https://ci.appveyor.com/api/projects/status/s5of5w4qh2k7qels/branch/master?svg=true)](https://ci.appveyor.com/project/3Fs/jt/branch/master)\n[![Coverage Status](https://coveralls.io/repos/github/3F/Jt/badge.svg)](https://coveralls.io/github/3F/Jt)\n[![Tests](https://img.shields.io/appveyor/tests/3Fs/jt/master.svg)](https://ci.appveyor.com/project/3Fs/jt/build/tests)\n[![release-src](https://img.shields.io/github/release/3F/Jt.svg)](https://github.com/3F/Jt/releases/latest)\n[![npm](https://img.shields.io/npm/v/mrjt.svg)](https://www.npmjs.com/package/mrjt)\n[![License](https://img.shields.io/badge/License-MIT-74A5C2.svg)](https://github.com/3F/Jt/blob/master/License.txt)\n[![CDN](https://img.shields.io/badge/CDN-unpkg.com/mrjt-97C40F.svg?style=flat-square)](https://unpkg.com/mrjt/Core/Jt.es6.js)\n\n[![Build history](https://buildstats.info/appveyor/chart/3Fs/jt?buildCount=20\u0026includeBuildsFromPullRequest=true\u0026showStats=true)](https://ci.appveyor.com/project/3Fs/jt/history)\n\n```javascript\njt.use('', ' $Hello %p% {{world}} ')\n    .as({ p: 'amazing'})\n    .reset().as({ p: 'crazy'})\n    // ... +$Hello, +{{world}}\n```\n\n```javascript\njt.use('s1', 'Today is a {( a \u003c b )} good {/} bad {;} day!')\n    .sa(jtif, { a: 5, b: 7})\n    .value()\n```\n\n## Why Jt ?\n\nExtremely small, fast, and damn customizable. Okay, Let's see what's going on:\n\n### Speed 🚀\n\nOnly **native** lower-level implementation. Even for conditional statements, like:\n\n```\n{( d \u003e 5 )} yes {/} no {;}\n```\n\nWhich do **not** uses `regex`, or `eval()`, or `new Function()`, ... Feel the speed.\n\n### Size 📦\n\nExtra small size. Just about o-n-e kilobyte of fully workable core engine:\n* ~ **1.02 KB** for Core of ES6 gzipped; \n* ~ 1.09 KB for Core of **ES3** gzipped;\n\n*Same things for custom handlers.*\n\n### Configurable 🔧\n\nYou can configure, add, or change anything!\n\nJt was designed to be loyal to your preferences *on the fly*. Maybe for this:\n\n```javascript\njt.use('s1', 'Good {{p}}, $p -p- !')\n    .as({ p: 'Jt' })\n    .as({ p: 'Mr.' }, {op: '$'})\n    .as({ p: 'morning' }, '{{}}')\n    .val(),\n```\n\nOr for this:\n\n```javascript\n\n// {( true )} yes {/} no {;} -\u003e {if( true )} yes {else} no {endif}\n    \njt.use('legacy', '{if( true )} yes {else} no {endif}!')\n.sa(new JtIfHandler([ '{}' ],\n{\n    if: 'if',\n    else: 'else',\n    fi: 'endif',\n}))\n.val() // yes !\n```\n\nOr for something more ...\n\n### Extensible via Pluginable handlers 🗃\n\nSure! Add or change any features for the layers, still *on the fly*.\n\nDo you need something special? No problem, just implement [IJtHandler](https://github.com/3F/Jt/blob/master/src/Handlers/IJtHandler.ts) to cover your awesome things. It easy.\n\n### Comfy but strong 🌇\n\nChangeable layers through common chain will make you happy.\n\nYou can control everything just in a few steps:\n\n```javascript\njt.use('hello', 'Hello you from $tip, dear $name.')\n    .as({ tip: 'Jt', name: 'John' }); // Hello you from Jt, dear John.\n\n// ...\n\njt.use('hello')\n    .as(-1, true)\n    .as({ name: 'Denis' }) // Hello you from Jt, dear Denis.\n    .reset()\n    .as({ tip: 'Moscow' })\n    .eject((v) =\u003e t.is(v, 'Hello you from Moscow, dear $name.'))\n    ...\n    .as({ name: '{( r \u003e 100 )}friend{/}visitor{;}' })\n    .sa(jtif, { r: actual }) // // Hello you from Moscow, dear friend.\n    ...\n    .val();\n🐧\n```\n\n### Stability 🗠\n\nClean **[API](#api)** and its **tests** will take care of your peace of mind. [![Coverage Status](https://coveralls.io/repos/github/3F/Jt/badge.svg)](https://coveralls.io/github/3F/Jt)\n[![Tests](https://img.shields.io/appveyor/tests/3Fs/jt/master.svg)](https://ci.appveyor.com/project/3Fs/jt/build/tests)\n\n### No dependencies to something 👐\n\nDeveloped from scratch without dependencies to something from our end-product.\n\n### Open and Free 🍰\n\nOpen Source project; MIT License, Yes! Enjoy!\n\n## License\n\nLicensed under the [MIT License (MIT)](https://github.com/3F/Jt/blob/master/License.txt)\n\n```\nCopyright (c) 2019  Denis Kuzmin \u003c entry.reg@gmail.com \u003e GitHub/3F\n```\n\n[ [ ☕ Donate ](https://3F.github.com/Donation/) ]\n\n## API\n\n* Core: [IJt](https://github.com/3F/Jt/blob/master/src/Core/IJt.ts) ➟ [IJtAct](https://github.com/3F/Jt/blob/master/src/Core/IJtAct.ts)\n* Configuration: [IJtConfig](https://github.com/3F/Jt/blob/master/src/Core/IJtConfig.ts)\n* Handlers: [IJtHandler](https://github.com/3F/Jt/blob/master/src/Handlers/IJtHandler.ts)\n\n## Download\n\nSeparate ES3+/ES6+ support for your environment. Choose more suitable package for your case.\n\n* NPM: [![npm](https://img.shields.io/npm/v/mrjt.svg)](https://www.npmjs.com/package/mrjt)\n* CDN: [![CDN](https://img.shields.io/badge/CDN-unpkg.com/mrjt-97C40F.svg?style=flat-square)](https://unpkg.com/mrjt/Core/Jt.es6.js) \n    * ... `https://unpkg.com/mrjt[@version]/[path_to_specific_file]`\n\n* GHR Stable: [/releases](https://github.com/3F/Jt/releases) [ [latest](https://github.com/3F/Jt/releases/latest) ]\n* CI builds: [`/artifacts` page](https://ci.appveyor.com/project/3Fs/jt/history) or find as `Pre-release` with mark `🎲 Nightly build` on [GitHub Releases](https://github.com/3F/Jt/releases) page.\n\n\n## Build \u0026 Tests\n\n```\nnpm install\ngulp build --conf debug\n```\n\nAvailable tests can be raised by command:\n\n```\nnpm test\n```\n\nWe're waiting for your awesome contributions!","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F3f%2Fjt","html_url":"https://awesome.ecosyste.ms/projects/github.com%2F3f%2Fjt","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F3f%2Fjt/lists"}