{"id":14989648,"url":"https://github.com/ushelp/easytemplatejs","last_synced_at":"2025-08-30T05:07:47.519Z","repository":{"id":57218818,"uuid":"79080455","full_name":"ushelp/EasyTemplateJS","owner":"ushelp","description":"小巧，纯粹，高性能的 JavaScript 模板引擎，支持浏览器, Node.js,  Express, koa。Small, pure, high-performance JavaScript template engine, support Browser, Node.js, Express, Koa.","archived":false,"fork":false,"pushed_at":"2019-08-13T06:56:30.000Z","size":438,"stargazers_count":17,"open_issues_count":0,"forks_count":4,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-08-21T12:27:59.010Z","etag":null,"topics":["javascript","javascript-node","javascript-template-engine","javascript-templates","nodejs","nodejs-template","template-engine"],"latest_commit_sha":null,"homepage":"http://www.easyproject.cn","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/ushelp.png","metadata":{"files":{"readme":"readme.md","changelog":null,"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":null,"patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"custom":["http://www.easyproject.cn/donation"]}},"created_at":"2017-01-16T03:43:50.000Z","updated_at":"2024-05-14T13:32:21.000Z","dependencies_parsed_at":"2022-08-28T23:22:28.936Z","dependency_job_id":null,"html_url":"https://github.com/ushelp/EasyTemplateJS","commit_stats":null,"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/ushelp/EasyTemplateJS","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ushelp%2FEasyTemplateJS","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ushelp%2FEasyTemplateJS/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ushelp%2FEasyTemplateJS/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ushelp%2FEasyTemplateJS/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ushelp","download_url":"https://codeload.github.com/ushelp/EasyTemplateJS/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ushelp%2FEasyTemplateJS/sbom","scorecard":{"id":912580,"data":{"date":"2025-08-11","repo":{"name":"github.com/ushelp/EasyTemplateJS","commit":"c8717cec90740d2743c42cc7ae3fbd6fd287eda6"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3,"checks":[{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"SAST","score":0,"reason":"no SAST tool detected","details":["Warn: no pull requests merged into dev branch"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Code-Review","score":0,"reason":"Found 0/19 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE.txt:0","Info: FSF or OSI recognized license: MIT License: LICENSE.txt:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}}]},"last_synced_at":"2025-08-24T19:47:57.852Z","repository_id":57218818,"created_at":"2025-08-24T19:47:57.852Z","updated_at":"2025-08-24T19:47:57.852Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":272805572,"owners_count":24995916,"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","status":"online","status_checked_at":"2025-08-30T02:00:09.474Z","response_time":77,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["javascript","javascript-node","javascript-template-engine","javascript-templates","nodejs","nodejs-template","template-engine"],"created_at":"2024-09-24T14:18:42.369Z","updated_at":"2025-08-30T05:07:47.484Z","avatar_url":"https://github.com/ushelp.png","language":"JavaScript","funding_links":["http://www.easyproject.cn/donation"],"categories":[],"sub_categories":[],"readme":"# EasyTemplateJS\n\n**EasyTemplateJS（EasyTemplate JavaScript）是一款超高性能，小巧纯粹，功能全面的 JavaScript 模板引擎。支持浏览器环境， Node.js 环境，Express 和 Koa 框架。**\n\n**EasyTemplateJS(EasyTemplate JavaScript) is an ultra-high performance, compact, full-featured JavaScript template engine. Support for browser environment, Node.js environment, Express framework and Koa framework.**\n\n\n## Feature/特点\n\n- **中文**\n\n\t- 超高性能，预先静态编译，小巧，纯粹\n\t\n\t- 灵活自定义\n\t\n\t- 支持转义输出表达式\n\t\n\t- 支持 out 输出\n\t\n\t- 支持内嵌 JavaScript 脚本(`\u003cetj-script\u003e...\u003c/etj-script\u003e`)和 CSS 样式脚本(`\u003cetj-script\u003e...\u003c/etj-script\u003e`)\n\t\n\t- 模块化支持：`CommonJS`, `AMD`, `CMD`, `Node.js`\n\t\n\t- Node.js 环境支持\n\t\n\t- `Express`, `koa` 框架支持\n\t\n\t- npm, Bower 支持\n\n\n- **English**\n\n\t- Ultra-high performance, pre-static compilation, small, pure\n\t\n\t- Flexible customization\n\t\n\t- Escape output expressions are supported\n\t\n\t- Support out output\n\t\n\t- Support embedded JavaScript (`\u003cetj-script\u003e...\u003c/etj-script\u003e`) and CSS(`\u003cetj-script\u003e...\u003c/etj-script\u003e`)\n\t\n\t- Module support:`CommonJS`, `AMD`, `CMD`, `Node.js`\n\n\t- Node.js enviroment support\n\t\n\t- `Express`, `koa` framework support\n\t\n\t- npm, Bower support\n\n## Performance test comparison/性能测试对比\n\n从渲染性能上来说， **EasyTemplateJS** 和 artTemplate 都是使用预先静态编译原理，可以说已经接近的性能极限，是当前性能最高的模板引擎。一些较差的引擎不仅可能影响客户体验，还会会引起浏览器崩溃或异常终止，百度的引擎则性能较差，对浏览器渲染执行影响巨大。\n\nFrom the rendering performance, **EasyTemplate** and artTemplate are using pre-static compilation principle, can be said to have close to the performance limit, is the highest performance of the template engine. Some poor engine may not only affect the customer experience, but also cause the browser to crash or abnormal termination, Baidu engine performance is poor, the implementation of the browser rendering a huge impact. \n\n![Performance test comparison](doc/imgs/performance.png)\n\n\n## Installation/安装\n\n- Download install/下载安装\n\t\n\t```HTML\n\t\u003cscript type=\"text/javascript\" src=\"easy.templatejs.min.js\"\u003e\u003c/script\u003e\n\t```\n\n- Bower install/Bower 安装\n\n\t```BASH\n\tbower install easytemplatejs --save\n\t```\n\t\n\t```HTML\n\t\u003cscript src=\"bower_components/easytemplate/dist/easy.templatejs.min.js\" type=\"text/javascript\" charset=\"utf-8\"\u003e\u003c/script\u003e\n\t```\n\t\n- Npm install/Npm 安装\n\n\t```BASH\n\tnpm install easytemplatejs\n\t```\n\t\n\t```JS\n\tvar Et = require('easytemplatejs');\n\t```\n\n\n## Use document/使用文档\n\n### 中文\n\n[中文详细使用文档](doc/readme_zh_CN.md)\n\n[Express 使用文档](https://github.com/ushelp/EasyTemplateJS-express \"EasyTemplateJS-express\")\n\n[Koa 使用文档](https://github.com/ushelp/EasyTemplateJS-koa \"EasyTemplateJS-koa\")\n\n[官方主页](http://www.easyproject.cn/easytemplate/zh-cn/index.jsp '官方主页')\n\n[留言评论](http://www.easyproject.cn/easytemplate/zh-cn/index.jsp#donation '留言评论')\n\n如果您有更好意见，建议或想法，请联系我。\n\n### English\n\n[English detailed documentation](doc/readme_en.md)\n\n[Express documentation](https://github.com/ushelp/EasyTemplateJS-express \"EasyTemplateJS-express\")\n\n[Koa documentation](https://github.com/ushelp/EasyTemplateJS-koa \"EasyTemplateJS-koa\")\n\n[The official home page](http://www.easyproject.cn/easytemplate/en/index.jsp 'The official home page')\n\n[Comments](http://www.easyproject.cn/easytemplate/en/index.jsp#donation 'Comments')\n\nIf you have more comments, suggestions or ideas, please contact me.\n\n## End\n\nEmail：\u003cinthinkcolor@gmail.com\u003e\n\n[http://www.easyproject.cn](http://www.easyproject.cn \"EasyProject Home\")\n\n\n**Donation/捐助:**\n\n\u003ca href=\"http://www.easyproject.cn/donation\"\u003e\n\u003cimg alt=\"\n支付宝/微信/QQ/云闪付/PayPal 扫码支付\" src=\"http://www.easyproject.cn/thanks/donation.png\"  title=\"支付宝/微信/QQ/云闪付/PayPal 扫码支付\"  height=\"320\" width=\"320\"\u003e\u003c/img\u003e\u003c/a\u003e\n\u003cdiv\u003e支付宝/微信/QQ/云闪付/PayPal\u003c/div\u003e\n\n\u003cbr/\u003e\n\n我们相信，每个人的点滴贡献，都将是推动产生更多、更好免费开源产品的一大步。\n\n**感谢慷慨捐助，以支持服务器运行和鼓励更多社区成员。**\n\nWe believe that the contribution of each bit by bit, will be driven to produce more and better free and open source products a big step.\n\n**Thank you donation to support the server running and encourage more community members.**\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fushelp%2Feasytemplatejs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fushelp%2Feasytemplatejs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fushelp%2Feasytemplatejs/lists"}