В последнее время появился очень популярный проект с открытым исходным кодом — VuePress, разработанный You Xiaoyou.VuePress позволяет очень удобно писать код Vue в документах Markdown, а VuePress выполняет некоторую оптимизацию скомпилированных HTML-файлов для поисковых систем. Кроме того, VuePress сделал несколько расширений для файлов Markdown, чтобы сделать его более мощным.Эта статья будет посвящена созданию статического блога на Github.
Добавьте VuePress в свой проект
Первый шаг — установить VuePress для вашего проекта, если в коде вашего проекта его нет.package.json
файл, пожалуйста, выполнитеnpm init
.
npm install -D vuepress // 或者 yarn add -D vuepress
// 在项目根目录下新加 docs 文件夹
mkdir docs
// 新建一个 Markdown 文件
echo "# Hello VuePress!" > docs/README.md
Второй шагpackage.json
Добавьте в него эти скрипты и запустите.
// package.json
"scripts": {
"docs:dev": "vuepress dev docs",
"docs:build": "vuepress build docs"
}
// 本地运行文档
npm run docs:dev
// 编译打包生产静态 HTML 文件
npm run docs:build
VuePress сделал некоторые расширения для Markdown, чтобы мы могли использовать синтаксис YAML в файлах Markdown, VuePress использует---
чтобы изолировать синтаксис Markdown.
---
// 该语法表示使用当前页面标题自动生成侧边栏
sidebar: auto
---
Базовая конфигурация VuePress
Через файл конфигурации VuePress мы можем использовать некоторые пользовательские функции, такие как добавление боковых панелей, добавление панелей навигации и т. д. первый вdocs
Создайте новый в каталоге.vuepress
каталог и создайте новый в каталогеconfig.js
.
- VuePress упаковывает файлы по умолчанию в
.vuepress/dist
В каталоге мы можем пройтиdest
Свойства изменяют выходной каталог файла, например, вывод файла в корневой каталог проекта.dist
папка. - установив
repo
свойство, VuePress добавит ссылку на репозиторий Github на панели навигации. - В VuePress, установив
title
свойство для установки заголовка сайта, он будет использоваться в качестве префикса для всех заголовков страниц, а в теме по умолчанию он будет применен к панели навигации. - При использовании VuePress для написания блога и публикации его на страницах Github мы можем столкнуться с проблемой, показанной на рисунке ниже: страница уже существует, но стили и js не загружаются успешно. Мы можем настроить
base
свойства для решения этой проблемы,base
Значение свойства по умолчанию равно/
. Если вы собираетесь развернуть свой код наtaoxusheng.github.io/mt-blog/, Такbase
свойство должно быть установлено в/mt-blog/
.Примечание. Значение базового свойства всегда начинается с / и заканчивается на / .
// dcos/.vuepress/config.js
module.exports = {
title: 'my-blog', // 设置网站标题
dest: './dist', // 设置输出目录
base: '/mt-blog/',// 设置站点根路径
repo:
'https://github.com/TaoXuSheng/mt-blog' // 添加 github 链接
}
Панель навигации и боковая панель
В VuePress, если вы хотите добавить панель навигации на свой веб-сайт, вы можете установитьthemeConfig.nav
чтобы добавить навигационные ссылки, установивthemeConfig.sidebar
свойство, чтобы добавить боковую панель. Если ваша навигация представляет собой раскрывающийся список, вы можете сделать это с помощьюitems
свойства для установки.
// dcos/.vuepress/config.js
module.exports = {
themeConfig: {
// 添加导航栏
nav: [
{ text: 'vue', link: '/' },
{ text: 'css', link: '/blog/' },
{ text: 'js', link: '/zhihu/' },
{
text: 'github',
// 这里是下拉列表展现形式。
items: [
{ text: 'focus-outside', link: 'https://github.com/TaoXuSheng/focus-outside' },
{ text: 'stylus-converter', link: 'https://github.com/TaoXuSheng/stylus-converter' },
]
}
],
// 为以下路由添加侧边栏
sidebar: ['/', '/git', '/vue']
}
}
Иногда нам может понадобиться многоуровневая боковая панель, например, система блогов, где некоторые похожие статьи размещаются в одном и том же каталоге, и мы хотим добавить боковую панель для всех файлов в этих каталогах, например каталог, подобный следующему.
docs
├── README.md
├── vue
│ ├─ README.md
│ ├─ one.md
│ └─ two.md
└── css
├─ README.md
├─ three.md
└─ four.md
Для боковой панели многоуровневого каталога нам нужно использовать описание объекта, следующее / git / представляет в каталоге git, по умолчанию указывает на файл /Git/readme.md.
// dcos/.vuepress/config.js
module.exports = {
themeConfig: {
sidebar: {
'/vue/': [
'one',
'two'
],
'/css/': [
'three',
'four'
]
}
}
}
В зарегистрированных компонентах VuePress
Пишем код Vue в VuePress, а мы обычно пишемотдельный файлТочно так же иногда нам может понадобиться использовать библиотеку компонентов пользовательского интерфейса Vue. НапримерElement,MintПодождите, обычно, когда мы используем эти библиотеки компонентов пользовательского интерфейса в наших проектах, мы регистрируем их единообразно в файлах main.js или botostrap.js. К счастью, эта функция также поддерживается в VuePress, мы можем создать.vuepress/enhanceApp.js
файл для выполнения некоторой конфигурации на уровне приложения, этот файл exprot
default — это функция ловушки, в которой вы можете выполнять некоторые специальные действия, такие как добавление ловушек глобальной маршрутизации, регистрация внешних библиотек компонентов.
// .vuepress/enhanceApp.js
// 全局注册 Element 组件库
import Vue from 'vue'
import Element from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css'
export default ({
Vue,
options,
router
}) => {
Vue.use(Element)
}
В нормальном развитии Vue, иногда нам может потребоваться сделать некоторые пользовательские компоненты, в VuePess мы можем.vuepress/components
Запишите наши пользовательские компоненты в каталог, VuePress просматривает все компоненты в каталоге во время компиляции.*.vue
файлов и видеть их зарегистрированными как глобальные компоненты.
// 注册一个自定义组件
// docs/.vuepress/components/hello.vue
<template>
<div class="cpt-hello">Hello VuePress Demo</div>
</template>
Таким образом, нам не нужно регистрировать эти компоненты при написании кода Vue в файлах Markdown, и мы можем использовать их непосредственно в Markdown.
// docs/.vuepress/vue/README.md
<template>
<div class="test-demo">
{{ msg }}
<my-hello></my-hello>
<el-button>button</el-button>
</div>
</template>
<script>
export default {
data () {
return {
msg: 'Hello VuePress!'
}
}
}
</script>
Развернуть на страницах Github
После того, как мы написали документ, мы подойдем к тому месту, которое нас больше всего волнует, как запушить упакованный код в ветку gh-pages удаленного хранилища, в Интернете должно быть много статей, описывающих, как это сделать, но многие методы более хлопотны, к счастью, есть инструменты, которые позаботятся об этом за нас.
// 1.下载 gh-pages 包
npm install -D gh-pages
// 2. 在 package.json 文件上添加脚本命令
"scripts": {
"docs:dev": "vuepress dev docs",
"docs:build": "vuepress build docs",
// 上面我修改了 VuePress 的输出目录,所以您如果没有修改 .vuepress/config.js
// 的 dest 属性,应该将这里的 dist 改为 .vuepress/dist
"deploy": "gh-pages -d dist",
"deploy:build": "npm run docs:build && gh-pages -d dist"
}
// 3. 打包并推送到 gh-pages 分支
npm run deploy:build
// 4.打开你的 Github pages, 地址是 https://<yourname>/github.io/<repo>
Суммировать
По сравнению с Hexo, VuePress легче начать и имеет более мощные функции.Например, вы можете регистрировать пользовательские компоненты в VuePress, а писать Vue во VuePress так же, как обычно.Затраты на обучение практически нулевые. Поэтому, если вы открываете библиотеку, связанную с Vue, или другой проект, вы можете использовать VuePress в качестве инструмента для редактирования документов. Хотя содержание VuePress раскрыто не полностью, после прочтения этой статьи я думаю, что вы сможете получить общее представление о VuePress и, по крайней мере, быстро создать блог.Если вы хотите узнать больше о VuePress, обратитесь кКитайский API Vuepress. Последняя волна проектов Amway с открытым исходным кодом, над которыми я работаюstylus-converter, Заинтересованные студенты могут участвовать вместе Желаю вам счастливой жизни и счастливых первомайских праздников.