在vue中使用antV-G2展示散点图

2023-11-14

   介绍

在vue中使用antV-G2展示散点图

G2 是一套基于图形语法理论的可视化底层引擎,以数据驱动,提供图形语法与交互语法,具有高度的易用性和扩展性。使用 G2,你可以无需关注图表各种繁琐的实现细节,一条语句即可使用 Canvas 或 SVG 构建出各种各样的可交互的统计图表。

一、安装 antV-G2

通过 npm 安装

npm install @antv/g2 --save

成功安装完成之后,即可使用 import 或 require 进行引用。

import { Chart } from '@antv/g2';

浏览器引入

既可以通过将脚本下载到本地也可以直接引入在线资源:

<!-- 引入在线资源,选择你需要的 g2 版本以替换 version 变量 -->
<script src="https://gw.alipayobjects.com/os/lib/antv/g2/{{version}}/dist/g2.min.js"></script>
<!-- 引入本地脚本 -->
<script src="./g2.js"></script>

使用 script 标签引入 G2 资源时,挂载在 window 上的变量名为 G2,所以在上述实例中需要加上 G2 的前缀。如下:

const chart = new G2.Chart({
  /* your options */
});

二、在vue中使用antV-G2展示柱状图

创建 div 图表容器

//html布局
<template>
<div class="container" id="container"></div>
</template>

//对应的CSS样式
<style lang="scss">
body{ background: #222;}
.container{width:800px; height: 800px; margin: 100px auto;}
</style>

在data(){}中准备好将要展示的图表数据

data(){
    return {
        chart:null,//图表对象
        showData:[//图表中将要显示的数据
                {
                    "year": "1951 年",
                    "sales": 38,
                    "group": "分组1"
                },
                {
                    "year": "1951 年",
                    "sales": 48,
                    "group": "分组1"
                },
                {
                    "year": "1952 年",
                    "sales": 52,
                    "group": "分组1"
                },
                {
                    "year": "1952 年",
                    "sales": 62,
                    "group": "分组1"
                },
                {
                    "year": "1956 年",
                    "sales": 61,
                    "group": "分组1"
                },
                {
                    "year": "1957 年",
                    "sales": 105,
                    "group": "分组1"
                },
                {
                    "year": "1958 年",
                    "sales": 48,
                    "group": "分组1"
                },
                {
                    "year": "1959 年",
                    "sales": 38,
                    "group": "分组1"
                },
                {
                    "year": "1960 年",
                    "sales": 38,
                    "group": "分组1"
                },
                {
                    "year": "1962 年",
                    "sales": 38,
                    "group": "分组1"
                },
                {
                    "year": "1951 年",
                    "sales": 28,
                    "group": "分组2"
                },
                {
                    "year": "1952 年",
                    "sales": 32,
                    "group": "分组2"
                },
                {
                    "year": "1956 年",
                    "sales": 41,
                    "group": "分组2"
                },
                {
                    "year": "1957 年",
                    "sales": 45,
                    "group": "分组2"
                },
                {
                    "year": "1957 年",
                    "sales": 15,
                    "group": "分组2"
                },
                {
                    "year": "1957 年",
                    "sales": 85,
                    "group": "分组2"
                },
                {
                    "year": "1958 年",
                    "sales": 68,
                    "group": "分组2"
                },
                {
                    "year": "1959 年",
                    "sales": 48,
                    "group": "分组2"
                },
                {
                    "year": "1960 年",
                    "sales": 28,
                    "group": "分组2"
                },
                {
                    "year": "1962 年",
                    "sales": 18,
                    "group": "分组2"
                }
                ],
    }
},

创建chart

//创建chart
createChart(){
    this.chart = new Chart({
        container: 'container',//chart容器id
        autoFit: false,//图表是否自适应容器宽高,默认为 false
        width: 800,//图标宽度
        height: 400,//图表高度
        padding: [40, 80, 80, 140],//图表内边距,依次为:上,右,下,左
        // defaultInteractions:"ellipsis-text",//配置图表默认交互,仅支持字符串形式。G2 默认支持的交互有 'tooltip', 'legend-filter', 'legend-active', 'continuous-filter', 'ellipsis-text'
        pixelRatio:window.devicePixelRatio,//设置设备像素比,默认取浏览器的值 window.devicePixelRatio
        renderer:"canvas",//指定渲染引擎,默认使用 canvas。可选:'canvas' | 'svg'
        theme:"dark",//配置主题,目前 g2 默认有 dark 主题模式,如需要自定义配置,可以先通过 registerTheme 注册主题,再设置主题 key。
        visible:true,//chart 是否可见,默认为 true,设置为 false 则会隐藏。
    });
},

设置展示数据 showData

//设置数据
setChartData(){
    this.chart.data(this.showData);
},

设置坐标轴

//设置坐标轴
setChartAxis(){
    this.chart.scale("sales", {//Y轴 字段是 度量
        nice: false,//是否自动调整 min、max 。默认为false
        min: 10,//度量最小值,
        max: 200,//度量最大值,如果不需要指定最大值可以设置max=null,或者不要填该参数
    });
    //设置Y轴
    //this.chart.axis("sales",false);//不需要Y轴,可以设置false
    this.chart.axis("sales", {//Y轴样式
                grid:{
                    line:{
                    type:"line",
                    style:{
                        // fill:'#ff0000',
                        stroke:"#fff",//网格线颜色
                        opacity:0.3,//网格线透明度
                        lineDash:[1,3],//虚线
                    }
                    },
                },
                label:{
                    style:{
                    fill:"#fff",///Y轴文字颜色
                    fontFamily: "Microsoft YaHei",///Y轴文字字体
                    fontWeight: 400,///Y轴文字粗细
                    fontSize: 12,///Y轴文字大小
                    }
                },
                line:{
                    style:{
                    stroke:"#fff",//坐标轴颜色
                    }
                },
                tickLine: {
                    style:{
                    stroke:"#fff",//刻度线颜色
                    }
                },
                subTickLine:{
                    style:{
                    stroke:"#fff",//小刻度颜色
                    }
                }
            });

    //设置X轴
    //this.chart.axis("year",false);//不需要Y轴,可以设置false
    this.chart.axis("year", {//X轴样式

        label: {
            formatter: (val) => {
            return val;
            // return +val * 100 + '%';
            },
            style:{
            fill:"#fff",//文字颜色
            fontFamily: "Microsoft YaHei",//文字字体
            fontWeight: 400,//文字粗细
            fontSize: 12,//文字大小
            }
        },
        line:{
            style:{
            stroke:"#fff",//坐标轴颜色
            }
        },
        tickLine: {
            style:{
            stroke:"#fff",//刻度线颜色
            }
        },
        subTickLine:{
            style:{
            stroke:"#fff",//小刻度颜色
            }
        }
    });
    
    //设置条形图
    this.chart.coordinate().transpose();
},

设置提示框信息样式

//设置提示框信息样式
setChartTooltip(){
    this.chart.tooltip({
        showMarkers: false,
        domStyles:{
            'g2-tooltip':{
                background:"rgba(00, 00, 00,0.5)",//背景RGBA形式的值
                color:"#ffffff",//文字颜色
                boxShadow:"0px 0px 5px #000000",//阴影大小 阴影颜色 
            },
        },
        customItems: (items) => {//自定义显示的内容格式
            // console.log("items")
            // console.log(items)
            // items[0].name="sales";
            return items;
        },
    });
},

设置图表样式

this.chart.interaction('element-active');//设置图表样式

设置图表散点相关属性【散点样式】

//设置图表散点相关属性【散点样式】
setChartStyle(){
    var line=this.chart.point();
    
    line.size(6)//圆点大小
    .style({ 
        // strokeOpacity:1,
        // fill: this.attrs.style.pointColor,
        stroke:"#fff",//圆点边框颜色
        
        })
    .state({
    // selected:{
    //   style:{
    //     stroke:'red',
    //   }
    // }
    active:{
        style:{
        stroke:"#2681ff",//鼠标经过 边框颜色
        }
    }
    })
    .position("year"+"*"+"sales")//X轴 * Y轴
    .color("group", ["#2681ff","#00ff44","#2611ff","#26aa99"])//参数1:group字段为分组字段,参数2:颜色数组,散点的颜色会循环的从颜色数组中取出来
    .tooltip("year"+"*"+"sales"+"*"+"group")
    .shape('circle');
    //柱子上是否显示值标签
    //line.label(false);//不需要显示,可以设置false
    line.label("sales", {//标签值
            content: (originData) => {
                return originData["sales"]+"万";//设置值标签最终显示的内容
            },
            style: {
                fill: "#fff",
                fontFamily: "Microsoft YaHei",
                fontWeight: 400,
                fontSize: 16,
                // fill: "#ffffff",
            },
            position:"top",//显示位置
        })
},

设置图例

//设置图例
        setChartLegend(){

            // this.chart.legend(false);//设置为false,表示不显示图例

            this.chart.legend("group", {
                position: "bottom",//图例位置:"top" | "top-left" | "top-right" | "right" | "right-top" | "right-bottom" | "left" | "left-top" | "left-bottom" | "bottom" | "bottom-left" | "bottom-right"
                itemName:{
                    style:{
                        fill: "#fff",
                        fontFamily: "Microsoft YaHei",
                        fontWeight: 400,
                        fontSize: 16,
                    }
                },
                pageNavigator: {
                    marker: {//分页器指示箭头配置项
                        style: {
                            // 非激活,不可点击态时的填充色设置
                            inactiveFill: "#fff",//分页器:箭头颜色
                            inactiveOpacity: 1,//分页器:箭头透明度
                            // 默认填充色设置
                            fill: "#fff",//分页器:颜色
                            opacity: 1,//分页器:透明度
                            size: 12,//分页器:大小
                        },
                    },
                    text: {//分页器指示文本配置项
                        style: {
                            fill: "#fff",//分页器:文本颜色
                            fontSize: 12,//分页器:文本大小
                        },
                    },
                },
            });
        },

设置动画

//设置动画
setChartAnimate(){
    
    // this.chart.animate(false);//设置为false,表示不使用动画效果

    this.chart.animate({
        // 初始化时的入场动画
        appear: {
            animation: 'fade-in', // 动画名称:'fade-in'|'fan-in'|'scale-inx'|'scale-iny'|'path-in'|'zoom-in'|'clip-in'
            easing: 'easeQuadIn', // 动画缓动效果
            delay: 100, // 动画延迟执行时间
            duration: 600 // 动画执行时间
        },
        // 更新时的出现动画
        enter: {
            animation: 'fade-in', //动画名称:'fade-in'|'fan-in'|'scale-inx'|'scale-iny'|'path-in'|'zoom-in'|'clip-in'
            easing: 'easeQuadIn', // 动画缓动效果
            delay: 100, // 动画延迟执行时间
            duration: 600 // 动画执行时间
        },
        // 更新时的动画
        leave: {
            animation: 'path-out', //动画名称:'fade-out'|'path-out'|'zoom-out'|'lineWidth-out'
            easing: 'easeQuadIn', // 动画缓动效果
            delay: 100, // 动画延迟执行时间
            duration: 600 // 动画执行时间
        },
        // 更新时的变化动画
        update: {
            animation: 'fade-in', //动画名称:'fade-in'|'fan-in'
            easing: 'easeQuadIn', // 动画缓动效果
            delay: 100, // 动画延迟执行时间
            duration: 600 // 动画执行时间
        },
    })
},

渲染图表

//渲染图表
this.chart.render();

三、效果预览

 

 四、完整vue代码文件

<template>
<div class="container" id="container"></div>
</template>
<script>
import { Chart } from '@antv/g2';

//柱状图
export default {
  components: {},
    name:"test",
    data(){
        return {
            chart:null,//图表对象
            showData:[//图表中将要显示的数据
                    {
                        "year": "1951 年",
                        "sales": 38,
                        "group": "分组1"
                    },
                    {
                        "year": "1951 年",
                        "sales": 48,
                        "group": "分组1"
                    },
                    {
                        "year": "1952 年",
                        "sales": 52,
                        "group": "分组1"
                    },
                    {
                        "year": "1952 年",
                        "sales": 62,
                        "group": "分组1"
                    },
                    {
                        "year": "1956 年",
                        "sales": 61,
                        "group": "分组1"
                    },
                    {
                        "year": "1957 年",
                        "sales": 105,
                        "group": "分组1"
                    },
                    {
                        "year": "1958 年",
                        "sales": 48,
                        "group": "分组1"
                    },
                    {
                        "year": "1959 年",
                        "sales": 38,
                        "group": "分组1"
                    },
                    {
                        "year": "1960 年",
                        "sales": 38,
                        "group": "分组1"
                    },
                    {
                        "year": "1962 年",
                        "sales": 38,
                        "group": "分组1"
                    },
                    {
                        "year": "1951 年",
                        "sales": 28,
                        "group": "分组2"
                    },
                    {
                        "year": "1952 年",
                        "sales": 32,
                        "group": "分组2"
                    },
                    {
                        "year": "1956 年",
                        "sales": 41,
                        "group": "分组2"
                    },
                    {
                        "year": "1957 年",
                        "sales": 45,
                        "group": "分组2"
                    },
                    {
                        "year": "1957 年",
                        "sales": 15,
                        "group": "分组2"
                    },
                    {
                        "year": "1957 年",
                        "sales": 85,
                        "group": "分组2"
                    },
                    {
                        "year": "1958 年",
                        "sales": 68,
                        "group": "分组2"
                    },
                    {
                        "year": "1959 年",
                        "sales": 48,
                        "group": "分组2"
                    },
                    {
                        "year": "1960 年",
                        "sales": 28,
                        "group": "分组2"
                    },
                    {
                        "year": "1962 年",
                        "sales": 18,
                        "group": "分组2"
                    }
                    ],
        }
    },
    created(){
        
    },
    mounted(){
        this.init();
    },
    methods:{
        // 初始化
        init(){
            
            this.createChart();//创建chart
            this.setChartData();//设置字段和数据

            this.setChartAxis();//设置坐标轴和度量
            this.setChartTooltip();//设置提示信息

            this.chart.interaction('element-active');//设置图表样式

            this.setChartStyle();//设置图表柱子相关属性
            // this.chart.legend(false);//设置为false,表示不显示图例
            this.setChartLegend();//设置图例
            this.setChartAnimate();//设置动画
            //渲染图表
            this.chart.render();
            //添加点击事件
            this.addClickEvent();
            
        },
        //创建chart
        createChart(){
            this.chart = new Chart({
                container: 'container',//chart容器id
                autoFit: false,//图表是否自适应容器宽高,默认为 false
                width: 800,//图标宽度
                height: 400,//图表高度
                padding: [40, 40, 80, 40],//图表内边距,依次为:上,右,下,左
                // defaultInteractions:"ellipsis-text",//配置图表默认交互,仅支持字符串形式。G2 默认支持的交互有 'tooltip', 'legend-filter', 'legend-active', 'continuous-filter', 'ellipsis-text'
                pixelRatio:window.devicePixelRatio,//设置设备像素比,默认取浏览器的值 window.devicePixelRatio
                renderer:"canvas",//指定渲染引擎,默认使用 canvas。可选:'canvas' | 'svg'
                theme:"dark",//配置主题,目前 g2 默认有 dark 主题模式,如需要自定义配置,可以先通过 registerTheme 注册主题,再设置主题 key。
                visible:true,//chart 是否可见,默认为 true,设置为 false 则会隐藏。
            });
        },
        //设置数据
        setChartData(){
            this.chart.data(this.showData);
        },
        //设置坐标轴
        setChartAxis(){
            this.chart.scale("sales", {//Y轴 字段是 度量
                nice: false,//是否自动调整 min、max 。默认为false
                min: 10,//度量最小值,
                max: 120,//度量最大值,如果不需要指定最大值可以设置max=null,或者不要填该参数
            });
            //设置Y轴
            //this.chart.axis("sales",false);//不需要Y轴,可以设置false
            this.chart.axis("sales", {//Y轴样式
                        grid:{
                            line:{
                            type:"line",
                            style:{
                                // fill:'#ff0000',
                                stroke:"#fff",//网格线颜色
                                opacity:0.3,//网格线透明度
                                lineDash:[1,3],//虚线
                            }
                            },
                        },
                        label:{
                            style:{
                            fill:"#fff",///Y轴文字颜色
                            fontFamily: "Microsoft YaHei",///Y轴文字字体
                            fontWeight: 400,///Y轴文字粗细
                            fontSize: 12,///Y轴文字大小
                            }
                        },
                        line:{
                            style:{
                            stroke:"#fff",//坐标轴颜色
                            }
                        },
                        tickLine: {
                            style:{
                            stroke:"#fff",//刻度线颜色
                            }
                        },
                        subTickLine:{
                            style:{
                            stroke:"#fff",//小刻度颜色
                            }
                        }
                    });

            //设置X轴
            //this.chart.axis("year",false);//不需要Y轴,可以设置false
            this.chart.axis("year", {//X轴样式

                label: {
                    formatter: (val) => {
                    return val;
                    // return +val * 100 + '%';
                    },
                    style:{
                    fill:"#fff",//文字颜色
                    fontFamily: "Microsoft YaHei",//文字字体
                    fontWeight: 400,//文字粗细
                    fontSize: 12,//文字大小
                    }
                },
                line:{
                    style:{
                    stroke:"#fff",//坐标轴颜色
                    }
                },
                tickLine: {
                    style:{
                    stroke:"#fff",//刻度线颜色
                    }
                },
                subTickLine:{
                    style:{
                    stroke:"#fff",//小刻度颜色
                    }
                }
            });
        },
        //设置提示框信息样式
        setChartTooltip(){
            this.chart.tooltip({
                showMarkers: false,
                showCrosshairs: false,
                domStyles:{
                    'g2-tooltip':{
                        background:"rgba(00, 00, 00,0.5)",//背景RGBA形式的值
                        color:"#ffffff",//文字颜色
                        boxShadow:"0px 0px 5px #000000",//阴影大小 阴影颜色 
                    },
                },
                customItems: (items) => {//自定义显示的内容格式
                    // console.log("items")
                    // console.log(items)
                    // items[0].name="sales";
                    return items;
                },
            });
        },
        //设置图表散点相关属性【散点样式】
        setChartStyle(){
            var line=this.chart.point();
            
            line.size(6)//圆点大小
            .style({ 
                // strokeOpacity:1,
                // fill: this.attrs.style.pointColor,
                stroke:"#fff",//圆点边框颜色
                
                })
            .state({
            // selected:{
            //   style:{
            //     stroke:'red',
            //   }
            // }
            active:{
                style:{
                stroke:"#2681ff",//鼠标经过 边框颜色
                }
            }
            })
            .position("year"+"*"+"sales")//X轴 * Y轴
            .color("group", ["#2681ff","#00ff44","#2611ff","#26aa99"])//参数1:group字段为分组字段,参数2:颜色数组,散点的颜色会循环的从颜色数组中取出来
            .tooltip("year"+"*"+"sales"+"*"+"group")
            .shape('circle');
            //柱子上是否显示值标签
            //line.label(false);//不需要显示,可以设置false
            line.label("sales", {//标签值
                    content: (originData) => {
                        return originData["sales"]+"万";//设置值标签最终显示的内容
                    },
                    style: {
                        fill: "#fff",
                        fontFamily: "Microsoft YaHei",
                        fontWeight: 400,
                        fontSize: 16,
                        // fill: "#ffffff",
                    },
                    position:"top",//显示位置
                })
        },
        //设置图例
        setChartLegend(){

            // this.chart.legend(false);//设置为false,表示不显示图例

            this.chart.legend("group", {
                position: "bottom",//图例位置:"top" | "top-left" | "top-right" | "right" | "right-top" | "right-bottom" | "left" | "left-top" | "left-bottom" | "bottom" | "bottom-left" | "bottom-right"
                itemName:{
                    style:{
                        fill: "#fff",
                        fontFamily: "Microsoft YaHei",
                        fontWeight: 400,
                        fontSize: 16,
                    }
                },
                pageNavigator: {
                    marker: {//分页器指示箭头配置项
                        style: {
                            // 非激活,不可点击态时的填充色设置
                            inactiveFill: "#fff",//分页器:箭头颜色
                            inactiveOpacity: 1,//分页器:箭头透明度
                            // 默认填充色设置
                            fill: "#fff",//分页器:颜色
                            opacity: 1,//分页器:透明度
                            size: 12,//分页器:大小
                        },
                    },
                    text: {//分页器指示文本配置项
                        style: {
                            fill: "#fff",//分页器:文本颜色
                            fontSize: 12,//分页器:文本大小
                        },
                    },
                },
            });
        },
        //设置动画
        setChartAnimate(){
            
            // this.chart.animate(false);//设置为false,表示不使用动画效果

            this.chart.animate({
                // 初始化时的入场动画
                appear: {
                    animation: 'fade-in', // 动画名称:'fade-in'|'fan-in'|'scale-inx'|'scale-iny'|'path-in'|'zoom-in'|'clip-in'
                    easing: 'easeQuadIn', // 动画缓动效果
                    delay: 100, // 动画延迟执行时间
                    duration: 600 // 动画执行时间
                },
                // 更新时的出现动画
                enter: {
                    animation: 'fade-in', //动画名称:'fade-in'|'fan-in'|'scale-inx'|'scale-iny'|'path-in'|'zoom-in'|'clip-in'
                    easing: 'easeQuadIn', // 动画缓动效果
                    delay: 100, // 动画延迟执行时间
                    duration: 600 // 动画执行时间
                },
                // 更新时的动画
                leave: {
                    animation: 'path-out', //动画名称:'fade-out'|'path-out'|'zoom-out'|'lineWidth-out'
                    easing: 'easeQuadIn', // 动画缓动效果
                    delay: 100, // 动画延迟执行时间
                    duration: 600 // 动画执行时间
                },
                // 更新时的变化动画
                update: {
                    animation: 'fade-in', //动画名称:'fade-in'|'fan-in'
                    easing: 'easeQuadIn', // 动画缓动效果
                    delay: 100, // 动画延迟执行时间
                    duration: 600 // 动画执行时间
                },
            })
        },
        //添加点击事件
        addClickEvent(){
            this.chart.on('element:click', (ev) => {
                var data=ev.data.data;
                console.log(data);
                alert(JSON.stringify(data));
            });
        }
    },
}
</script>

<style lang="scss">
body{ background: #222;}
.container{width:800px; height: 800px; margin: 100px auto; background: cadetblue;}
</style>

数据可视化工具推荐

基于VUE实现拖拽制作数据可视化大屏

基于SpringBoot+Vue3+mysql开发,支持多种数据源:excel、api接口、mysql、oracle、SqlServer等多种类型的数据源,支持数据模型转换,图形化编辑界面:拖拽即可完成大屏制作和数据配置,无需编程就能轻松搭建数据大屏。私有化部署:使用私有化部署的方式,保障贵公司的数据安全,数据大屏支持加密发布

界面展示

  1. 大屏编辑界面 

    (https://www.51qingtian.com)
  2. 可视化大屏 

    (https://www.51qingtian.com)
  3. 数据模型 

    (https://www.51qingtian.com)
  4. 数据源 

    (https://www.51qingtian.com)

模板展示

  1. 健身数据报告

(https://www.51qingtian.com)

  1. 智慧园区数据统计中心

(https://www.51qingtian.com)

  1. 交通安全主题

(https://www.51qingtian.com)

  1. 财务数据大屏

(https://www.51qingtian.com)

  1. 智慧医疗大数据可视化大屏

(https://www.51qingtian.com)

官网

  1. 情天数据可视化 www.51qingtian.com
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在vue中使用antV-G2展示散点图 的相关文章

  • 不和谐机器人 |不和谐.js |类型错误:无法读取未定义的属性“长度”

    我正在制作一个 Discord 机器人 并且正在使用 CodeLyon 的视频作为参考 该错误位于我的 message js 文件中 该文件包含以下内容 require dotenv config create cooldowns map
  • 为什么 JavaScript base-36 转换看起来不明确

    我目前正在编写一段使用 Base 36 编码的 JavaScript 我遇到了这个问题 parseInt welcomeback 36 toString 36 看来要回归了 welcomebacg 我在 Chrome 开发者控制台和 Nod
  • Web 串行 API - 未捕获(承诺中)DOMException:无法打开串行端口/所需成员 baudRate 未定义

    下面的代码可以在我的 Xubuntu 机器上运行 但现在我在 Kubuntu 上 它不再工作了 它不会打开端口 Arduino IDE 工作正常 可以向开发板写入代码 并且我可以在 Chrome 中选择设备 Arduino Uno 但当我尝
  • TypeError: props.render 不是一个函数(React hook 形式)

    我将方法作为我用react hook form制作的形式的道具传递 当从react hook form添加控制器时 它给了我 TypeError props render不是一个函数 我在网上找不到任何解决方案 因此感谢任何帮助 impor
  • Meteor:应用程序无法在 0.9.1.1 版本上运行

    出现类似错误 Error TypeError undefined is not a function evaluating Template create anonymous function iron dynamic template j
  • 如何抑制窗口鼠标滚轮滚动...?

    我正在开发嵌入页面中的画布应用程序 我有它 因此您可以使用鼠标滚轮放大绘图 但不幸的是 这会滚动页面 因为它是文章的一部分 当我在 dom 元素上滚动鼠标滚轮时 是否可以阻止鼠标滚轮在窗口上滚动 附加鼠标滚轮 不是 Gecko DOMMou
  • 如何监听 jQuery AJAX 请求?

    以下两种实现 ajaxRequest 1 2 的方法应该是等效的 话说回来 为什么验证回调已执行的单元测试 3 在 1 中成功而在 2 中失败 我应该如何重写测试 3 来监视 2 中的成功回调 如果我尝试stub jQuery ajax使用
  • 除了更改标题之外,如何在 Firefox 中强制另存为对话框?

    有没有办法在 ff 中强制打开 www example com example pdf 的另存为对话框 我无法更改标题 如果您可以将文件以 Base64 格式输出到客户端 则可以使用 data uri 进行下载 location href
  • 为什么是 javascript:history.go(-1);无法在移动设备上工作?

    首先 一些背景 我有一个向用户呈现搜索页面 html 表单 的应用程序 填写标准并单击 搜索 按钮后 结果将显示在标准部分下方 在结果列表中 您可以通过单击将您带到新页面的链接来查看单个结果的详细信息 在详细信息页面中 我添加了一个 返回结
  • Meteor - 从客户端取消服务器方法

    我正在通过服务器方法执行数据库计数 用户可以选择他们希望如何执行计数 然后调用该方法 我的问题是 计数可能需要一些时间 并且用户可能会在方法运行时改变主意并请求不同的计数 有什么方法可以取消调用的方法并运行新的计数吗 我认为 this un
  • 跟踪用户何时点击浏览器上的后退按钮

    是否可以检测用户何时单击浏览器的后退按钮 我有一个 Ajax 应用程序 如果我可以检测到用户何时单击后退按钮 我可以显示适当的数据 任何使用 PHP JavaScript 的解决方案都是优选的 任何语言的解决方案都可以 只需要我可以翻译成
  • 表单计算器脚本基本价格未加载 OnLoad

    我的表单中有一个计算器来计算我的下拉选项选择 function select calculate on change calc input type checkbox calculate on click calc function cal
  • Firefox 书签探索未超过 Javascript 的第一级

    我已经编写了一些代码来探索我的 Firefox 书签 但我只获得了第一级书签 即我没有获得文件夹中的链接 e g 搜索引擎 雅虎网站 谷歌网站 在此示例中 我只能访问 Search engines 和 google com 不能访问 yah
  • 为 illustrator 导出脚本以保存为 web jpg

    任何人都可以帮我为 illustrator CC2017 编写一个脚本 将文件以 JPG 格式导出到网络 旧版 然后保存文件并关闭 我有 700 个文件 每个文件有 2 个画板 单击 文件 gt 导出 gt 另存为 Web 旧版 然后右键文
  • 为什么在 Internet Explorer 中访问 localStorage 对象会引发错误?

    我正在解决一个客户端问题 Modernizr 意外地没有检测到对localStorageInternet Explorer 9 中的对象 我的页面正确使用 HTML 5 文档类型 并且开发人员工具报告该页面具有 IE9 的浏览器模式和 IE
  • FireFox 中的自动滚动

    我的应用程序是实时聊天 我有一个 Div 来包装消息 每条消息都是一个 div 所以 在几条消息之后 我的 DOM 看起来像这样 div div Message number two div div div div
  • Javascript 纪元时间(以天为单位)

    我需要以天为单位的纪元时间 迄今为止 我已经看到过有关如何翻译它的帖子 但几天后就没有了 我对纪元时间很不好 我怎么能得到这个 我需要以天为单位的纪元时间 我将解释为您想要自纪元以来的天数 纪元本身是第 0 天 或第 1 天的开始 无论您如
  • JQuery 图像上传不适用于未来的活动

    我希望我的用户可以通过帖子上传图像 因此 每个回复表单都有一个上传表单 用户可以通过单击上传按钮上传图像 然后单击提交来提交帖子 现在我的上传表单可以上传第一个回复的图像 但第二个回复的上传不起作用 我的提交过程 Ajax 在 php 提交
  • 如何仅在最后一个
  • 处给出透明六边形角度?
  • 我必须制作这样的菜单 替代文本 http shup com Shup 330421 1104422739 My Desktop png http shup com Shup 330421 1104422739 My Desktop png
  • 如何获取浏览器视口中当前显示的内容

    如何获取当前正在显示长文档的哪一部分的指示 例如 如果我的 html 包含 1 000 行 1 2 3 9991000 并且用户位于显示第 500 行的中间附近 那么我想得到 500 n501 n502 或类似的内容 显然 大多数场景都会比

随机推荐

  • 五款实用的微信小程序(免费证件照)

    在这里给大家推荐几个平时常用的微信小程序 真心方便实用 绝对不是打广告 小米云证件照 目前很多证件照APP不是要收费 就是里面内置了许多广告 体验不佳 小米云证件照可以用三个词概况 免费 干净 无广告 懂的自然懂 扫描全能王 老牌的扫描工具
  • docker基础:联合文件系统

    首先docker的镜像是由一层一层的文件系统组成的 不同 Docker 容器就可以共享一些基础的文件系统层 同时再加上自己独有的改动层 大大提高了存储的效率 这个基础是联合文件系统 联合文件系统 UnionFS 是一种分层 轻量级并且高性能
  • 修改host方法

    打开路径 C Windows System32 drivers etc 将hosts文件拷贝出来修改之后放回去覆盖即可 想得到ip可以先ping一下那个域名 以下是一个例子 左边是ip 右边是域名 不用加 223 6 248 220 www
  • vue3+Element-plus el-select 下拉表格组件(2023-08-21 解决TSelectTable组件表单编辑回显设置defaultSelectVal 无效)

    2023 08 21 解决TSelectTable组件表单编辑回显设置defaultSelectVal 无效 2023 06 28 TSelectTable组件新增查询条件 效果如下 一 最终效果 二 代码示例
  • 【故障处理】EXP-00091 Exporting questionable statistics

    数据库平台 soalris10 数据库版本 9i 日期 2013 2 19 项目 关键字 1 Exp 00091 2 Exp 问题 使用exp导出时 出现错误 分析 oracle10g oerr exp 00091 00091 00000
  • Python报错No module named 'cv2'

    import cv2 Python运行过程中报错No module named cv2 Traceback most recent call last File Users congjam PycharmProjects Jam Test
  • python uwsgi_Python/WSGI应用快速入门

    Python WSGI应用快速入门 这个快速入门将会告诉你如何部署简单的WSGI应用和常见的web框架 这里 Python指的是CPython 对于PyPy 你需要使用特定的插件 PyPy插件 Jython支持正在开发中 注解 要遵循此快速
  • mysql表分区

    1 分表与表分区的区别 1 1 关于分表 分表是将一个大表分为几个或是多个小表 例如 table 1每天有1Kw的数据量 table 1随便时间的增长会越来越大 最终达到mysql表的极限 在这种比较极端的情况下 我们可以考虑对table
  • Android 路由框架ARouter源码解析

    作者 小马快跑 我们知道在使用ARouter时 需要在build config里配置 annotationProcessor com alibaba arouter compiler 1 2 2 并且知道annotationProcesso
  • freetype_4_使用freetype显示多行文字

    freetype 4 使用freetype显示多行文字 从左往右显示 1 先描绘一行文字 2 取出该行文字的最大高度 以此为基准算出下一行的位置 3 再描绘另一行文字 根据上一篇文章中代码修改主函数部分 int main int argv
  • Python自动化刷投票脚本开发,微信投票再也不需要发红包了

    前言 现在部分比赛为了推广赞助商或者比赛本身 需要参赛队伍进行网上拉票 甚至票数还会占一定比例的成绩 因此 刷票也就应运而生了 此次我们团队参加一个比赛 就需要网上投票决出前几名 作为一位技术人员 当然是得 解决 技术能解决的问题嘛 所以就
  • python-pymysql常用功能封装

    目录 简介 代码 测试 参考 简介 pymysql是一个客户端 本文进行一个简单封装 主要是结构化和批量操作 代码 import pymysql class MysqlCli def init self host user password
  • 《矩阵计算》chapter 01 在 Octave 中整理运行示例算法

    Algo1 算法1 1 1 点积 mc 1 1 1 algo dot product m function c mc 1 1 1 algo dot product x y c 0 for i 1 size x 1 c x i y i end
  • mybatis 查询数据表

    mybatis查询数据表 1 mybatis的环境搭建 2 创建实体类和dao的接口 2 1 实体类中的属性和数据库表的字段名称保持一致 3 创建Mybatis的主配置文件SqlMapConifg xml 4 创建配置文件IUserDao
  • 王者服务器维护8月25,王者荣耀8月25日英雄调整有哪些 8月25日英雄调整内容汇总...

    王者荣耀v1 20 1 37 安卓最新官方版 类型 角色扮演大小 471M语言 中文 评分 7 7 标签 立即下载 王者荣耀8月25日英雄调整内容汇总一览 王者荣耀体验服8月25日进行维护更新 一大波英雄技能都有很大的调整 宫本武藏又又又被
  • Kubernetes—minikube安装(笔记)

    minikube是本地的Kubernetes 致力于使Kubernetes易于学习和开发 安装过程来自官网 https minikube sigs k8s io docs start 安装kubectl 安装 curl LO https d
  • typora免费安装版教程,支持Windows、Mac、Linux

    大家好 我是可乐 本篇文章为大家介绍 Typora快捷键 Typora免费安装教程 Typora是一款简单易用的Markdown编辑器 目前 Typora 官方是不提供免费版下载了 需要一次性购买版权 支持正版的可以直接前往官网购买 89
  • STM32上使用JSON

    一 STM32工程中添加JSON 最近在一网2串项目 串口和网口之间可能需要定义一下简单的通信协议 而通信协议上则需要去定义一下通信的数据格式 上次听剑锋说要用Json来定义 目前查了下资料具体如何去应用还不 会 因为最新的KEIL上支持J
  • FreeRTOS之事件

    FreeRTOS之事件 声明 本人按照正点原子的FreeRTOS例程进行学习的 欢迎各位大佬指责和批评 谢谢 一 事件定义 事件 事件集 与高数上的集合意义差不多 事件啊 其实是实现任务间通信的机制 主要用于实现多任务间的同步 但是事件类型
  • 在vue中使用antV-G2展示散点图

    介绍 在vue中使用antV G2展示散点图 G2 是一套基于图形语法理论的可视化底层引擎 以数据驱动 提供图形语法与交互语法 具有高度的易用性和扩展性 使用 G2 你可以无需关注图表各种繁琐的实现细节 一条语句即可使用 Canvas 或