详解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日

相关文章

  • ionic cordova一次上传多张图片(类似input file提交表单)的实现方法

    一、背景 在移动端开发中,经常会遇到需要上传多张图片的需求,例如上传头像、相册、动态图片等。Ionic是一个基于AngularJS和Cordova的开发框架,提供了丰富的插件和能力,可以便捷地实现这类功能。 二、实现思路 实现多张图片上传的关键在于,需要通过Cordova的File Transfer插件将多张图片上传到服务器。因为Cordova File插件…

    Vue 2023年5月28日
    00
  • 在 Vue 中控制表单输入方法详解

    让我为您详细解释如何在Vue中控制表单输入。 1. 控制表单输入 在Vue中,表单输入可以双向绑定数据,使用 v-model 指令可以轻松实现。 1.1 普通表单元素 对于普通的表单元素,例如输入框和选择框,你可以使用 v-model 指令将其值与Vue组件的data进行绑定。在数据更新时,输入框会自动更新。 下面是一个示例: <template&gt…

    Vue 2023年5月27日
    00
  • Vue实现双向绑定的方法

    Vue实现双向绑定的方法主要有以下两种: 1. 使用v-model指令 Vue中提供了v-model指令,这是用于实现表单元素双向绑定的最简单方式。v-model可以用于input、textarea、select等表单元素,可以简洁地实现数据的双向绑定,不需要手动监听事件。 我们来看一个输入框的示例,实现输入框中的内容实时展示在页面上,同时页面上对该值的修改…

    Vue 2023年5月28日
    00
  • Vue请求JSON Server服务器数据的实现方法

    当你使用Vue来开发Web应用时,你需要获取外部数据并在网页应用中展示这些数据。JSON Server是一个快速的、简单的node.js库,可以模拟RESTful APIs,生成假数据,并对数据进行增删改查操作。下面是在Vue中如何实现JSON Server服务器数据请求。 1. 安装JSON Server 首先,你需要安装JSON Server。在命令行中…

    Vue 2023年5月28日
    00
  • Vue.js实现的购物车功能详解

    下面是“Vue.js实现的购物车功能详解”的完整攻略。 确定需求 在开始Vue.js实现购物车功能之前,我们需要先明确我们的需求,包括: 需要展示商品列表; 需要将商品添加到购物车中; 需要展示购物车中的商品列表; 需要对购物车中的商品进行增删操作; 需要实时展示购物车总价。 准备工作 实现此功能需要准备以下工作: 安装Vue.js的开发环境; 准备好商品数…

    Vue 2023年5月27日
    00
  • VUEX-action可以修改state吗

    VUEX是一个专为Vue.js应用程序开发的状态管理模式,其中重要的概念就是state、mutation、action和getter。其中,state是应用状态的存储容器,mutation是修改state的唯一方法,action是提交mutation的方法,而getter则是从state中派生出状态。 回到问题上,VUEX-action可以修改state吗?…

    Vue 2023年5月28日
    00
  • vue+element的表格实现批量删除功能示例代码

    下面是 “vue+element的表格实现批量删除功能示例代码” 的完整攻略: 1. 安装 Element UI 和 Axios 在开始之前,你需要先安装 Element UI 和 Axios,可以使用 npm 来安装: npm install element-ui axios –save 同时在文件中引入: import Vue from ‘vue’ i…

    Vue 2023年5月28日
    00
  • Bootstrap时间选择器datetimepicker和daterangepicker使用实例解析

    Bootstrap时间选择器datetimepicker和daterangepicker使用实例解析 Bootstrap时间选择器(datetimepicker)和日期范围选择器(daterangepicker)是基于Bootstrap框架的时间和日期选择器插件,能够让用户轻松快速地选择时间和日期。在本文中,我们将详细讲解如何使用datetimepicker…

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