美文网首页
vue+element 项目

vue+element 项目

作者: autumn_3d55 | 来源:发表于2023-05-21 21:05 被阅读0次

    1.错误:导航重复:避免多余的导航到当前位置

    error:NavigationDuplicated: Avoided redundant navigation to current location

    解决方案:
    在 router.js 文件添加一下代码

    //解决方案
    const originalPush = VueRouter.prototype.push;
    VueRouter.prototype.push = function push(location) {
      return originalPush.call(this,location).catch(err => err);
    }
    Vue.use(VueRouter)
    
    const routes = [
      {...}
    

    2.父子通信组件生命周期加载顺序

    image.png

    3.实现跳转当前页面每次跳到顶部

    使用路由全局后置守卫

    route.js 文件

    const router = new VueRouter({
      routes,
      // mode: 'history'
    })
    router.afterEach((to,from,next) => {
      window.scrollTo(0,0);
    });
    export default router
    

    4.vue使用高德地图api

    高德地图api官网:https://developer.amap.com/product/map#/

    4.1配置

    vue.config.js

    module.exports = {
      configureWebpack: {
        externals: {
          'AMap': 'AMap',// 高德地图配置
        },
      },
    }
    

    4.2引入

    在 index.js 文件脚本引入

    /*
    *@key: 高德地图api注册的key
    */
    <script src="https://webapi.amap.com/maps?v=1.4.15&key=key"></script>
      <div id="app"></div>
    

    4.3 使用

    <div  id="container" class="map"></div>
    <script>
      import AMap from 'AMap';
      methods: {
      createMap() {
          //创建地图
          var map = new AMap.Map('container', {
            resizeEnable: true, //是否监控地图容器尺寸变化
            zoom:11, //初始化地图层级
            center: [120.024039,35.818754] //初始化地图中心点
        });
        //添加标记
         var marker = new AMap.Marker({
                position: [120.024039,35.818754],
                offset: new AMap.Pixel(-13, -30)
            });
            marker.setMap(map);
        },
    },
    created() {
      this.createMap();
    }
    </script>
    

    4.4 效果

    image.png

    5.动态引入图片

    在data写图片路径,需要在图片路径添加 require 进行解析。

    data() {
      return: {
      info: {
              id: 1,
              icon: require("@/assets/images/main/icon_phone.png"),
              name: "电话",
              desc: "400-0309-360",
            },
      }
    }
    
    //使用
    <img :src="info.icon" />
    

    2.在css写图片路径,需要在图片路径添加 ~ 修饰符。

    background-image: url("~@/assets/images/main/us_bg.png");
    

    6.box-shadow 阴影

    box-shadow属性接收一个由5个参数组成的值,每个值的意思如下:

    h-shadow: 水平阴影的位置 (x轴上阴影的位置,正数右边,负数左边)
    v-shadow:垂直阴影的位置 (y轴上阴影的位置,正数上面,负数下面)
    blur:模糊距离 (这个值代表阴影的模糊半径,如果是“0”意味着阴影是完全实心的,没有任何模糊效果。该值越大,实心度越小,阴影越朦胧和模糊,该值不支持负数。)
    spread:阴影的尺寸 (如果正值会在元素的四个方向延伸阴影。负值会使阴影变得比元素本身尺寸还要小。)
    color:阴影的颜色 (指定阴影的颜色)
    用法:

    &:hover {
                  box-shadow: -2px 2px 8px 4px #c3c3c3;
                }
    

    效果图:


    image.png

    7.使用vue时需要加载初始化数据

    • 问题描述:
    1. 在created生命周期内进行异步数据的请求,且将获取到的数据赋值给this.data。
    2. 此时如果在mounted生命周期里获取this.data是获取不到的。
    • 问题分析:
    1. 因为异步加载需要时间,如果延迟时间是可以获取到数据的,但是问题是不知道需要延迟多久,况且这个方法也不是很好。
    2. 那么有没有一个比较优雅的办法进行获取这个异步加载的数据呢
    • 解决办法:
    1. 在data里进行数据的定义
    data(){
        dataList:''
    }
    
    1. 使用watch方法的数据监听
        watch:{
            dataList(){
                this.$nextTick(()=>{
                    //此时就可以获取到在created赋值后的dataList了
                })
            }
        }
    

    至此,遇到的问题就以解决~~~

    8.js随机生成数

    js 可以使用 Math(算数) 对象来实现随机数的生成。

    | ceil(x) | 对数进行上舍入,即向上取整。 |
    | floor(x) | 对 x 进行下舍入,即向下取整。 |
    | round(x) | 四舍五入。 |
    | random() | 返回 0 ~ 1 之间的随机数,包含 0 不包含 1。 |

    Math.ceil(Math.random()*10);     // 获取从 1 到 10 的随机整数,取 0 的概率极小。
    
    Math.round(Math.random());       // 可均衡获取 0 到 1 的随机整数。
    
    Math.floor(Math.random()*10);    // 可均衡获取 0 到 9 的随机整数。
    
    Math.round(Math.random()*10);    // 基本均衡获取 0 到 10 的随机整数,其中获取最小值 0 和最大值 10 的几率少一半。
    

    9.md5加密数据

    • npm安装
    npm install js-md5
    
    • 全局引用挂载
    import md5 from 'js-md5'
    Vue.prototype.$md5 = md5
    
    • 使用
      mounted () {
        console.log(this.$md5('1233445'))
      }
    
    • 局部引用和使用
    import md5 from 'js-md5'
    console.log(md5('1233445'))
    

    10.echarts 图表的使用

    • NPM 安装 ECharts
    npm install echarts --save
    
    • 引入ECharts
    import * as echarts from 'echarts';
    
    // 基于准备好的dom,初始化echarts实例
    var myChart = echarts.init(document.getElementById('main'));
    // 绘制图表
    myChart.setOption({
      title: {
        text: 'ECharts 入门示例'
      },
      tooltip: {},
      xAxis: {
        data: ['衬衫', '羊毛衫', '雪纺衫', '裤子', '高跟鞋', '袜子']
      },
      yAxis: {},
      series: [
        {
          name: '销量',
          type: 'bar',
          data: [5, 20, 36, 10, 10, 20]
        }
      ]
    });
    
    • 例子
    <template>
      <div id="App">
        <!-- echarts -->
        <div id="main"></div>
      </div>
    </template>
    
    <script>
    import { onMounted } from "vue";
    import * as echarts from "echarts";
    export default {
      name: "App",
      components: {},
      setup() {
        // 基于准备好的dom,初始化echarts实例
        const createEcharts = function () {
          // 基于准备好的dom,初始化echarts实例
          let myChart = echarts.init(document.getElementById("main"));
          // 绘制图表
          let ec = {
            title: {
              text: "ECharts 入门示例",
            },
            tooltip: {},
            xAxis: {
              data: ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"],
            },
            yAxis: {},
            series: [
              {
                name: "销量",
                type: "bar",
                data: [5, 20, 36, 10, 10, 20],
              },
            ],
          }
          myChart.setOption(ec);
        };
        onMounted(() => {
          createEcharts();
        });
        return {
          createEcharts,
        };
      },
    };
    </script>
    <style scoped>
    #App {
      height: 100vh;
      width: 100vw;
      margin: auto;
    }
    #main {
      width: 50%;
      height: 50%;
      
    }
    </style>
    
    

    相关文章

      网友评论

          本文标题:vue+element 项目

          本文链接:https://www.haomeiwen.com/subject/kaboxrtx.html