使用VuePress搭建一個類似element的文件

溯朝發表於2018-06-01

網站成果樣式

使用VuePress搭建一個類似element的文件

專案書寫步驟

github地址:github.com/xuhuihui/da…

官網:caibaojian.com/vuepress/gu…

參考文章:www.javascriptcn.com/read-31206.…

前言:我先git clone官方github,執行檢視完整效果。 再根據官網介紹和參考文章,結合完整的程式碼,自己一步步配置內容。最後,參考element的設計樣式,修改並增加程式碼,形成一個平臺元件庫的網站。

(1)在已有專案中安裝

# 安裝為本地依賴項
npm install -D vuepress

# 建立一個 docs 目錄
mkdir docs

# 建立一個 markdown 檔案
echo '# Hello VuePress' > docs/README.md

# 給package.json 新增一些 scripts 指令碼:{
  "scripts": {
    "docs:dev": "vuepress dev docs",
    "docs:build": "vuepress build docs"
  }
}# 執行專案
yarn run docs:dev 
複製程式碼

出現顯示文件亂碼問題,如圖所示:

使用VuePress搭建一個類似element的文件

解決方式:修改md檔案編碼為UTF-8

使用VuePress搭建一個類似element的文件

改變md檔案的內容如下:

---
home: true
actionText: 前往 →
actionLink: /baseComponents/
features:
- title: 佈局類元件
  details: 基本元件,為常用元件提供快速,可用的元件
- title: 視覺化元件
  details: 積累將資料視覺化的業務元件
- title: 知識庫
  details: 積累前端相關的知識,涵蓋 vue、react、koa2、nodejs 相關的知識點
---複製程式碼

(2)配置檔案

配置(參考連結:caibaojian.com/vuepress/co…) VuePress 站點的基本檔案是 .vuepress/config.js,其中匯出一個 JavaScript 物件:

module.exports = {
  title: 'data Com', // 設定網站標題
  description: 'Just for fun', //描述
  dest: './dist',   // 設定輸出目錄
  port: 2233, //埠
  themeConfig: { //主題配置
    // 新增導航欄
    nav: [
      { text: '主頁', link: '/' }, // 導航條
      { text: '元件文件', link: '/baseComponents/' },
      { text: '知識庫', link: '/knowledge/' },
      { text: 'github',        // 這裡是下拉選單展現形式。
        items: [
          { text: 'focus-outside', link: 'https://github.com/TaoXuSheng/focus-outside' },
          { text: 'stylus-converter', link: 'https://github.com/TaoXuSheng/stylus-converter' },
        ]
      }
    ],
    // 為以下路由新增側邊欄
    sidebar:{
      '/baseComponents/': [
        {
          title: '佈局類元件',
          collapsable: true,
          children: [
            'base/test1',
            'base/test2',
            'base/test3',
            'base/test4',
          ]
        },
        {
          title: '視覺化元件',
          collapsable: true,
          children: [
          ]
        },
        {
          title: '工具類元件',
          collapsable: true,
          children: [
          ]
        },
        {
          title: '方法類函式',
          collapsable: true,
          children: [
          ]
        }
      ],
      '/knowledge/': [
        {
          title: 'CSS知識庫',
          collapsable: false,
          children: [
          ]
        },
        {
          title: 'JS知識庫',
          collapsable: false,
          children: [
          ]
        },
        {
          title: 'node知識庫',
          collapsable: false,
          children: [
          ]
        },
        {
          title: 'vue知識庫',
          collapsable: false,
          children: [
          ]
        }
      ]
    }
  }
}複製程式碼

主題配置部分:在.vuepress/override.styl修改樣式:

$accentColor = #3EB9C8 // 主題色
$textColor = #2c3e50 // 文字顏色
$borderColor = #eaecef // 邊框顏色
$codeBgColor = #282c34 // 程式碼背景顏色
// 程式碼庫重置
.content pre{  margin: 0!important;}複製程式碼

(3)增加其它擴充套件外掛

外掛npm安裝:element-ui,vue-echarts,vue-highlight。。

在.vuepress/enhanceApp.js引入:

/**
 * 擴充套件 VuePress 應用
 */
import VueHighlightJS from 'vue-highlight.js';
import 'highlight.js/styles/atom-one-dark.css';
import Element from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css'
import VueECharts from 'vue-echarts' //註冊圖表

import './public/css/index.css' //元件css檔案

export default ({
  Vue, // VuePress 正在使用的 Vue 建構函式
  options, // 附加到根例項的一些選項
  router, // 當前應用的路由例項
  siteData // 站點後設資料
}) => {
  // ...做一些其他的應用級別的優化
  Vue.use(VueHighlightJS)
  Vue.use(Element)
  Vue.component('chart', VueECharts)
}

複製程式碼

(4)Markdown 擴充

呼叫別人寫好的輪子:www.npmjs.com/package/vue…

  <highlight-code slot="codeText" lang="vue">
    <template>
      <div class="demo-button">
        <div>
          <dt-button>預設按鈕</dt-button>
          <dt-button type="primary">主要按鈕</dt-button>
          <dt-button type="success">成功按鈕</dt-button>
          <dt-button type="info">資訊按鈕</dt-button>
          <dt-button type="warning">警告按鈕</dt-button>
          <dt-button type="danger">危險按鈕</dt-button>
        </div>
    </template>
  </highlight-code>複製程式碼

(5)在Markdown 使用Vue-----插入按鈕樣式

#先寫一個按鈕元件.\vuepress\docs\.vuepress\components\src\button.vue

<template>
  <button
    class="dt-button"
    @click="handleClick"
    :disabled="disabled"
    :autofocus="autofocus"
    :type="nativeType"
    :class="[
      size ? 'dt-button--' + size : '',
      type ? 'dt-button--' + type : '',
      {
        'is-disabled': disabled,
        'is-round': round,
        'is-plain': plain
      }
    ]">
    <i :class="icon" v-if="icon"></i>
    <span v-if="$slots.default"><slot></slot></span>
  </button>
</template>

<script>
export default {
  name: 'DtButton',

  props: {
    size: String,
    type: {
      type: String,
      default: 'default'
    },
    nativeType: {
      type: String,
      default: 'button'
    },
    disabled: Boolean,
    round: Boolean,
    plain: Boolean,
    autofocus: Boolean,
    icon: {
      type: String,
      default: ''
    }
  },
  methods: {
    handleClick (event) {
      this.$emit('click', event)
    }
  },
  mounted () {
    this.$emit('click', event)
  }
}
</script>複製程式碼

#css樣式,在.\vuepress\docs\.vuepress\public\css\button.css,寫法參考餓了麼。

#在.\study\vuepress\docs\.vuepress\public\css\index.css彙總

@import './iconfont.css';
@import './icon.css';

@import './card.css';
@import './button.css'; //按鈕元件
@import './checkbox.css';
複製程式碼

#在.\vuepress\docs\.vuepress\components\test\test1.vue資料夾下面呼叫button

<template>
  <div class="demo-button">
    <div>
      <dt-button>預設按鈕</dt-button>
      <dt-button type="primary">主要按鈕</dt-button>
      <dt-button type="success">成功按鈕</dt-button>
      <dt-button type="info">資訊按鈕</dt-button>
      <dt-button type="warning">警告按鈕</dt-button>
      <dt-button type="danger">危險按鈕</dt-button>
    </div>
  </div>
</template>

<script>
import DtButton from '../src/button'
export default {
  name: 'buttonWrap',
  components: {
    DtButton
  }
}
</script>

<style lang="less" scoped>
.demo-button{
  width: 100%;
  text-align: center;
  div {
    margin: 10px 0;
  }
}
</style>
複製程式碼

#vuepress會自動根據路徑註冊元件,我們只要對映檔案路徑,就可以呼叫元件。

在.\vuepress\docs\baseComponents\base\test1.md

# 測試案例1
---
<Common-Democode title="基本用法" description="基本按鈕用法">
  <test-test1></test-test1>
  <highlight-code slot="codeText" lang="vue">
    <template>
      <div class="demo-button">
        <div>
          <dt-button>預設按鈕</dt-button>
          <dt-button type="primary">主要按鈕</dt-button>
          <dt-button type="success">成功按鈕</dt-button>
          <dt-button type="info">資訊按鈕</dt-button>
          <dt-button type="warning">警告按鈕</dt-button>
          <dt-button type="danger">危險按鈕</dt-button>
        </div>
      </div>
    </template>
  </highlight-code>
</Common-Democode>

| Tables        | Are           | Cool  |
| ------------- |:-------------:| -----:|
| col 3 is      | right-aligned | $1600 |
| col 2 is      | centered      |   $12 |
| zebra stripes | are neat      |    $1 |複製程式碼

#展示效果如圖:

使用VuePress搭建一個類似element的文件



相關文章