Giter Site home page Giter Site logo

Comments (4)

0w0zzzzzz avatar 0w0zzzzzz commented on June 1, 2024 7

I add it by referenced to #21

<template>
    <textarea v-model="input"></v-textarea>
    <vue-markdown :source="input" @rendered="update"></vue-markdown>
</template>

<script>
import VueMarkdown from "vue-markdown";
import Prism from "prismjs";
import "prismjs/themes/prism-okaidia.css";  // theme
import 'prismjs/components/prism-go.min';  // language

export default {
  components: {
    VueMarkdown
  },
  data: () => ({
    input: `\`\`\`go
    func test() int {
      return 0
    }
    \`\`\``
  }),
  methods: {
    update: function() {
      this.$nextTick(() => {
        Prism.highlightAll();
      });
    }
  }
};
</script>

And you may check whether prism-language.js extend other language like cpp.
I haven't tried babel-plugin-prismjs to configure Prism. You can test it if you want a lot of language and line number.

from vue-markdown.

dominik-korsa avatar dominik-korsa commented on June 1, 2024 2

Thank you very much! I also recommend you add an example and explanation to README.md for other people.

from vue-markdown.

dib-nhnl avatar dib-nhnl commented on June 1, 2024

I tried babel-plugin-prismjs

in babel.config.js:

"plugins": [
  ["prismjs", {
    "languages": ["javascript", "css", "markup", "json"],
    "plugins": ["line-numbers"],
    "theme": "okaidia",
    "css": true
  }]
]

It will be smarter, there is no need to have :

import "prismjs/themes/prism-okaidia.css";  // theme
import 'prismjs/components/prism-go.min';  // language

in your vue component, and more configurable.

from vue-markdown.

jaysalvat avatar jaysalvat commented on June 1, 2024

Hello.

The best solution to me was to create a wrapper component. Eg: MyMarkdown.vue

<template>
  <VueMarkdown v-bind="$props" />
</template>

<script>
  import VueMarkdown from 'vue-markdown'
  import Prism from 'prismjs'
  import 'prismjs/themes/prism-dark.css'

  export default {
    components: {
      VueMarkdown
    },

    props: {
      ...VueMarkdown.props,
      emoji: {
        default: false,
        type: Boolean
      },
      html: {
        default: false,
        type: Boolean
      }
    },

    mounted() {
      this.$nextTick(() => {
        Prism.highlightAll()
      });
    }
  }
</script>

And use this wrapper <MyMarkdown /> instead of VueMarkdown in other components.

Hope it helps.

from vue-markdown.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.