VuePress 博客如何快速兼容 PWA

简介: VuePress 博客如何快速兼容 PWA

PWA

PWA,英文全称:Progressive Web Apps, 中文翻译:渐进式 Web 应用。

引用 MDN 的介绍:

PWA 指的是使用指定技术和标准模式来开发的 Web 应用,这同时赋予它们 Web 应用和原生应用的特性。
例如一方面,Web 应用更加易于发现:相比于安装应用,访问一个网站显然更加容易和迅速。你还可以通过链接来分享 Web 应用。

另一方面,原生应用与操作系统可以更加完美的整合,也因此为用户提供了无缝的用户体验。你可以通过安装应用使得它在离线的状态下也可以运行;相较于使用浏览器访问,用户也更喜欢通过点击主页上的图标来访问它们喜爱的应用。
PWA 赋予了我们创建同时拥有以上两种优势的应用的能力。

体验

如果你之前没有了解过 PWA,大概率可能也不明白这是个什么效果,没有关系,我们直接看一个 PWA 应用示例,我们打开 https://m.weibo.cn/,这里是在电脑端打开的:

我们可以看到,在地址栏还有一个安装图标,点击一下,就会弹出安装应用的选项框:

同时,打开 Mac 的启动台,我们会看到已经添加了微博的图标:

点击就会直接打开上面的应用窗口。

简单的来说,我们兼容 PWA,就是想要实现这样的桌面图标的功能,当然了, PWA 其他还有离线缓存、推送通知等功能,这里就不多说了。

开启 PWA

开启 PWA,需要注意三个点:

  1. 提供一个 manifest.json 文件,描述应用的名称、图标等信息
  2. 开启 Service Worker,这个交给现有的 PWA 插件来实现
  3. 开启 HTTPS

实践

1. 安装

插件地址:https://v1.vuepress.vuejs.org/zh/plugin/official/plugin-pwa.html

yarn add -D @vuepress/plugin-pwa
npm install -D @vuepress/plugin-pwa

2. 修改 config.js

module.exports = {
  head: [
    ['link', { rel: 'icon', href: '/logo.png' }],
    ['link', { rel: 'manifest', href: '/manifest.json' }],
    ['meta', { name: 'theme-color', content: '#3eaf7c' }],
    ['meta', { name: 'apple-mobile-web-app-capable', content: 'yes' }],
    ['meta', { name: 'apple-mobile-web-app-status-bar-style', content: 'black' }],
    ['link', { rel: 'apple-touch-icon', href: '/icons/apple-touch-icon-152x152.png' }],
    ['link', { rel: 'mask-icon', href: '/icons/safari-pinned-tab.svg', color: '#3eaf7c' }],
    ['meta', { name: 'msapplication-TileImage', content: '/icons/msapplication-icon-144x144.png' }],
    ['meta', { name: 'msapplication-TileColor', content: '#000000' }]
  ],
  plugins: [
    [
      '@vuepress/pwa',
      {
        serviceWorker: true,
        updatePopup: {
            message: "发现新内容可用",
            buttonText: "刷新"
        }
     }
    ]
  ]
}

3. 添加 manifest.json 等资源

接下来我们添加所需要的资源,在 .vuepress目录下建立 public文件夹,然后添加所需要的文件如 manifest.json文件:

{
    "name": "TypeScript中文文档",
    "short_name": "TypeScriptDocs",
    "display": "standalone",
    "background_color": "#fff",
    "start_url": "/learn-typescript-test/",
    "scope": "/learn-typescript-test/",
    "description": "TypeScript 中文文档 进阶教程",
    "icons": [{
      "src": "logo52.png",
      "sizes": "52x52",
      "type": "image/png"
    },{
       "src": "logo288.png",
       "sizes": "288x288",
       "type": "image/png"
    }]
  }

这其中字段的具体含义,可以查看 MDN 的 Manifest 介绍。

要注意其中的 start_urlscope,如果你使用的是 GitHub 或者 Gitee 仓库的 Pages 服务,并且地址上带了仓库名,你需要将这里的learn-typescript-test替换为你的仓库名,如果是直接的域名,start_url 写成 \,scope写成 .或者直接不写。

然后是补齐所需要的图标图片:

相关文章
|
资源调度 JavaScript 前端开发
VuePress 博客优化之拓展 Markdown 语法
「这是我参与2022首次更文挑战的第1天,活动详情查看:2022首次更文挑战」。
427 0
VuePress 博客优化之拓展 Markdown 语法
|
4月前
|
自然语言处理 JavaScript 网络协议
简单使用vitepress快速搭建一个文档网站
VitePress 是一个静态站点生成器 (SSG),类似的项目有docsify、VuePress、hexo。用 Markdown 编写的内容生成可以轻松部署到任何地方的静态 HTML 页。
92 9
|
8月前
|
资源调度 JavaScript 搜索推荐
《VitePress 简易速速上手小册》第9章 VitePress 的扩展与插件(2024 最新版)
《VitePress 简易速速上手小册》第9章 VitePress 的扩展与插件(2024 最新版)
500 0
|
8月前
|
前端开发 JavaScript 搜索推荐
《VitePress 简易速速上手小册》第4章 博客功能增强(2024 最新版)
《VitePress 简易速速上手小册》第4章 博客功能增强(2024 最新版)
184 0
|
JavaScript 前端开发 API
VuePress 手摸手教你搭建Vue风格的技术文档/博客
通过阿里云云开发平台 VuePress项目手摸手教你快速搭建Vue风格的技术文档/博客。
775 1
VuePress 手摸手教你搭建Vue风格的技术文档/博客
|
JavaScript 前端开发 开发工具
VuePress 手摸手教你搭建一个类Vue文档风格的技术文档/博客
VuePress是尤大为了支持 Vue 及其子项目的文档需求而写的一个项目,VuePress界面十分简洁,并且非常容易上手,一个小时就可以将项目架构搭好。现在已经有很多这种类型的文档,如果你有写技术文档的项目的需求,VuePress绝对可以成为你的备选项之一。 游泳、健身了解一下:博客、前端积累文档、公众号、GitHub VuePress特性: 为技术文档而优化的 内置 Markdown 拓展 在 Markdown 文件中使用 Vue 组件的能力 Vue 驱动的自定义主题系统 自动生成 Service Worker Google Analytics 集成 基于 Git 的 “最后
669 0
VuePress 手摸手教你搭建一个类Vue文档风格的技术文档/博客
|
缓存 JavaScript UED
2022 年了,还不了解 PWA ? 教你 VuePress 博客如何快速兼容 PWA
「这是我参与2022首次更文挑战的第10天,活动详情查看:2022首次更文挑战」。
367 0
2022 年了,还不了解 PWA ? 教你 VuePress 博客如何快速兼容 PWA
|
JavaScript
搭建 VuePress 博客,你可能会用到的一些插件
「这是我参与2022首次更文挑战的第8天,活动详情查看:2022首次更文挑战」。
781 0
搭建 VuePress 博客,你可能会用到的一些插件
|
JavaScript 前端开发 API
做个开源博客学习Vite2 + Vue3 (四)实现博客功能
Composition API,就是组合API的意思,那么是不是应该把js代码分离出来,做成独立的管理类的形式呢?
178 0
做个开源博客学习Vite2 + Vue3 (四)实现博客功能
|
资源调度 JavaScript Windows
做个开源博客学习Vite2 + Vue3 (一)搭建项目
不会 webpack,遇到报错就一头雾水,完全不知道怎么办,而且体积还大速度还慢。 所以尤雨溪做了 vite 后就很向往,只是知道自己水平有限还是等大佬先趟趟坑,等差不多了在跳。
312 0
做个开源博客学习Vite2 + Vue3 (一)搭建项目