generated from tiddly-gittly/TW5-T-ONLINE
-
Notifications
You must be signed in to change notification settings - Fork 3
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #50 from dongrentianyu/master
docs: 翻译完机制部分
- Loading branch information
Showing
18 changed files
with
270 additions
and
23 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
created: 20230714143225584 | ||
creator: 马不前 | ||
modified: 20230714143257115 | ||
modifier: 马不前 | ||
tags: 原始开发者文档 | ||
title: Mechanisms |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
created: 20230714151304147 | ||
creator: 马不前 | ||
modified: 20230714151304147 | ||
modifier: 马不前 | ||
title: Saving with Encryption |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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]],会在底部注明。 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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}} | ||
|
||
另可见[[微内核和数据模型]] |
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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字段里好了。 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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部分。 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
created: 20230714145954779 | ||
creator: 马不前 | ||
modified: 20230714150304242 | ||
modifier: 马不前 | ||
tags: note | ||
title: 初始化机制与启动机制 | ||
|
||
[[初始化机制]]与[[启动机制]],两个比较容易搞混了。 | ||
|
||
从文档上来看,应该是先初始化,再启动各种模块。初始化相当于搭建了整体的架构。就好比搭建房子,得先有一片土地可以在上面搭建。然后启动机制就可以在这片土地上搭建地基和其他基本模块。 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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]] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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}} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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]] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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}} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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]] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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: 渲染机制 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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]] |