详解vue-cli3开发Chrome插件实践

详解vue-cli3开发Chrome插件实践

前言

Vue-CLI 3是Vue.js发布的脚手架构建工具。它易于使用,且支持自定义配置,本文就是基于Vue-CLI 3来开发Chrome插件的。

环境

在开始之前,确保本地已经安装了Node.js和Vue-CLI 3,安装方法如下:

1.下载 Node.js:https://nodejs.org/en/download/ 下载并安装;

2.安装 Vue-cli 3:在命令行下输入以下命令:

npm install -g @vue/cli

初始化项目

创建一个新项目并进入项目目录。

1.初始化项目,则命令行输入:

vue create my-plugin

2.在初始化过程中选择手动配置,选择将插件构建为独立的 Vue 组件库,静态资源目录选择public。

配置

安装必要插件:

npm install --save vue-chrome-extension

在src目录下创建background.js文件,用来监听事件和请求:

console.log('background:', 'OK')

在src目录下创建popup.vue文件,用来渲染插件:

<template>
  <div>
    {{ message }}
  </div>
</template>

<script>
  export default {
    data () {
      return {
        message: 'Hello world!'
      }
    }
  }
</script>

更新Vue.config.js配置文件

const ChromeExtensionReloaderPlugin = require('webpack-chrome-extension-reloader');

module.exports = {
  configureWebpack: {
    plugins: [
      new ChromeExtensionReloaderPlugin({
        entries: {
          background: 'background',
          popup: 'popup'
        }
      })
    ]
  }
}

打包

修改webpack配置文件,将output.publicPath字段改为"./",webpack会自动根据html根目录展开打包文件。

在命令行下输入以下命令打包:

npm run build

此时,打包文件会生成在根目录的 dist 文件夹内。

加载插件

  1. 打开谷歌浏览器,输入“chrome://extensions” 并进入扩展程序页面。

  2. 把 dist 目录下的文件都放进新建的插件文件夹,然后选择“加载已解压的扩展程序”,选择插件所在的文件夹即可。

示例

下列举两个例子,一个是获取当前标签信息,另一个是获取当前窗口信息。

获取当前标签信息

在popup.vue中添加一个按钮,并绑定click事件:

<template>
  <div>
    <button @click="getTabInfo">获取当前标签信息</button>
    <p>{{ message }}</p>
  </div>
</template>

<script>
const getCurrentTabInfo = () => {
  return new Promise((resolve) => {
    chrome.tabquery.getCurrentTabInfo(resolve)
  })
}

export default {
  data () {
    return {
      message: ''
    }
  },
  methods: {
    async getTabInfo() {
      const tab = await getCurrentTabInfo();
      this.message = `当前标签信息:${JSON.stringify(tab)}`
    }
  }
}
</script>

在manifest.json中添加需要的权限:

"permissions": [
  "tabs"
],

获取当前窗口信息

在popup.vue中添加一个按钮,并绑定click事件:

<template>
  <div>
    <button @click="getWindowInfo">获取当前窗口信息</button>
    <p>{{ message }}</p>
  </div>
</template>

<script>
const getCurrentWindowInfo = () => {
  return new Promise((resolve) => {
    chrome.windows.getCurrent(resolve)
  })
}

export default {
  data () {
    return {
      message: ''
    }
  },
  methods: {
    async getWindowInfo() {
      const window = await getCurrentWindowInfo();
      this.message = `当前窗口信息:${JSON.stringify(window)}`
    }
  }
}
</script>

在manifest.json中添加需要的权限:

"permissions": [
  "windows"
],

结语

以上是使用Vue-CLI 3开发Chrome插件的详细过程,在本文中,我们简单介绍了Vue-CLI 3的使用以及使用插件开发Chrome扩展程序的方法。如果您还有其他的问题或者不理解的地方,请在评论区留言。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解vue-cli3开发Chrome插件实践 - Python技术站

(0)
上一篇 2023年5月27日
下一篇 2023年5月27日

相关文章

  • Vue实现指令式动态追加小球动画组件的步骤

    下面是Vue实现指令式动态追加小球动画组件的步骤: 第一步:创建小球动画组件 首先,在Vue中创建一个小球动画组件(例如Ball组件),可以使用CSS3实现小球的动画效果。以下是一个简单的Ball组件示例: <template> <div class="ball-container"> <div class=…

    Vue 2023年5月28日
    00
  • JavaScript实现生成动态表格和动态效果的方法详解

    针对“JavaScript实现生成动态表格和动态效果的方法详解”这个话题,我将从如下几个方面进行详细讲解: 动态生成表格的基本方法 动态添加行和列的方法 动态调整表格样式的方法 动态效果的实现方法 下面依次详细讲解。 1. 动态生成表格的基本方法 要动态生成表格,可以通过javascript中的document.createElement()方法来创建一个表…

    Vue 2023年5月28日
    00
  • vue 对象添加或删除成员时无法实时更新的解决方法

    问题描述: 在Vue对象中,如果添加或删除了成员,页面并不能实时更新,需要手动调用$set或者$delete方法才能实现更新。本文将介绍如何解决这个问题。 解决方法: Vue.js提供了一个响应式系统,用于实时更新页面。这个响应式系统依赖于Vue对象的data属性。如果需要添加或删除Vue对象的成员,请不要直接修改Vue对象本身的成员,而是使用Vue.set…

    Vue 2023年5月28日
    00
  • vue实现点击按钮下载文件功能

    以下是详细讲解“vue实现点击按钮下载文件功能”的完整攻略: 1. 准备工作 在实现点击按钮下载文件功能之前,我们需要先完成以下准备工作: 1.1 确定下载文件的文件路径 要下载的文件必须事先确定好其文件路径。在Vue项目中一般会将需要下载的文件放在public目录下,因为这些文件可以直接被访问。 1.2 安装file-saver库 在Vue项目中,文件下载…

    Vue 2023年5月28日
    00
  • Vue.js中this如何取到data和method里的属性详解

    对于Vue.js项目中,我们经常需要在代码中引用Vue实例中的属性或方法。在此过程中,我们需要清楚地了解this关键字的作用和作用域。本文将详细讲解如何在Vue.js中获取data和method中的属性。 this关键字的作用和作用域 在Vue.js中,this关键字是指Vue实例的上下文。Vue实例中的属性和方法都可以通过this在相应的位置中访问。但是,…

    Vue 2023年5月28日
    00
  • Vue3之路由跳转与参数获取方式

    下面是关于Vue3路由跳转与参数获取的完整攻略。 1. 安装Vue Router 在开始使用Vue3路由时,需要先安装Vue Router。可以通过npm安装,命令如下: npm install vue-router@4.0.0-beta.8 安装完成后,在main.js中引入Vue Router并使用。 import { createRouter, cre…

    Vue 2023年5月27日
    00
  • vue 动态样式绑定 class/style的写法小结

    那我来详细讲解“Vue 动态样式绑定 class/style 的写法小结”。 1. 绑定 class Vue.js 提供了一种叫做:class的指令,可以通过数据绑定的方式动态地设置一个 HTML 元素的类名。语法为: <div :class="{ className: condition }"></div> 其中…

    Vue 2023年5月27日
    00
  • vue中使用Axios最佳实践方式

    下面就是关于”vue中使用Axios最佳实践方式”的完整攻略: 确定请求的方式 在使用Axios时,我们需要确定请求的方式,可以使用get、post、put、delete等方式,同一个接口的不同请求方式可以得到不同的数据。如需向后端发起请求,需要在axios对象中添加请求方式,具体操作如下: import axios from ‘axios’ // 设置请求…

    Vue 2023年5月28日
    00
合作推广
合作推广
分享本页
返回顶部