diff --git a/src/.vitepress/config.js b/src/.vitepress/config.js index 707215a2..33b41c90 100644 --- a/src/.vitepress/config.js +++ b/src/.vitepress/config.js @@ -199,7 +199,7 @@ export default defineConfig({ { text: "介绍", link: "/" }, { text: "表达式", link: "/expressions" }, { text: "代码片段", link: "/partials" }, - { text: "代码片段", link: "/block-helpers" }, + { text: "块助手代码", link: "/block-helpers" }, { text: "内置助手代码", link: "/builtin-helpers" }, { text: "钩子", link: "/hooks" }, ], diff --git a/src/zh/guide/block-helpers.md b/src/zh/guide/block-helpers.md index 8ce817bf..4cd889e4 100644 --- a/src/zh/guide/block-helpers.md +++ b/src/zh/guide/block-helpers.md @@ -1,10 +1,10 @@ -# 代码片段 +# 块助手代码 -块助手代码使得调用通过传递上下文参数的代码块的迭代器或自定义函数成为可能。 +块助手代码可以让你自定义迭代器以及其他功能,这些功能可以通过传入新的上下文来执行其内部的块。 -## 基本代码块 +## 基本助手代码 -出于演示目的,让我们先定义一个和没有块助手代码一样的块助手代码。 +为了演示,我们来定义一个助手代码,其作用是直接执行其内部块,就像该助手不存在一样。 ```handlebars
@@ -24,18 +24,19 @@ Handlebars.registerHelper("noop", function (options) { }); ``` -Handlebars 将 `this` 指针作为上下文传递,因此你可以使用 `this` 调用该代码块以在上下文内使用代码块。 +Handlebars 调用 helper 函数时,上下文对象会绑定为 `this` 指针。因此你可以为 `options.fn` 传入 `this` +以在当前上下文中执行 `noop` 内部块。 -通过这种方式定义的任何助手代码将优先于上下文中定义的字段。若要访问助手代码中的字段,可以使用路径引用。在上面的示例中,上下文对象上名为 +通过这种方式定义的任何助手代码都将优先于上下文中定义的字段。若要访问被助手代码名称“遮蔽”的字段,可以使用路径引用。在上面的示例中,上下文对象中名为 `noop` 的字段可以这样引用: ```handlebars {{./noop}} ``` -## 基本代码块的变化 +## 基本助手代码的变体 -为了更好地说明语法,让我们定义另一个块助手代码,为包装的文本添加一些标记。 +为了更好地说明语法,让我们定义另一个助手代码,为包裹的文本添加一些标记。 ```handlebars
@@ -46,7 +47,7 @@ Handlebars 将 `this` 指针作为上下文传递,因此你可以使用 `this`
``` -粗体助手代码将添加标记以使其文本变为粗体。和以前一样,该函数将上下文作为输入并返回一个字符串。 +`bold`助手代码将添加标记,使内部文本变为粗体。和之前一样,该函数接收上下文作为输入并返回一个字符串。 ```js Handlebars.registerHelper("bold", function (options) { @@ -56,7 +57,8 @@ Handlebars.registerHelper("bold", function (options) { ## `with` 助手代码 -`with` 助手代码演示了如何将参数传递给你的助手代码。当将参数传递给助手代码时,模板传入的任何上下文中都会接收该参数。 +`with` 助手代码演示了如何将参数传递给你的助手。当 `with` +助手被调用并传入参数时,它会使用模板传入的参数作为上下文来执行。 ```handlebars
@@ -68,7 +70,8 @@ Handlebars.registerHelper("bold", function (options) {
``` -如果你的 JSON 对象中包含深层嵌套属性,你就会发现这样的助手代码很有用。想要避免重复父名称。上面的模板可能要与这样的 JSON 搭配使用: +如果你的 JSON 对象中包含深层嵌套属性,并且你想要避免重复父名称,你就会发现 `with` +助手很有用。上面的模板可以用于以下 JSON 数据: ```js { @@ -119,7 +122,7 @@ Handlebars.registerHelper("with", function (context, options) {
``` -这种情况下,我们要为 comments 数组中的每个元素调用一次 `each` 的代码块。 +这种情况下,我们要为 comments 数组中的每个元素调用一次 `each` 内部的代码块。 ```js Handlebars.registerHelper("each", function (context, options) { @@ -133,7 +136,7 @@ Handlebars.registerHelper("each", function (context, options) { }); ``` -这种情况下,我们遍历传递的参数中的项目,对每个项目调用一次该代码块。遍历完毕之后,我们建立一个 String 结果,然后返回它。 +这种情况下,我们遍历传递的参数中的项目,对每个项目调用一次该代码块。在遍历过程中,我们建立一个 String 结果,然后将其返回。 此模式可用于实现更高级的迭代器。例如,让我们创建一个迭代器 `