diff --git "a/tiddlers/Wiki\347\274\226\347\250\213\347\232\204\345\256\232\344\271\211.tid" "b/tiddlers/Wiki\347\274\226\347\250\213\347\232\204\345\256\232\344\271\211.tid" index 3c8de62..8999561 100644 --- "a/tiddlers/Wiki\347\274\226\347\250\213\347\232\204\345\256\232\344\271\211.tid" +++ "b/tiddlers/Wiki\347\274\226\347\250\213\347\232\204\345\256\232\344\271\211.tid" @@ -1,7 +1,7 @@ class: autonumhead created: 20230809234409764 creator: 星蓝 -modified: 20231001134023220 +modified: 20250105142058724 modifier: 星蓝 tags: 插件开发 title: Wiki编程的定义 @@ -20,7 +20,9 @@ title: Wiki编程的定义 什么是Wiki编程?(解释) -得益于三种两大类(编译和笔记)的维基文本解析器模式,以及部分Wiki解析语法,使得条目不仅可以用于写作还可以用于Wiki编程。Wiki编程是在条目中进行定义、调用不同形式封装或定义的方法和变量,为了完成某种任务,将解决问题的步骤写成指令,使TiddlyWiki根据这些指令一步步执行,最后完成任务。 +得益于维基文本解析器的三种模式——编译指示模式、区块模式和内联模式,这些模式通过对条目"text"字段的解析,赋予了条目既能够进行写作又能够用于编程的双重功能。 + +Wiki编程是在条目中进行定义、调用不同形式封装或定义的方法和变量,为了完成某种任务,将解决问题的步骤写成指令,使TiddlyWiki根据这些指令一步步执行,最后完成任务。 维基文本的可编程性,在维基文本中可实现功能。 @@ -36,6 +38,21 @@ title: Wiki编程的定义 <<< +--- +在TiddlyWiki中一等公民是微件(widget)其等价于React,包含微件消息、核心变量、set let vars等变量类型微件、自定义微件。主要负责构建UI界面,有wikitext和js两种用法,状态管理是其中核心,qualify限定微件是常用的状态管理微件;二等公民是函数及筛选器,主要负责数据输出,有wikitext和js两种用法;三等公民为进程(包含宏、JS宏),主要负责tiddlywiki方法,仅有wikitext一种使用方法;四等公民为模块包,是通用JS模块,主要负责作为微件、JS宏的依赖使用。以上四类的底层实现均为JS模块。 + +关于tiddlywiki的笔记模型,可以想象成一个Excel表格,表格中的每一行都代表tiddlywiki的一个条目。每一个条目都有自己的字段,这些字段就相当于Excel表格的每一列,字段的字段名相当于表格的表头定义。可以想象,tiddlywiki是一张无限多条目记录的表格。该表格中比较特殊的字段列是title、tag、type、text等字段。其中text字段是条目的核心字段,它关联了解析器模式用于展示笔记或编程内容。 + +由上述笔记模型可以理解''范本条目''也就是模版,也就是在条目中使用嵌入语法,嵌入某个条目的某个字段列。如:你可以新建名为A范本的条目,在条目中写下`{{!!title}}` 类似Excel的单元格引用的条目中某个字段的文本引用,此文本引用类似一个Excel单元格地址指向具体内容。然后你可以新建B普通条目,在条目中写下 `{{||A范本}}`,这样就会将B普通条目的全部字段传递给A范本。A范本中的文本引用会自动填充为B普通条目字段内容,最后将A范本填充好的内容嵌入到B普通条目中。 + +因为tiddlywiki的笔记模型非常简洁稳定,所以自然而然的引出筛选器并函数这类称为输出的功能。筛选器中也会存在变量的使用,一般分为特殊变量、角括号<>、大括号{}、多参数。角括号表示该参数是一个变量名称。例如:`[search]`、大括号表示该参数是一个文本引用。例如:`[tag{preference}]`、筛选器操作符支持多个参数,这些参数由一个 , 字符分隔。`[param1],[param2]`或`,{param2}`。例子:`[jsonextract[d],[f],[0]]`。参考[[筛选器参数|https://bramchen.github.io/tw5-docs/zh-Hans/#Filter%20Parameter]]。调用筛选器有两种方式:先定义函数,然后调用函数`<>`;嵌入筛选器`{{{ [[ ]] }}}`。 +其中函数不仅可以用角括号调用,还可以通过function筛选器操作符作为函数筛选器操作符使用:`[function[myfn],[value],···]`。函数定义是包含筛选器表达式的有名称命名的文本片段。使用`\function`编译指示模式定义。筛选器其实非常常见,比如Excel中、Linq语言集成查询、DQL关系型数据库查询语言等等。 + + +tiddlywiki Cascade级联,CSS(Cascading Style Sheet)。 + +--- + tree宏提供了一种Wiki编程参考。编辑器工具栏的文本片段snippet。似乎整个Wiki编程都围绕条目进行操作。之所以叫Wiki编程是因为,Wiki编程核心由js实现且降低了复杂度但又和平常的记录笔记相差较大,更类似一种功能实现,即它介于写作与编程语言之间,且偏向编程语言的方面。 Wiki编程核心是:小工具(Widget)[包含小工具消息(Messages)]、筛选器(Filters)、TiddlyWiki核心变量(包含于变量)、模块等,这些由TiddlyWiki提供的类API的工具或功能集。