项目作者: erayd

项目描述 :
A small, client-side template engine that uses static markdown files to manage content.
高级语言: JavaScript
项目地址: git://github.com/erayd/slightly.git
创建时间: 2020-11-20T12:32:39Z
项目社区:https://github.com/erayd/slightly

开源协议:ISC License

下载


Slightly

Slightly is a small, client-side template engine that uses static markdown files
to manage content.

Usage

Include the following code within the head of your index page.

  1. <script defer src="https://slightly.erayd.net/dist/slightly-latest.min.js" crossorigin></script>
  2. <meta name="slightly-config" content="/config.json" />

If a template is not specified, then the index page will be used. All paths on
your site that do not map to a file should be configured on the webserver to
return the index page.

Configuration

Slightly uses two configuration methods. The first is a site-wide configuration
file, and the other is an optional YAML frontmatter section for each markdown
page.

Config File

The config file may be located wherever is convenient. The following meta tag
must be present:

  1. <meta name="slightly-config" content="/url/for/config.json" />

The config file takes the following format:

  1. {
  2. "template": "/url/for/template.html",
  3. "target": "#selector-to-inject-page-content",
  4. "prefix": "Title Prefix",
  5. "suffix": "Title Suffix"
  6. }

Any value within this file may be overridden by individual pages. All are
optional.

Parameter Purpose
template Path to the template file used to display pages
target HTML selector for where to inject the page content
prefix Prefix to apply to the page title
suffix Suffix to apply to the page title

YAML Frontmatter

Pages may include optional YAML frontmatter as follows:

  1. ---
  2. title: "Page Title",
  3. template: "/url/for/template.html",
  4. target: "#selector-to-inject-page-content",
  5. description: "This is the page meta description"
  6. ---
  7. # Markdown Document
  8. This is some markdown content.

The parameters available here override any that may be set in the config file.
All are optional.

Parameter Purpose
title Page HTML title
template Path to the template file used to display pages
target HTML selector for where to inject the page content
prefix Prefix to apply to the page title
suffix Suffix to apply to the page title
description Page meta description

Content

Content is provided as simple static markdown files, with optional YAML
frontmatter. It should be present on the webserver at the
request path, with a .md file extension.

Images

Images will be rendered inside <figure> blocks. If the image has an alt
attribute, the contents of that will be appended after the image as a
<figcaption>.

Some basic styling of the figure is possible using the fragment portion of the
image URL. This consists of a semicolon-separated set of key / value pairs. The
value is optional.

Any unrecognised key is added to the figure as a class, and the value is
discarded.

  1. ![Image caption](/url/of/image.jpg#right;w=50%;my-class)

The above example will display a right-floated figure, 50% wide, with the class
my-class.

Key Description
left Float the figure left
right Float the figure right
w Set the figure width
h Set the figure height

404 Errors

In order to return the correct HTTP status code, any request for which the
request path does not have a corresponding markdown file (e.g. if /not-a-file
is requested, and the file /not-a-file.md does not exist) should be configured
to return a 404 status code. There are no other considerations necessary.

Custom 404 pages using the main template engine are not currently implemented,
but will be available in a future version.

Templates

Slightly templates are just regular HTML files. If you wish to include
sub-templates, you can do so as follows:

  1. <div slightly-template="/path/to/sub-template.html" slightly-selector="#sub-fragment"></div>

The tag may be of any kind, and does not need to be a div. It will be replaced
by the included sub-template. The slightly-selector attribute is optional, but
if present then the first matching element of the sub-template will be used. If
absent, then the sub-template document element will be used.

Templates may be listed to any level, however care must be taken not to nest
them recursively.

Table of Contents

If you wish to include a table of contents, simply add the slightly-toc
attribute to any element. This element will be replaced with a generated TOC.
The TOC attribute may be used on more than one element, and may even appear
within a content markdown file.

The value of this attribute should be set to the maximum level of heading you
wish to include. By default, all headings will be included. If there are no
available headings that fit within the selected level, the TOC element will
simply be deleted.

  1. <div slightly-toc="3"></div>

If the top level of the TOC contains only one heading, it will be omitted, and
the next level of heading will be promoted. This promotion mechanism does not
affect the level of heading selected by slightly-toc.