Elementソースシリーズ——VueロードMarkdown形式コンポーネント前編

20018 ワード

Elementソースシリーズ——VueロードMarkdown形式コンポーネント前編
  • Elementソースシリーズ——VueロードMarkdownフォーマットコンポーネント前編
  • 序言
  • vue-cli
  • をインストール
  • インストール依存
  • Webpackプロファイル
  • の作成
  • 作成コンポーネント
  • まとめ



  • 序文
    ドキュメントがどのように動作するか-vue-markdown-loader
    当初、Mint UIを書くときにVueでドキュメントを書くという問題に遭遇しました.Markdownを書くときにもVueコンポーネントを書くことができるDemoをどうすればいいのか.その後、Mint UIのドキュメントにDemoは書かれていませんでしたが.最初はElementの内部バージョンで、様々なVueのMarkdown関連プラグインを探しました.templateでMarkdownフォーマットを定義するか、Markdownのコンポーネントがあります.Markdownファイルを純粋に書くことができず、Demoも書くことができます.
    後でMarkdownファイルをVueコンポーネントに変換してみることもできるかもしれないと思います.結局MarkdownにHTMLを書くことができて、それでは完全にVueのテンプレートとすることができます.その後、vue-markdown-loaderがあり、MarkdownをVueコンポーネントに変換するwebpack loaderがあり、vue-routerと組み合わせてMarkdownにVueコードを書くことができるドキュメントサイトを構築することができます.
    参照先-https://segmentfault.com/a/1190000007026819
    書く前に、私たちはまず需要を整理して、需要を理解してこそもっと良いコードを生産することができます!これも本文の中で最も重要な部分である.
    私たちの最終的な目的はこのようなチュートリアルサイトを作ることです.http://element.eleme.io/#/zh-CN/component/alert
    開発効率を向上させるためには、markdown形式のファイルをimport md from'path/xx.md′のインポート形式は対応するコンポーネントにロードされ、markdownファイルはコンポーネントである.
    では、私たちの最初のニーズはimportをブロックし、markdowm構文を解析することです.
    ここに来たとき、何の欠点もないようだ.しかし、私たちがしなければならないのはチュートリアルサイトであることを忘れないでください.コードだけではだめです.私たちはまだ効果が必要です.
    だから私たちの2番目の需要はmarkdownの中でもVueのコンポーネントを書くことができます!
    この問題を解決したら、Webページのテンプレートを設計し、ルートを通じて異なるmdファイルを呼び出すだけで、チュートリアルサイトを簡単に完成することができます.
    vue-cliのインストール
    便宜上、私たちは自分で環境を構築するのではなく、直接テーマに入ります.
    vue init webpack markdown
    cd markdown
    npm install

    依存関係のインストール
    markdown-it    markdown     
    markdown-it-anchor          
    markdown-it-container             
    vue-markdown-loader   loader
    transliteration      
    cheerio     jQuery
    highlight.js        
    striptags   cheerio      ,strip         ,fetch               

    Webpackプロファイルの作成
    まずbuildディレクトリの下にstrip-tags.jsファイルを新規作成する.
    // strip-tags.js
    
    'use strict';
    
    var cheerio = require('cheerio'); //      jQuery
    
    /**
     *           ,    VUE       <style> ,         ,    
     * @param  {[String]}       str            e.g'script' ['script','style']
     * @param  {[Array|String]} tags  e.g '<template></template><script>''
     * @return {[String]}             e.g '