1. 首页
  2. 技术知识

VuePress-Vue驱动的静态网站生成器入门教程

特点

  • 简洁至上,以 Markdown 为中心的项目结构,以最少的配置帮助你专注于写作。
  • Vue 驱动,享受 Vue + webpack 的开发体验,可以在 Markdown 中使用 Vue 组件,又可以使用 Vue 来开发自定义主题。
  • 高性能,VuePress 会为每个页面预渲染生成静态的 HTML,同时,每个页面被加载的时候,将作为 SPA 运行。

介绍

VuePress 由两部分组成:第一部分是一个极简静态网站生成器 (opens new window),它包含由 Vue 驱动的主题系统和插件 API,另一个部分是为书写技术文档而优化的默认主题,它的诞生初衷是为了支持 Vue 及其子项目的文档需求。

每一个由 VuePress 生成的页面都带有预渲染好的 HTML,也因此具有非常好的加载性能和搜索引擎优化(SEO)。同时,一旦页面被加载,Vue 将接管这些静态内容,并将其转换成一个完整的单页应用(SPA),其他的页面则会只在用户浏览到的时候才按需加载。


它是如何工作的?

事实上,一个 VuePress 网站是一个由 Vue、Vue Router和 webpack驱动的单页应用。如果你以前使用过 Vue 的话,当你在开发一个自定义主题的时候,你会感受到非常熟悉的开发体验,你甚至可以使用 Vue DevTools 去调试你的自定义主题。

在构建时,我们会为应用创建一个服务端渲染(SSR)的版本,然后通过虚拟访问每一条路径来渲染对应的HTML。这种做法的灵感来源于 Nuxt (opens new window)的 nuxt generate 命令,以及其他的一些项目,比如 Gatsby


快速上手

1、创建并进入一个新目录

mkdir vuepress-starter && cd vuepress-starter2、使用你喜欢的包管理器进行初始化

yarn init # npm init3、将 VuePress 安装为本地依赖

我们已经不再推荐全局安装 VuePress

yarn add -D vuepress # npm install -D vuepress4、创建你的第一篇文档

mkdir docs && echo ‘# Hello VuePress’ > docs/README.md5、在 package.json 中添加一些 scripts

这一步骤是可选的,但我们推荐你完成它。在下文中,我们会默认这些 scripts 已经被添加。

{  “scripts”: {    “docs:dev”: “vuepress dev docs”,    “docs:build”: “vuepress build docs”  }}6、在本地启动服务器

yarn docs:dev # npm run docs:devVuePress 会在 http://localhost:8080 (opens new window)启动一个热重载的开发服务器。

现在,你应该已经有了一个简单可用的 VuePress 文档。接下来,了解一下推荐的 目录结构 和 VuePress 中的 基本配置。


目录结构

VuePress 遵循 “约定优于配置” 的原则,推荐的目录结构如下:

.├── docs│   ├── .vuepress (可选的)│   │   ├── components (可选的)│   │   ├── theme (可选的)│   │   │   └── Layout.vue│   │   ├── public (可选的)│   │   ├── styles (可选的)│   │   │   ├── index.styl│   │   │   └── palette.styl│   │   ├── templates (可选的, 谨慎配置)│   │   │   ├── dev.html│   │   │   └── ssr.html│   │   ├── config.js (可选的)│   │   └── enhanceAPP.js (可选的)│   │ │   ├── README.md│   ├── guide│   │   └── README.md│   └── config.md│ └── package.json

  • docs/.vuepress: 用于存放全局的配置、组件、静态资源等。
  • docs/.vuepress/components: 该目录中的 Vue 组件将会被自动注册为全局组件。
  • docs/.vuepress/theme: 用于存放本地主题。
  • docs/.vuepress/styles: 用于存放样式相关的文件。
  • docs/.vuepress/styles/index.styl: 将会被自动应用的全局样式文件,会生成在最终的 CSS 文件结尾,具有比默认样式更高的优先级。
  • docs/.vuepress/styles/palette.styl: 用于重写默认颜色常量,或者设置新的 stylus 颜色常量。
  • docs/.vuepress/public: 静态资源目录。
  • docs/.vuepress/templates: 存储 HTML 模板文件。
  • docs/.vuepress/templates/dev.html: 用于开发环境的 HTML 模板文件。
  • docs/.vuepress/templates/ssr.html: 构建时基于 Vue SSR 的 HTML 模板文件。
  • docs/.vuepress/config.js: 配置文件的入口文件,也可以是 YML 或 toml。
  • docs/.vuepress/enhanceApp.js: 客户端应用的增强。

配置文件

如果没有任何配置,这个网站将会是非常局限的,用户也无法在你的网站上X导航。为了更好地自定义你的网站,让我们首先在你的文档目录下创建一个 .vuepress 目录,所有 VuePress 相关的文件都将会被放在这里。你的项目结构可能是这样:

.├─ docs│  ├─ README.md│  └─ .vuepress│     └─ config.js└─ package.json一个 VuePress 网站必要的配置文件是 .vuepress/config.js,它应该导出一个 JavaScript 对象:

module.exports = {  title: ‘Hello VuePress’,  description: ‘Just playing around’}对于上述的配置,如果你运行起 dev server,你应该能看到一个页面,它包含一个页头,里面包含一个标题和一个搜索框。VuePress 内置了基于 headers 的搜索 —— 它会自动为所有页面的标题、h2 和 h3 构建起一个简单的搜索索引。


其他配置格式

你也可以使用 YAML (.vuepress/config.yml) 或是 TOML (.vuepress/config.toml) 格式的配置文件。


主题配置

一个 VuePress 主题应该负责整个网站的布局和交互细节。在 VuePress 中,目前自带了一个默认的主题(正是你现在所看到的),它是为技术文档而设计的。同时,默认主题提供了一些选项,让你可以去自定义导航栏(navbar)、 侧边栏(sidebar)和 首页(homepage) 等,


应用级别的配置

由于 VuePress 是一个标准的 Vue 应用,你可以通过创建一个 .vuepress/enhanceApp.js 文件来做一些应用级别的配置,当该文件存在的时候,会被导入到应用内部。enhanceApp.js 应该 export default 一个钩子函数,并接受一个包含了一些应用级别属性的对象作为参数。你可以使用这个钩子来安装一些附加的 Vue 插件、注册全局组件,或者增加额外的路由钩子等:

// 使用异步函数也是可以的export default ({  Vue, // VuePress 正在使用的 Vue 构造函数  options, // 附加到根实例的一些选项  router, // 当前应用的路由实例  siteData, // 站点元数据  isServer // 当前应用配置是处于 服务端渲染 或 客户端}) => {  // …做一些其他的应用级别的优化}官网:https://vuepress.vuejs.org/zh/觉得效果不错的请帮忙加个关注点个赞,经常分享前端实用开发技巧

原创文章,作者:starterknow,如若转载,请注明出处:https://www.starterknow.com/126500.html

联系我们