@ahmadnassri/template-literals-engine

中文文档
2.0.4发布于 2023/09/05MITCommonJS近 30 天下载 3542

给它喂JSON Spec, 它会吐出一个轻量级的HTTP客户端!

中文使用文档
文档目录5 节
  1. 为什么
  2. 什麽
  3. 怎么样
  4. 使用量
  5. API 密码

JS 模板文学引擎

使用 JS Template 字节直接到点模板引擎

license release semantic

为什么

模板字元 (又称"Template string") 是一种熟悉而简单的方法来运行嵌入式表达式和字符串插入,这是模板引擎的主要功能.

这个库用传统技术包装模板文字 (排出,分出,助出等 通过结构化文件格式为使用提供便利(.jstl(中文(简体) )

什麽

特征 :

  • 布局:布局的本地支持
  • 支持:方便地包括文件和通过数据
  • 快: 模板默认被缓存
  • 可扩展:可扩展自定义助手

怎么样

使用量

template.jstl
hello ${data.name}
index.js
const Engine = require('@ahmadnassri/template-literals-engine')

const engine = new Engine(options)

engine.render('template', { name: 'ahmad' })

字符串内插

由于模板被解析为标准 JavaScript 模板字元 需要同样的功能

可访问变量 data 上下文

示例
index.js
const Engine = require('@ahmadnassri/template-literals-engine')

const engine = new Engine()

const result = engine.render('template', { name: 'ahmad' })

console.log(result)
template.jstl
Hello ${data.name}
结果
$ node index.js
Hello ahmad

辅助功能

帮助者基本上是可以在模板内调用的功能.

所有助手功能都可通过 fn 上下文

示例
index.js
const Engine = require('@ahmadnassri/template-literals-engine')

const engine = new Engine({
  helpers: { 
    capitalize : str => string[0].toUpperCase() + string.slice(1)
  }
})

const result = engine.render('template', { name: 'ahmad' })

console.log(result)
template.jstl
Hello ${fn.capitalize(data.name)}
结果
$ node index.js
Hello Ahmad

内建帮助者

fn.render(templateName, [dataObject])

行为就像 Engine.render 通过包含其他模板文件: templateName 内入

fn.apply(templateName, [dataArray])

列出 dataArray 并将每个项目适用于新提出的 templateName

示例
index.js
const Engine = require('@ahmadnassri/template-literals-engine')

const engine = new Engine()

const actors = [
  { name: 'William Hartnell', year: '1963' },
  { name: 'Patrick Troughton', year: '1966' },
  { name: 'Jon Pertwee', year: '1970' },
  { name: 'Tom Baker', year: '1974' },
  { name: 'Peter Davison', year: '1981' },
  { name: 'Colin Baker', year: '1984' },
  { name: 'Sylvester McCoy', year: '1987' },
  { name: 'Paul McGann', year: '1996' },
  { name: 'Christopher Eccleston', year: '2005' },
  { name: 'David Tennant', year: '2005' },
  { name: 'Matt Smith', year: '2010' },
  { name: 'Peter Capaldi', year: '2013' },
  { name: 'Jodie Whittaker', year: '2017' }
]

const result = engine.render('page', { actors })

console.log(result)
page.jstl
${ fn.include('header') }

<h1>List of actors who have played the Doctor</h1>

<ul>
  ${ fn.apply('doctor', data.actors) }
</ul>

${ fn.include('footer') }
doctor.jstl
<li>${data.name} - first appeared in ${data.year}</li>
结果
$ node index.js
<body>

<h1>List of actors who have played the Doctor</h1>

<ul>
<li>William Hartnell - first appeared in 1963</li>
<li>Patrick Troughton - first appeared in 1966</li>
<li>Jon Pertwee - first appeared in 1970</li>
<li>Tom Baker - first appeared in 1974</li>
<li>Peter Davison - first appeared in 1981</li>
<li>Colin Baker - first appeared in 1984</li>
<li>Sylvester McCoy - first appeared in 1987</li>
<li>Paul McGann - first appeared in 1996</li>
<li>Christopher Eccleston - first appeared in 2005</li>
<li>David Tennant - first appeared in 2005</li>
<li>Matt Smith - first appeared in 2010</li>
<li>Peter Capaldi - first appeared in 2013</li>
<li>Jodie Whittaker - first appeared in 2017</li>
</ul>

</body>

前题

每个模板文件都可以选择包含一个前题块,它被解析并包含在 data 上下文

示例
index.js
const Engine = require('@ahmadnassri/template-literals-engine')

const engine = new Engine()

const result = engine.render('template')

console.log(result)
template.jstl
---
name: ahmad
---
Hello ${data.name}
结果
$ node index.js
Hello ahmad

布局

定义 a layout 属性在模板的Front Matter块中,将首先渲染出该布局,并将当前模板作为内容.

布局可以无限地升级, 唯一的限制是你的系统资源!

示例
index.js
const Engine = require('@ahmadnassri/template-literals-engine')

const engine = new Engine()

const result = engine.render('template', { name: 'ahmad' })

console.log(result)
template.jstl
---
layout: layouts/welcome
---

<h2>${data.name}</h2>
layouts/welcome.jstl
---
layout: layouts/base
---

<h1>Welcome!</h1>

${data.content}
layouts/base.jstl
<html>
  <body>
    ${data.content}
  </body>
</html>
结果
$ node index.js
<html>
  <body>
    <h1>Welcome</h1>
    <h2>ahmad</h2>
  </body>
</html>

API 密码

构造器 new Engine([optionsObject])

返回模板引擎类的新实例

名称类型所需经费默认说明
rootString✖process.cwd()查找模板文件的路径
extensionString✖jstl模板文件扩展名
helpers Object✖{}key => function 要传递到模板的助手地图
matter Object✖{}选项 传递给 gray-matter
示例:
const Engine = require('@ahmadnassri/template-literals-engine')

const engine = new Engine({
  root: 'templates',
  extension: 'html'
  helpers: {
    capitalize : str => string[0].toUpperCase() + string.slice(1),
    ...
  }
})

方法 : render(templateName, [dataObject])

解析文件的内容 : ${templateName}.jstl 和通过 dataObject 返回已处理的输出字符串

示例:
const Engine = require('@ahmadnassri/template-literals-engine')

const engine = new Engine({ root: 'templates' })

engine.render('a-template') // => ./templates/a-template.jstl
engine.render('nested/template', { foo: 'bar' }) // => ./templates/nested/template.jstl

作者 : 艾哈迈德·纳斯里 二. 支助 微博: @ AhmadNassri (英语)

版本与发布记录

@ahmadnassri/template-literals-engine 共发布 15 个版本,首次发布于 2020/10/25;过去 12 个月发布了 0 个版本。

版本发布日期距今
2.0.4latest2023/09/053 年前
2.0.12023/01/023 年前
2.0.02022/07/294 年前
1.0.112021/08/135 年前
1.0.102021/06/125 年前
1.0.92021/05/125 年前

关于 @ahmadnassri/template-literals-engine 的常见问题

@ahmadnassri/template-literals-engine 是什么?

给它喂JSON Spec, 它会吐出一个轻量级的HTTP客户端!

如何安装 @ahmadnassri/template-literals-engine?

在项目目录运行 npm install @ahmadnassri/template-literals-engine,或使用 pnpm add / yarn add / bun add。

@ahmadnassri/template-literals-engine 支持 TypeScript 吗?

该包的 package.json 没有声明类型入口。需要类型提示时,可以在 npm 上查找社区维护的 @types/ahmadnassri__template-literals-engine 是否存在。

@ahmadnassri/template-literals-engine 支持 ESM 还是 CommonJS?

以 CommonJS 形式发布,可以直接 require();在 ES Module 项目中也可以用 import 引入(Node.js 会把 module.exports 作为默认导出)。

@ahmadnassri/template-literals-engine 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=14。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@ahmadnassri/template-literals-engine 可以商用吗?

@ahmadnassri/template-literals-engine 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@ahmadnassri/template-literals-engine 的下载量有多少?

根据 npm 官方下载统计,@ahmadnassri/template-literals-engine 在 2026/10/05 – 2026/11/03 这 30 天内被下载 3,542 次,日均约 118 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@ahmadnassri/template-literals-engine 还在维护吗?

最新版本 2.0.4 发布于 2023/09/05(3 年前);至今共发布 15 个版本,其中过去 12 个月发布了 0 个;首次发布于 2020/10/25。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。