<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
只是單純的用 vuepress
寫個 markdown 檔案,的確會處處受限,滿足不了客製化化的樣式和功能,有時只是簡單的修改下某個頁面,或者做些元件演示的內容,而不是開發一整套主題。所以研究下如何在專案中使用 vue
元件還有非常有必要的,畢竟也沒那麼難。
node v16.13.0
VuePress v2.0.0-beta.48
每個版本的使用方式還是有些差異的,尤其是 1.x
與 2.x
,所以在閱讀的時候儘量與自己所用的版本對比下,避免不必要的試錯。
在 Vuepress2.x
中需要安裝 @vuepress/plugin-register-components 外掛並做好設定,而在Vuepress1.0中,md 檔案能自動識別匯出的.vue
檔案。
yarn add @vuepress/plugin-register-components@next // 或者 npm i -D @vuepress/plugin-register-components@next
config.js
中設定修改如下:
☞ 官方設定項檔案
const { registerComponentsPlugin } = require('@vuepress/plugin-register-components') module.exports = { plugins: [ registerComponentsPlugin({ // 設定項 }), ], }
我原生的組態檔的部分內容:
const path = require("path"); const { defaultTheme } = require('vuepress'); const { docsearchPlugin } = require('@vuepress/plugin-docsearch') // ======================引入外掛==================================== const { registerComponentsPlugin } = require('@vuepress/plugin-register-components') // ======================引入外掛 End================================ const navbar = require('./navbar'); const sidebar = require('./sidebar'); module.exports = { base: '/', lang: 'zh-CN', title: '前端技術棧', description: '前端白皮書', head: [ ['link', { rel: 'manifest', href: '/manifest.webmanifest' }], ['meta', { name: 'theme-color', content: '#3eaf7c' }] ], alias: { '@pub': path.resolve(__dirname, './public'), }, markdown: { importCode: { handleImportPath: (str) => str.replace(/^@src/, path.resolve(__dirname, 'src')), }, extractTitle: true }, // ======================設定外掛==================================== plugins: [ registerComponentsPlugin({ // 設定項 componentsDir: path.resolve(__dirname, './components') }) ], // ======================設定外掛 End================================= theme: defaultTheme({ // URL logo: 'https://vuejs.org/images/logo.png', // 頂部導航 navbar: navbar, // 側邊欄 sidebar: sidebar, sidebarDepth: 2, // e'b將同時提取markdown中h2 和 h3 標題,顯示在側邊欄上。 lastUpdated: true // 檔案更新時間:每個檔案git最後提交的時間 }) }
在.vuepress
資料夾中新建components資料夾,裡面存放vue元件,檔案結構如下:
├─.vuepress │ └─ components │ │ └─ Card.vue │ └─ config │ │ └─ navbar.js │ │ └─ sidebar.js │ └─ public │ │ └─ images │ └─ config.js
至此md檔案就能無需引入即可自動識別.vuepress/components/
下所有的vue元件了。繼續完成下面的步驟,就可以看到專案中使用的效果。
Card.vue
檔案內容如下,這個元件個人可以因需而定,這裡只做個參照,和後面的效果對應上。key
這裡沒有設定業務 ID 暫且使用 k
來代替。
<template> <div class="g-card-link"> <div v-for="(item,k) in value" class="g-card-item" :key="k"> <a :href="item.link" rel="external nofollow" target="_blank" :title="item.title">{{item.title}}</a> </div> </div> </template> <script setup> import { ref, defineProps } from 'vue'; const props = defineProps({ defaultValue:String }) const value = ref(props.defaultValue); </script> <style lang="scss"> button {background-color: #4e6ef2} .g-card-link { display: flex; flex-wrap: wrap; gap:10px; text-align: center; line-height: 38px; .g-card-item { background: blue; width: 113px; max-width: 138px; height: 38px; cursor: pointer; overflow: hidden; } .g-card-item:nth-of-type(2n) { background: rgba(44,104,255,.1); } .g-card-item:nth-of-type(2n+1) { background: rgba(56, 203, 137, .1); } } </style>
在 docs/docs/README.md
檔案直接引入Card.vue
,當然檔案路徑你可以自由選擇。這裡我們給元件傳了資料,如果沒有資料互動會更簡單,直接參照就行了。
--- data: 2022-06-14 lang: zh-CN title: Docs 常用檔案 description: 收集常用的檔案 --- # Docs 收集精編常用的檔案... <div v-for="(item,k) in linkList"> <h3>{{item.title}}</h3> <div> <card :defaultValue="item.children"/> </div> </div> <script setup> import { ref } from 'vue'; const linkList = ref([]); linkList.value = [ { title: 'React UI 元件庫', children: [ { title: 'Ant Design', link: 'https://ant.design/docs/react/introduce-cn' },{ title: 'Bootstrap', link: 'https://react-bootstrap.github.io/getting-started/introduction' },{ title: 'Material UI', link: 'https://mui.com/material-ui/getting-started/overview/' } ] },{ title: 'Vue UI 元件庫', children: [ { title: 'Element', link: 'https://element.eleme.io/#/zh-CN/component/installation' },{ title: 'Element Plus', link: 'https://element-plus.org/zh-CN/component/button.html' },{ title: 'Vant', link: 'https://youzan.github.io/vant/#/zh-CN' },{ title: 'View Design', link: 'https://www.iviewui.com/view-ui-plus/guide/introduce' } ] }, { title: '動畫庫', children: [ { title: 'Animate.css', link: 'https://animate.style/' } ] } ] </script>
至此元件已經引入到頁面中可,我們來看看效果 ☞ 傳送門 :
以上就是Vuepress使用vue元件實現頁面改造的詳細內容,更多關於Vuepress vue元件頁面改造的資料請關注it145.com其它相關文章!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45