Gatsby: المتغيرات في Markdown؟

تم إنشاؤها على ٢٨ نوفمبر ٢٠١٨  ·  1تعليق  ·  مصدر: gatsbyjs/gatsby

ملخص

هل هناك طريقة للحصول على متغيرات في صفحات التخفيضات التي سيتم استبدالها بالقيم؟ أنا أكتب وثائق حول خدمة مثل URL. عنوان URL موجود في ملفين من ملفات تخفيض السعر وأود ألا أضطر إلى العثور عليه واستبداله في حالة تغييره.

هل أفضل خيار لدي لإضافة مكون مخصص في Markdown؟ يبدو ثقيل الوطأة على هذا.

question or discussion

التعليق الأكثر فائدة

يمكنك كتابة مساعد مخصص قليلاً لهذا (أو استخدام شيء مثل lodash.template https://lodash.com/docs/4.17.11#template)

إليك حل سريع وقذر:

إعطاء ملف تخفيض السعر sample.md بالمحتويات التالية:

---
title: Sample
---

## Hello World

This is a [link](%URL%/sub-path), and so is [this](%URL%/sub-path)

يمكنك إنشاء ملف (دعنا نسميه src/utils/template.js ) وكتابة شيء مثل هذا

export default function template(content, data) {
  return content.replace(/%(.+)%/g, (match, key) => {
    const value = data[key]
    if (typeof value !== 'undefined') {
      return value
    }
    return match // guards against some unintentional prefix
  });
}

الآن قم بتوصيلها جميعًا معًا ، ستحتاج فقط إلى _ استخدام_ وظيفة القالب هذه لاستبدال المحتوى الخاص بك. يمكن أن يكون الكائن data كل ما تريد ويمكن سحبه من أي مكان (على سبيل المثال ، Graphql ، بعض ملفات الثوابت ، متغيرات البيئة ، إلخ).

import React from 'react'

import template from '../utils/template';

const URL = 'https://google.com'; // this can be from wherever

export default function SomeMarkdownPage({ data }) {
  // data is from GraphQL, presume the parent is data.markdown
  return (
    <div dangerouslySetInnerHTML={{
      __html: template(data.markdown.html, {
        URL
      })
    }} />
  )
}

هل لهذا معنى؟ قد يكون هذا ملحقًا مفيدًا إلى حد ما لملاحظة gatsby ، لكنني لست متأكدًا من وجوده! إذا كان لديك أي اهتمام بكتابة ذلك ، فسيكون ذلك رائعًا ، ولكن في الوقت الحالي ، سيعمل هذا بالتأكيد مع حالة الاستخدام الخاصة بك!

سيتم إغلاق هذا كما تم الرد ، ولكن لا تتردد في إعادة فتحه إذا كان بإمكان أي منا تقديم المزيد من المساعدة. شكرا لاستخدامك Gatsby!

>كل التعليقات

يمكنك كتابة مساعد مخصص قليلاً لهذا (أو استخدام شيء مثل lodash.template https://lodash.com/docs/4.17.11#template)

إليك حل سريع وقذر:

إعطاء ملف تخفيض السعر sample.md بالمحتويات التالية:

---
title: Sample
---

## Hello World

This is a [link](%URL%/sub-path), and so is [this](%URL%/sub-path)

يمكنك إنشاء ملف (دعنا نسميه src/utils/template.js ) وكتابة شيء مثل هذا

export default function template(content, data) {
  return content.replace(/%(.+)%/g, (match, key) => {
    const value = data[key]
    if (typeof value !== 'undefined') {
      return value
    }
    return match // guards against some unintentional prefix
  });
}

الآن قم بتوصيلها جميعًا معًا ، ستحتاج فقط إلى _ استخدام_ وظيفة القالب هذه لاستبدال المحتوى الخاص بك. يمكن أن يكون الكائن data كل ما تريد ويمكن سحبه من أي مكان (على سبيل المثال ، Graphql ، بعض ملفات الثوابت ، متغيرات البيئة ، إلخ).

import React from 'react'

import template from '../utils/template';

const URL = 'https://google.com'; // this can be from wherever

export default function SomeMarkdownPage({ data }) {
  // data is from GraphQL, presume the parent is data.markdown
  return (
    <div dangerouslySetInnerHTML={{
      __html: template(data.markdown.html, {
        URL
      })
    }} />
  )
}

هل لهذا معنى؟ قد يكون هذا ملحقًا مفيدًا إلى حد ما لملاحظة gatsby ، لكنني لست متأكدًا من وجوده! إذا كان لديك أي اهتمام بكتابة ذلك ، فسيكون ذلك رائعًا ، ولكن في الوقت الحالي ، سيعمل هذا بالتأكيد مع حالة الاستخدام الخاصة بك!

سيتم إغلاق هذا كما تم الرد ، ولكن لا تتردد في إعادة فتحه إذا كان بإمكان أي منا تقديم المزيد من المساعدة. شكرا لاستخدامك Gatsby!

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات