Sapper / Svelte: Как добавить файлы разметки?

Я создаю блог с помощью Sapper, используя по умолчанию sapper-template-rollup.

В папке блога упоминается о создании данных из файлов уценки. Но не могу найти, как это сделать?


person JustineKizhak    schedule 16.10.2019    source источник
comment
Найдите плагин загрузчика уценки для вашего сборщика модулей (webpack, rollup ..)   -  person voscausa    schedule 17.10.2019
comment
Это довольно просто, вы можете использовать пакет marked и совершенно точно узнать, как svelte создал свою собственную страницу блога. Посмотрите здесь github.com/sveltejs/ svelte / blob / master / site / src / routes / blog /   -  person Jerric Lyns John    schedule 18.10.2019


Ответы (4)


Обновление 2020-06-14:

Также существует версия GitHub (с 11 ноября 2019 г.), которая публикуется с помощью Netlify и имеет добавлен личный домен. Поэтому, в отличие от версии GitLab, он не использует базовый URL Sapper для изменения базового пути, что необходимо для страниц GitLab и GitHub, если вы не добавите собственный домен.

Оригинальный ответ 2019-10-24:

Вы можете найти это репо полезным. У меня также есть открытый PR в репозитории Sapper Template. Markdown ветка в январе 2019 года, а затем добавление поддержки Svelte 3 в мае 2019 года, но, вероятно, проще посмотреть и клонировать мое репо на GitLab, плюс в нем есть более свежие обновления зависимостей, которые я еще не добавил в PR.

person rdela    schedule 24.10.2019
comment
См. Также этот шаблон блога Sapper через Бриттни в канале Sapper на Svelte Discord, отличное место, чтобы задать вопросы и пообщаться. - person rdela; 24.10.2019
comment
Я вижу, что все сообщения будут иметь ссылку сразу после Ex www.example.com/post1, www.example.com/post2 домена верхнего уровня. Но что, если кто-то, использующий шаблон, захочет классифицировать сообщения. Пример: www.example.com/svelte-posts/post1, www.example.com/vuejs-posts/post1 - person JustineKizhak; 24.10.2019
comment
@JustineKizhak Итак, вы хотите добавить категории в один блог или создать два отдельных блога? - person rdela; 31.10.2019
comment
Есть ли разница между категориями и двумя отдельными блогами на одном сайте? Я думал о категориях блогов, таких как технический блог и еще один блог о путешествиях и т. Д. Сейчас меня не волнует, нет ли категорий, но в будущем я мог бы. Итак, прямо сейчас я хочу поработать с кодовой базой, а потом мне просто нужно сосредоточиться на содержании. - person JustineKizhak; 01.11.2019
comment
@JustineKizhak Если вам нужны традиционные категории в стиле WordPress, я бы добавил это к началу сообщений уценки (Jekyll docs), а затем создайте шаблон страницы категории, используя dynamic параметры, а также ссылки на любые категории в ваших индивидуальных шаблонах сообщений. - person rdela; 02.11.2019
comment
@JustineKizhak Однако, если есть ограниченное количество категорий, которые вы знаете заранее, и вы хотите, чтобы категория в URL-адресе была перед названием сообщения, может быть проще, хотя и с ограничением по времени, иметь отдельные блоги / папки сообщений и используйте их так, как сайт Svelte использует папку blog. Это не сработает, если вам нужен традиционный хронологический указатель всех сообщений из любой категории, поэтому, если вы действительно хотите, используйте подход, описанный выше, и не беспокойтесь о URL-адресах для отдельных сообщений. - person rdela; 02.11.2019
comment
@JustineKizhak Также по моему опыту, теги почти всегда лучше, чем категории, потому что вы можете добавить столько, сколько захотите. Что, если бы вы написали пост, сравнивающий Svelte и Vue? Почему бы не появиться в обоих? Тогда вам нужны теги, а не категории. WordPress имеет долгую запутанную историю, когда, я думаю, они наконец заставили категории вести себя как теги, потому что им надоело иметь дело с людьми, использующими категории, когда они хотели теги и жаловались. - person rdela; 02.11.2019
comment
@JustineKizhak добавил отдельный вопрос об этом, чтобы помочь будущим поисковикам, не стесняйтесь продолжить обсуждение или добавить свои ответы там. - person rdela; 02.11.2019
comment
Теперь я понимаю, что теги предлагают большую гибкость, но в отношении категорий мы не можем сделать что-нибудь в js для синтаксического анализа и сохранения блогов разных категорий в отдельных файлах json, таких как svelte-posts.json, vue-posts.json, поскольку я понимаю, что сообщение не может принадлежать более чем к одной категории . Таким образом, [category]/index.svelte мог только получить соответствующий json и отобразить его в хронологическом порядке. Я вижу себя использующим как категории, так и теги. Категории как группы и теги для фильтрации. Но я думаю, что для фильтрации мне также придется выполнить настройку на стороне сервера. - person JustineKizhak; 04.11.2019
comment
Я постараюсь придумать решение и опубликую ваш вопрос. Спасибо за ответы. - person JustineKizhak; 04.11.2019

Я опубликовал https://github.com/mikenikles/sapper-template-with-markdown, который показывает, как использовать шаблон Sapper по умолчанию, но использует *.md файлы для содержания сообщения в блоге.

Основное изменение было в src/routes/blog/_posts.js, где я заменил содержимое на:

const fs = require('fs');
const frontMatter = require('front-matter');
const marked = require('marked');

const posts = fs.readdirSync('./src/posts').map(postFilename => {
  const postContent = fs.readFileSync(`./src/posts/${postFilename}`, {
    encoding: 'utf8'
  });
  const postFrontMatter = frontMatter(postContent);
  return {
    title: postFrontMatter.attributes.title,
    slug: postFrontMatter.attributes.slug,
    html: marked(postFrontMatter.body)
  }
});

posts.forEach(post => {
    post.html = post.html.replace(/^\t{3}/gm, '');
});

export default posts;

Затем каждое сообщение в блоге сохраняется в src/posts как файл Markdown в следующем формате:

---
title: 'What is Sapper?'
slug: 'what-is-sapper'
---

Your markdown content.
person Mike Nikles    schedule 29.04.2020

Вы можете получить больше удовольствия, используя MDsveX, который представляет собой процессор Svelte Markdown, созданный одним из основных членов сообщества. .

Однако да, вы также можете просто использовать marked или snarkdown (это то, что я использую), так же, как вы использовали бы любую другую библиотеку - просто импортируйте ее и передайте ей свой код уценки.

person Antony Jones    schedule 24.10.2019

Я согласился с подходом @Antony Jones. Я поместил файлы .md в свою папку routes / и использовал Svelte Preprocess Markdown, установив это в моей конфигурации накопительного пакета для обработки .md файлов (превращая их в .svelte файлы). Файлы .md организованы в подпапки в папке routes /, и каждая папка имеет страницу индекса, на которой будут перечислены ссылки на страницы, созданные файлами или папками внутри. Вот ссылка на репо, если вы хотите его проверить: ссылка. Работа над этим все еще продолжается.

Однако, как сказал @rdela в своих комментариях, этот подход менее гибкий, чем обработка сообщений с использованием вашего собственного кода, чтобы получить первый материал, как в репозитории шаблона, а затем фильтровать сообщения, помещая их в папки на основе тегов в их главный вопрос или что-то в этом роде.

person mmmm    schedule 23.04.2020