首页 > 其他分享 >基于 Vue BootStrap的迷你Chrome插件

基于 Vue BootStrap的迷你Chrome插件

时间:2023-06-02 18:06:52浏览次数:44  
标签:index 插件 Vue Chrome js item popup data

安装

  • 安装 Visual Studio Code 和Chrome, 自行翻墙

详细安装这里略过

  • 安装包管理工具

用管理员身份运行cmd,输入:

npm install -g bower (全局安装)

创建

  • 新建目录brochure 进入目录运行
bower install bootstrap@3 vue axios

基于 Vue BootStrap的迷你Chrome插件_html

成功!

  • 新建 css, js 目录,并在对应的目录下面新建 index.css 和 index.js文件
  • 新建 img 目录,导入图标
  • 新建 manifest.json 写入插件配置
{
      "manifest_version": 2,
      "name": "发现小册",
      "version": "1.0.0",
      "description": "掘金已发布小册查看插件",
      "icons": {
          "48": "img/48/book.png"
      },
      "browser_action": {
          "default_icon": "img/48/book.png",
          "default_title": "掘金小册查看插件",
          "default_popup": "popup.html" (要与外部的入口的html文件名相同)
      },
      "permissions": [
          "contextMenus",  (在Chrome的右键菜单中增加自己的菜单项)
          "tabs",
          "notifications",
          "webRequest",
          "webRequestBlocking",
          "storage"
      ],
      "content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'self'",
      "content_scripts": [
          {
              "matches": [
                  "<all_urls>"
              ],
              "js": [
                  "js/index.js"
              ]
          }
      ]
  }

注意 : content_security_policy 简称CSP, 是Chrome扩展引入为了减少XSS的发生, 这里我们要设置 "content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'self'" ,
不然插件引入的vue没法识别,插件会报错。

  • 新建 popup.html 的项目入口文件
  • 项目基本构建完成

项目目录

基于 Vue BootStrap的迷你Chrome插件_html_02

代码

index.css 代码

body {
    width: 350px;
    height: 400px;
    overflow-y: scroll;
}

.row {
    border-bottom: .5px solid #e6e8e8;
    padding-bottom: 10px;
    padding-top: 10px;

}

.desc {
    line-height: 20px;
    height: 20px;
    font-size: 12px;
}

.title {
    font-size: 16px;
    font-weight: 600;
    color: #ed7b11;
    margin-top: 0px;
}

.info {
    margin-top: 18px;
}

.author {
    font-weight: blod;
}

.author-desc,
.message,
.buy-number {
    color: #ccc;
}

.price-text {
    color: #ed7b11;
}

span {
    padding: 2px;
}

popup.html 代码

<link rel="stylesheet" href="./bower_components/bootstrap/dist/css/bootstrap.css">
<link rel="stylesheet" href="css/index.css">
<div class="container" id="app"></div>
<script src="./bower_components/vue/dist/vue.js"></script>
<script src="./bower_components/axios/dist/axios.js"></script>
<script src="js/index.js"></script>

数据请求与数据绑定

  • index.js 添加数据请求

获取数据的地址为第三方的数据地址

var vm = new Vue({
    el: '#app',
    data: {
        infoList: []
    },
    created() {
        const _this = this;
        const total = 3;
        const base_url = 
        for (let number = 1; number < total; number++) {
            axios.get(base_url + number)
                .then(function (res) {
                    const data = res.data.d;
                    if (data != null && res.data.m === 'ok') {
                        _this.infoList.push(...data);
                    }
                })
                .catch(function (err) {
                    console.log(err);
                });
        }
    }
});
  • 在popup.html的 .container的div下添加数据绑定
<div class="row" v-for="item in infoList">
        <div class="box">
            <div class="col-xs-4">
                <img v-bind:src="item.img" alt="..." width=100 height=150>
            </div>
            <div class="col-xs-8">
                <h4 class="title"> {{item.title}}</h4>
                <p class="desc">{{item.desc}}</p>
                <br>
                <div class="info">
                    <span class="author">{{item.userData.username}}</span><span class="author-desc">{{item.userData.jobTitle}}</span>
                    <br>
                    <span class="price-text">¥{{item.price}}</span>
                    <span class="message">{{item.lastSectionCount}}小节</span>
                    <span class="buy-number">{{item.buyCount}} 人</span>
                </div>
            </div>
        </div>
    </div>

项目启动

项目完成后,打开chrome 浏览器 找到更多工具下面的扩展程序,选择记载已压缩的扩展程序,

然后选择项目brochure

基于 Vue BootStrap的迷你Chrome插件_Vue BootStrap_03

出现这个表示安装成功,点击导航行

运行效果

谢谢!基于 Vue BootStrap的迷你Chrome插件

注:本文著作权归作者,由demo大师发表,拒绝转载,转载需要作者授权


标签:index,插件,Vue,Chrome,js,item,popup,data
From: https://blog.51cto.com/u_7583030/6404425

相关文章

  • mpvue两小时,产出一个《点钞辅助工具》小程序
    CoffeeScript,Pug,Sass使用以下内容门槛较高,如看不懂或觉得需要继续了解,请前往官网查阅相关文档,谢谢。文章不做技术语法解读,如不清楚,请前往对应官网了解细节。启动项目由于使用了CS,Pug,Sass等非主流方式,所以便多出了一些流程:根据官方拉取快速启动项目,并命名为“MergeMoney”,不要vuex与......
  • vue中(input组件)textarea文本提交到后端数据库,前端输出保存换行回车及修改显示
    1.修改css中white-space属性为“pre-warp”在css中white-space属性用来控制容器的文本中带有空白符、制表符、换行符等的显示,取值有:normal:默认,忽略文本中所有的空白、换行符;只有文本存在<br>或文本达到框的约束时,文本才会换行nowrap:和normal类似,忽略文本中所有的空白、换行......
  • vue项目中实现监听键盘按键事件
    created(){this.keyDown();},beforeDestroy(){this.keyDownReview();},methods:{//按键恢复keyDownReview(){document.onkeydown=function(event){vare=event||window.event;e.returnValue=true;};},......
  • vue-element-admin安装依赖报错问题
    vue-element-admin安装依赖的时候报以下错误npmERR!codeENOENTnpmERR!syscallspawngitnpmERR!pathgitnpmERR!errno-4058npmERR!enoentAnunknowngiterroroccurrednpmERR!enoentThisisrelatedtonpmnotbeingabletofindafilenpmERR!enoentnpmE......
  • ubuntu 安装chrome
    chrome官网上不去,国内的下载镜像里也没有找到Linux版的chrome,怎么办呢?网上逛了逛,发现网友实验出chrome下载的地址是可用的,见如下:https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb我们要做的就是静静的等待它下载完成:$wgethttps://dl.google.com......
  • MyBatis常见好用的插件
    阅读文本大概需要3分钟。0x01:MybatisPageHelper分页插件在没有分页插件之前,写一个分页需要两条SQL语句,一条查询一条统计,然后才能计算出页码,这样的代码冗余而又枯燥,更重要的一点是数据库迁移,众所周知不同的数据库分页写法是不同的,而Mybatis不同于Hibernate的是它只提供动态SQL和结......
  • Vue修改数组、对象并且触发视图更新的方法以及原理
    一、数组 items:['a','b','c'];//一个普通的数组this.items[1]='x';//修改已有项this.items[3]='d';//新增一项this.item.length=2;//修改数组的长度//一个对象数组msg:[{id:1,selected:true,title:'aaa',},{i......
  • Vue3 中 ref 的优势
    1.允许使用任何值类型2. 一个包含对象类型值的ref可以响应式地替换整个对象:constobjectRef=ref({count:0})//这是响应式的替换objectRef.value={count:1}3. ref被传递给函数或是从一般对象上被解构时,不会丢失响应性:constobj={foo:ref(1),......
  • Vue3 reactive 定义一个变量时,如何具有响应式?
    错误示范:constarr=reactive([]);constload=()=>{constres=[2,3,4,5];//假设请求接口返回的数据//方法1失败,直接赋值丢失了响应性//arr=res;//方法2这样也是失败//arr.concat(res);//方法3可以,但是很麻烦res.forEach(e=>{......
  • app直播源代码,vue+Ant design a-table分页器使用
    app直播源代码,vue+Antdesigna-table分页器使用 vue+Antdesigna-table分页器使用 当前页current设置生效 <a-table:columns="columns":data-source="detail":pagination="pagination"rowKey="id"@change="tablePaginationChange"......