Skip to content

Commit

Permalink
Merge pull request #50 from dongrentianyu/master
Browse files Browse the repository at this point in the history
docs: 翻译完机制部分
  • Loading branch information
dongrentianyu authored Jul 14, 2023
2 parents 3837d57 + 7919994 commit 8961455
Show file tree
Hide file tree
Showing 18 changed files with 270 additions and 23 deletions.
2 changes: 1 addition & 1 deletion tiddlers/$__palette.tid
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
created: 20230705063059977
creator: 马不前
modified: 20230705115107296
modified: 20230714143910444
modifier: 马不前
title: $:/palette

Expand Down
6 changes: 6 additions & 0 deletions tiddlers/Mechanisms.tid
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
created: 20230714143225584
creator: 马不前
modified: 20230714143257115
modifier: 马不前
tags: 原始开发者文档
title: Mechanisms
4 changes: 2 additions & 2 deletions tiddlers/OtherThings.tid
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
created: 20230705114704663
creator: 马不前
list: word 术语集 TW-Translation-Chinese
modified: 20230706080842584
list: note word 术语集 TW-Translation-Chinese Configuration Contributors
modified: 20230714145950767
modifier: 马不前
tags: TableOfContents
title: OtherThings
Expand Down
5 changes: 5 additions & 0 deletions tiddlers/Saving with Encryption.tid
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
created: 20230714151304147
creator: 马不前
modified: 20230714151304147
modifier: 马不前
title: Saving with Encryption
8 changes: 5 additions & 3 deletions tiddlers/TiddlyWiki_Dev.tid
Original file line number Diff line number Diff line change
@@ -1,18 +1,20 @@
created: 20230706072046313
creator: 马不前
list: 你好,各位 导论 [[TiddlyWiki - 快速概览]] 微内核架构 TiddlyWiki核心应用程序 结论
modified: 20230714122825347
modified: 20230714150851079
modifier: 马不前
tags: TableOfContents
title: TiddlyWiki/Dev
type: text/vnd.tiddlywiki

这是官方开发者文档
这里是官方开发者文档

* https://tiddlywiki.com/dev/

<div class="tc-table-of-contents">

<<toc-selective-expandable 'TiddlyWiki/Dev'>>

</div>
</div>

* 部分条目的翻译来自[[TiddlyWiki 舞|https://bramchen.github.io/tw5-docs/zh-Hans]],会在底部注明。
13 changes: 13 additions & 0 deletions tiddlers/TiddlyWiki的核心(初始内核).tid
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
created: 20230714125254533
creator: 马不前
modified: 20230714145321475
modifier: 马不前
original-title: The Heart of TiddlyWiki (Boot-Kernel)
tags: doc [[Unlabelled Entry]]
title: TiddlyWiki的核心(初始内核)

[[初始内核|初始化机制]]负责创建一个精简的 TiddlyWiki 环境。它可以在 Node.js 或 HTML5 浏览器中运行。初始内核只加载足够的功能来加载包含应用程序主要逻辑的模块。该初始内核包含一些辅助方法、模块机制以及创建和管理条目的函数。初始内核还创建了一个基本的 Wiki 存储,它在运行时保存了整个 Wiki 的所有信息。在创建存储后,初始内核负责解密加密的条目并提取所有的条目,例如嵌入在 HTML 文件的 DOM 结构中的核心模块条目。此外,初始内核还提供了从文件加载条目的功能,当您在 Node.js 上运行 TiddlyWiki 时可以使用。所有其他不属于初始内核的功能都是通过模块和插件动态添加的。初始内核能够加载核心插件并执行启动插件。核心包含了下图所示的启动模块。

{{index.svg}}

另可见[[微内核和数据模型]]
13 changes: 0 additions & 13 deletions tiddlers/TiddlyWiki的核心(启动内核).tid

This file was deleted.

10 changes: 10 additions & 0 deletions tiddlers/note.tid
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
created: 20230714145807704
creator: 马不前
modified: 20230714145926040
modifier: 马不前
tags: OtherThings
title: note

有些翻译内容值得讨论,但目前又没有太多精力在这上面,就先记录下来。回头再讨论。

如果note内容比较多,也可以单独在这边建立条目说明。内容不多就写在note字段里好了。
45 changes: 45 additions & 0 deletions tiddlers/初始化机制.tid
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
created: 20230714142959752
creator: 马不前
modified: 20230714144913826
modifier: 马不前
original-title: BootMechanism
tags: Mechanisms
title: 初始化机制

!介绍

TiddlyWiki5 的核心是一个相对较小的启动内核,它可以在 Node.js 环境下或在浏览器中运行,所有其他功能通过动态加载的模块添加。

内核仅引导了足够的TiddlyWiki环境,使其能够加载和执行模块条目。模块系统与CommonJS和`Node.js`兼容。

有许多不同类型的模块:[[解析器]]、[[反序列化]]、[[微件]]等等。它远远超出了你的预期。例如,单个条目字段也是模块:有一个模块知道如何处理`tags`字段,另一个模块知道如何处理`modified`和`created`字段的特殊行为。一些插件模块还有进一步的子插件:例如,wikitext 解析器接受作为单独的插件模块的解析规则。

!插件

在 TiddlyWiki5 中,插件是以一种捆绑形式分发和管理的条目集合;[[模块|模块系统]]是带有`module`类型的 JavaScript条目,用于标识何时以及如何执行它们。

条目[[$:/boot/boot.js]]是一个简化的 TiddlyWiki内核,仅足够加载核心插件模块并触发启动模块以加载其余的应用程序。

启动内核包括:

* 几个简短的共享实用函数
* 一些实现模块机制的方法
* `$tw.Tiddler` 类(以及字段定义插件)
* `$tw.Wiki` 类(以及条目反序列化方法)
* 浏览器加载来自 HTML DOM 的条目的代码
* 服务器加载来自文件系统的条目的代码

每个模块都是一个普通的 CommonJS 模块,使用 `require()` 函数来访问其他模块,并使用 `exports` 全局对象来返回 JavaScript 值。启动内核消除了 `Node.js` 和浏览器之间的差异,使得相同的插件模块可以在两个环境中执行。

在浏览器中,`core/boot.js` 被打包到一个模板 HTML 文件中,该文件按照以下顺序包含以下元素:

* 普通和系统条目,以 HTML `<DIV>` 元素的形式进行打包
* `core/bootprefix.js`,包含几行代码来设置插件环境
* 可选的 JavaScript 模块,以 HTML `<SCRIPT>` 块的形式进行打包
* `core/boot.js`,包含启动内核的代码

在服务器端,`core/boot.js`被直接执行。它使用 `Node.js`的本地文件 API 直接从文件系统中的 `core/modules` 目录加载插件。出于简洁起见(以及因为在插件加载完成之前系统本质上是阻塞的),代码加载是同步进行的。

启动过程设置了`$tw`全局变量,用于存储系统的所有状态数据。

在启动过程的最后,启动机制安排执行启动模块,以启动剩下的TiddlyWiki部分。
10 changes: 10 additions & 0 deletions tiddlers/初始化机制与启动机制.tid
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
created: 20230714145954779
creator: 马不前
modified: 20230714150304242
modifier: 马不前
tags: note
title: 初始化机制与启动机制

[[初始化机制]]与[[启动机制]],两个比较容易搞混了。

从文档上来看,应该是先初始化,再启动各种模块。初始化相当于搭建了整体的架构。就好比搭建房子,得先有一片土地可以在上面搭建。然后启动机制就可以在这片土地上搭建地基和其他基本模块。
23 changes: 23 additions & 0 deletions tiddlers/加密机制.tid
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
created: 20230714150400252
creator: 马不前
modified: 20230714151257996
modifier: 马不前
original-title: EncryptionMechanism
tags: Mechanisms
title: 加密机制

TiddlyWiki5 允许以 Stanford JavaScript 加密程序库加密 TiddlyWiki HTML 文件的全部内容。在浏览器中开启加密的 TiddlyWiki 于解密和显示内容之前提示输入密码。

有关说明如何使用 TiddlyWiki5 的加密功能,请参阅[[用加密保存|Saving with Encryption]]。

[[加密机制]]的实现具有以下元素:

* BootMechanism 里的 PasswordVault 保存当前的加密密码
* BootMechanism 能够从 TiddlyWiki 档读取加密的条目区块,提示用户输入密码并解密这些条目
* [[WidgetMessage: tm-set-password|https://bramchen.github.io/tw5-docs/zh-Hans/#WidgetMessage%3A%20tm-set-password]] 与 [[WidgetMessage: tm-clear-password|https://bramchen.github.io/tw5-docs/zh-Hans/#WidgetMessage%3A%20tm-clear-password]] 消息的处理进程处理更改密码的用户接口
* 主文件范本内的 EncryptWidget 使用目前的密码加密筛选的条目
* [[$:/isEncrypted]]条目包含 "yes" 或 "no" 根据是否有一个密码在密码存储库
** 此条目的可用性允许[[RevealWidget|https://bramchen.github.io/tw5-docs/zh-Hans/#RevealWidget]]用于依据加密是否生效有选择地显示用户接口元素
* `$:/snippets/encryptionstatus`片段显示当前的加密状态

[[加密机制|https://bramchen.github.io/tw5-docs/zh-Hans/#EncryptionMechanism]]
32 changes: 32 additions & 0 deletions tiddlers/启动机制.tid
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
created: 20230714144830592
creator: 马不前
modified: 20230714145704300
modifier: 马不前
original-title: StartupMechanism
tags: Mechanisms
title: 启动机制

启动机制在[[初始化机制]]结束时运行已安装的启动模块。

! 启动模块

具有 ''module-type'' 字段设置为 `startup` 的模块:

* 必须导出一个`startup`函数
** 对于同步的启动模块,启动函数被调用为`startup()`,异步模块则会在完成时调用传入的回调函数:`startup(callback)`
* 可以导出一个`name`属性,用于标识任务
* 可以导出一个包含依赖任务名称的`after`属性的数组,这些依赖任务必须在当前任务之前运行
* 可以导出一个包含后续任务名称的`before`属性的数组,这些任务必须在当前任务之后运行
* 可以导出一个包含所需平台名称的`platforms`属性的数组,以便执行启动模块。定义的平台有 ''node'' 和 ''browser''。如果未提供`platforms` 属性,则默认为 `["node","browser"]`。

! 启动进程

启动模块按照它们声明的依赖关系顺序执行。

对于共享相同依赖关系的任务,无法保证执行顺序。

! 启动模块

核心定义了以下启动模块:

{{Startup Modules.svg}}
17 changes: 17 additions & 0 deletions tiddlers/延迟加载机制.tid
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
created: 20230714151351487
creator: 马不前
modified: 20230714151621513
modifier: 马不前
original-title: LazyLoadingMechanism
tags: Mechanisms
title: 延迟加载机制

TiddlyWiki 当前只实现[[延迟加载|https://bramchen.github.io/tw5-docs/zh-Hans/#LazyLoading]]运行于浏览器与 TiddlyWeb 兼容的服务器的对话。

在 [[TiddlyWeb 的配置|https://bramchen.github.io/tw5-docs/zh-Hans/#TiddlyWiki%20in%20the%20Sky%20for%20TiddlyWeb]],浏览器首先请求每个条目的 "精简" 版本 (包含除了 `text` 字段之外的所有字段)。随后,试图以 `wiki.getTiddler()` 读取那些精简的条目,只返回精简的字段,但尝试使用 `wiki.getTiddlerText()` 来读取,将触发异步加载完整条目内容,从而触发刷新循环,更新显示以反映新加载的条目。遍历所有条目的小工具都是好的;只有当其触发 `wiki.getTiddlerText()` 的条目,才会被加载。

延迟加载也可以用于 TiddlyWiki 自己的服务器。核心提供了一个范本,使图像能够被延迟加载,而其他条目则以通常的方式打包到初始的 HTML 文件中。

内置在 TiddlyWiki5 中的基于浏览器的搜索,将只搜索已完全加载的条目内容。期望当在主从式配置中使用延迟加载时,真正需要处理搜索操作的是服务器,因为它只是可以 "查看" 所有条目的内容的服务器。因此,计划是将内置搜索与 TiddlyWeb 的搜索 API 集成在一起。最简单的方法是任何本地搜索都会触发异步服务器端搜索。搜索结果将被异步加载,这样它们将动态显示在本地搜索结果中。

[[延迟加载机制|https://bramchen.github.io/tw5-docs/zh-Hans/#LazyLoadingMechanism]]
4 changes: 2 additions & 2 deletions tiddlers/微内核和数据模型.tid
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
created: 20230714124036319
creator: 马不前
modified: 20230714131037847
modified: 20230714145138630
modifier: 马不前
original-title: Microkernel and Datamodel
tags: redo [[Unlabelled Entry]]
title: 微内核和数据模型

微内核负责创建一个精简的TiddlyWiki环境。它可以在Node.js或HTML5浏览器中运行。启动内核只加载足够的功能来加载包含应用程序主要逻辑的模块。该启动内核包含一些辅助方法、模块机制以及创建和管理条目的函数。启动内核还创建了一个基本的Wiki存储,它在运行时保存了整个Wiki的所有信息。在创建存储后,启动内核负责解密加密的条目,并提取所有条目,例如嵌入在HTML文件的DOM结构中的核心模块条目。此外,启动内核还提供了从文件加载条目的功能,当您在Node.js上运行TiddlyWiki时可以使用。
微内核负责创建一个精简的TiddlyWiki环境。它可以在Node.js或HTML5浏览器中运行。[[初始内核|初始化机制]]只加载足够的功能来加载包含应用程序主要逻辑的模块。该初始内核包含一些辅助方法、模块机制以及创建和管理条目的函数。初始内核还创建了一个基本的Wiki存储,它在运行时保存了整个Wiki的所有信息。在创建存储后,初始内核负责解密加密的条目,并提取所有条目,例如嵌入在HTML文件的DOM结构中的核心模块条目。此外,初始内核还提供了从文件加载条目的功能,当您在Node.js上运行TiddlyWiki时可以使用。

{{StartupTimeline.png}}
4 changes: 2 additions & 2 deletions tiddlers/术语集.tid
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
created: 20230705112747840
creator: 马不前
modified: 20230714125511664
modified: 20230714145335285
modifier: 马不前
tags: OtherThings
title: 术语集
Expand All @@ -16,4 +16,4 @@ type: text/vnd.tiddlywiki
<<glossary "[[widget]]" "[[微件]]">>
<<glossary "Microkernel" "[[微内核]]">>
<<glossary "Transclusion" "[[嵌入|嵌入与文本引用]]">>
<<glossary "Bootkernel" "[[启动内核|TiddlyWiki的核心(启动内核)]]">>
<<glossary "Bootkernel" "[[初始内核|初始化机制]]">>
40 changes: 40 additions & 0 deletions tiddlers/测试机制.tid
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
created: 20230714152128119
creator: 马不前
modified: 20230714152329745
modifier: 马不前
original-title: TestingMechanism
tags: Mechanisms
title: 测试机制

TiddlyWiki5 整合了 Jasmine JavaScript 测试框架(参见[[https://jasmine.github.io/]])。它允许在浏览器和 Node.js 环境下运行相同的测试。

! TiddlyWiki5 测试组件

TiddlyWiki5 测试机制包括两个主要元素:

* `tiddlywiki/jasmine` 插件,将 Jasmine 框架与一些桥接代码一起打包为插件
* `test` TiddlyWiki5 版本,包含核心的测试规范,并包含 Jasmine 插件

! 在 Node.js 中运行测试

要在 Node.js 环境下运行测试,只需加载 `test` wiki:

```
node ./tiddlywiki.js \
./editions/test \
```

! 在浏览器中运行测试

要生成包含浏览器测试的 wiki,请加载 `test` wiki 并将其保存为 HTML 文件:

```
node ./tiddlywiki.js \
./editions/test \
--verbose \
--rendertiddler $:/core/save/all test.html text/plain \
```

`test.html` 文件将放置在 wiki 文件夹中的 `output` 文件夹中。在浏览器中打开它以查看测试结果。在以下网址上有一个预构建的 `test.html` 版本:

[[https://tiddlywiki.com/test.html]]
7 changes: 7 additions & 0 deletions tiddlers/渲染机制.tid
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
created: 20230714151815159
creator: 马不前
modified: 20230714151851656
modifier: 马不前
original-title: RenderingMechanism
tags: Mechanisms
title: 渲染机制
50 changes: 50 additions & 0 deletions tiddlers/解析机制.tid
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
created: 20230714151657194
creator: 马不前
modified: 20230714152004146
modifier: 马不前
original-title: ParsingMechanism
tags: Mechanisms
title: 解析机制

! 介绍

解析机制根据一套句法规则分析条目的文本,生成一棵代表文本的结构的树。[[渲染机制]]用于解析树变成小工具节点的渲染树。

TiddlyWiki5包括ParserModules的几种条目类型:

* WikiText
* Raw HTML
* 纯文本
* 图像 (bitmap、SVG 和 PDF)

[[WikiText|https://bramchen.github.io/tw5-docs/zh-Hans/#WikiText]] 分析器是最复杂的,包括分离的个别 WikiRuleModules 封装每个解析规则。

! 句法解析树

解析条目的输出是含有对应于原始文本解析节点树的对象。例如:

```
> JSON.stringify($tw.wiki.parseText("text/vnd.tiddlywiki","Some //italics// and a {{Transclusion}}.").tree)

[
{type: "element", tag: "p", children: [
{type: "text", text: "Some "},
{type: "element", tag: "em", children: [
{type: "text", text: "italics"}
]},
{type: "text", text: " and a "},
{type: "tiddler", attributes:{
tiddler: {type: "string", value: "Transclusion"}
}, children:[
{type: "transclude", attributes:{
tiddler: {type: "string", value: "Transclusion"}
}}
]},
{type: "text", text: "."}
]}
]
```

解析树节点是简单的 JavaScript 对象,而没有一个原型。

[[解析机制|https://bramchen.github.io/tw5-docs/zh-Hans/#ParsingMechanism]]

0 comments on commit 8961455

Please sign in to comment.