polyglot使用单个源文件中想要的任何DSL的混合物创建网站。
polyglot
$ raco docs polyglot \”>
$ raco pkg install polyglot
$ raco docs polyglot
我不知道您是如何管理它的,但是您的读书我被打破了。
这是一个功能。不,实际上,下面的文字混乱不是偶然的(尽管以原始形式更可读)。
此读数文件作为演示和如何使用polyglot创作页面的工作示例。
安装了polyglot后,请运行raco polyglot demo以验证您的安装并构建此读数。如果有效,您将在工作目录中看到一个dist文件夹。打开浏览器中的HTML文件。如果它不起作用,请打开一个问题。
<script type =“ text/contet” id =“ my-components”> #lang conset/base ;;;这是一个库模块。 polyglot将将此文件写入临时文件系统;;;使用一个匹配`<script>`id的名称。此页面中的应用程序脚本可以;; “需要”嵌入式库模块。 ;;; Procedures can act as Components (in the React sense) (provide page-layout) (define (page-layout content) `(html (head (title \” polyglot Demo\”) (meta ((charset \”utf-8\”))) (meta ((name \”viewport\” content \”initial-scale=1, maximum-scale=1, shrink-to-fit=no, user-scalable=no, width =设备宽度“)))(样式(((类型为“ text/css”))“身体{margin:1rem;背景:#0f2753}身体>:not(section){none}节{none} e节{color:#fff} a {color:color:color:goldenrod}球拍;;;定义用于表达字面文本的DSL ;; From https://docs.r**acket*-lang.org/guide/hash-lang_reader.html (require syntax/strip-context) (provide (rename-out [literal-read read] [literal-read-syntax read-syntax])) (define (literal-read in) (syntax->datum (literal-read-syntax #f in))) (define (literal-read-syntax src in) (with-syntax ([str (port->string in)]) (strip-context #\'(module anything racket (provide data) (define data \’str))))) </script> <script type=\”text/racket\” id=\”freeform\”> #lang reader \”literal.rkt\” ` polyglot ` uses Markdown for prose and is represented internally as [tagged x-expressions。](https://docs.*racket*-la*ng.org/txexpr/index.html?q=txexpr)您只能以最合适的术语来介绍任何要撰写内容的语言。该系统适用于想要编写博客并在其内容中展示应用程序的开发人员。这并不总是那么容易,但是灵活性正在改变游戏规则。 ##“scribble\’\’或`frog\’\’?我为什么要使用这个?这两种工具都是在球拍生态系统中所做的最好的工具。如果适合您的需求,请使用它。出于我的目的,我想要一个工具:1。在作者和内容的共同表示之间不会保持太多程度的分离。 2。允许作者在散文中使用任何“#lang”语言。 3.将每个页面都模型为独立且自称,这意味着页面的源既定义了它自己的元数据,又定义了如何使用它。 4。允许作者共享内容而无需严格需要“ polyglot \’\’。由于每个页面都只是降级,因此任何降价解析器都可以对其进行处理。由于球拍具有明确的读取新语言的界面,因此编写“ polyglot \’\’\’\’\’\’\’\’\’\’\’\’\’\’\’\’\’\’\’\’\’都不是一个巨大的提升。我设置了这些要求,以默认情况下用散文编写任意富裕内容的最佳位置,而没有为供应商锁定的条件。我尽可能地将开发经验作为“起床和走”,但是只有需要使用不同的DSL每页撰写内容,才能充分利用该项目。例如,这对于一个技术组合非常有用,每个页面都托管应用程序演示。 </script> <script type =“ application/rackdown” id =“ main”> #lang球拍/base ;;;这是一个应用程序脚本。 ;;;它可以使用`(提供布局)`并写入内容替换设置页面布局;;;使用打印机使用一系列标记X-Exptressions的封闭脚本节点;;在写模式中。 (需要降压/与资产/日志记录“ my-components.rkt”(inname-in“ freeform.rkt”(数据嵌入式嵌入式标记)))(提供布局))(写入`(节(h1“ …刚刚发生的h1” …发生了什么? `(部分。
