vue中引入百度地图

vue中引入百度地图,第1张

在indexhtml文件中引入百度地图

但是并没有用且报错

此处报错非常诡异,因为我采用动态引用的方式时并没有报该错

新创建一个文件utils/baiduMapjs

在百度地图组件baidumapvue中引用

1VUE-X辅助函数用法:

Appvue内容:

<template>

  <div id="app">

    <h1>{{num}}</h1>

    <button @click="addNumber">增加</button> |

    <button @click="delNumber">减少</button> |

    <button @click="ajaxfn">异步加</button> |

  </div>

</template>

<script>

/ 导出vuex中的 mapState 方法/

import { mapState,mapGetters, mapMutations,mapActions} from 'vuex'

export default {

  name:"App",

  computed:{

    /  /

    mapState(['num']),

    mapGetters(['getDaZhuan','getBenKe'])

  },

  methods: {

    / 利用mapMutations方法使用拓展运算符把Mutations的方法解构在methods中 /

    / 在this中也可以找到对应解构出来的方法 /

    / mapMutations(['ADDNUM','DELNUM']), /

    / 如果Mutations中的方法和methods中同名了,可以采用对象形式修改 /

    mapMutations({

      addfn:'ADDNUM',

      delfn:'DELNUM'

    }),

    / 类似于下面 /

    / ADDNUM:function(){}

    DELNUM:function(){} /

    addNumber(){

      / this$storecommit('ADDNUM',2) /

      / thisADDNUM(2) /

      thisaddfn(2)

    },

    delNumber(){

      / this$storecommit('DELNUM',2) /

      / thisDELNUM(2) /

      thisdelfn(2)

    },

    ADDNUM(){

      consolelog(2);

    },

    / 利用mapActions方法使用拓展运算符把Actions的方法解构在methods中 /

    / 在this中也可以找到对应解构出来的方法 /

    / mapActions(['addajax']), /

    / 如果Actions中的方法和methods中同名了,可以采用对象形式修改 /

    mapActions({

    addajax2:'addajax'

    }),

    ajaxfn(){

     thisaddajax(5)

    },

    addajax(){

     thisaddajax2(5)

    }

  },

}

</script>

<style>

</style>

store下indexjs内容:

/ import { set } from 'core-js/core/dict'; /

import Vue from 'vue'

import Vuex from 'vuex'

Vueuse(Vuex)

/ Vuex 是一个专为 Vuejs 应用程序开发的状态管理模式 + 库。

它采用集中式存储管理应用的所有组件的状态,

并以相应的规则保证状态以一种可预测的方式发生变化。 /

/ 如果需要构建一个中单行单页应用,灰考虑如何更好的在组件外部管理状态,

   Vuex将会成为自然而然的选择 /

/ 导出一个Vuex实例化对象 /

export default new VuexStore({

  / state是用来存储组件中的数据的 /

  state: {

    msg: '我是组件共享的数据',

    num: 0,

    list: [{

        "title": "某xxxx去了学校1",

        "dec": "xxxxxxx学习了vue学习了java",

        "xueli": "大专"

      },

      {

        "title": "某xxxx去了学校2",

        "dec": "xxxxxxx学习了vue学习了javaScript",

        "xueli": "大专"

      },

      {

        "title": "某xxxx去了学校3",

        "dec": "xxxxxxx学习了vue学习了云计算",

        "xueli": "大专"

      },

      {

        "title": "某xxxx去了学校4",

        "dec": "xxxxxxx学习了vue学习了前端",

        "xueli": "本科"

      },

      {

        "title": "某xxxx去了学校5",

        "dec": "xxxxxxx学习了vue学习了后端",

        "xueli": "本科"

      },

      {

        "title": "某xxxx去了学校6",

        "dec": "xxxxxxx学习了vue学习了大数据",

        "xueli": "本科"

      }

    ]

  },

  / getters计算组件中的数据的,可以对数据进行二次加工类似于computer功能 /

  / 类似于计算属性 /

  getters: {

    / 计算大专学历的数据 /

    getDaZhuan: function (state) {

      return statelistfilter(r => rxueli == '大专')

    },

    / 计算本科学历的数据 /

    getBenKe: function (state) {

      return statelistfilter(r => rxueli == '本科')

    },

    / 说明也具有缓存功能 如果state中的数据得到了改变

        那么getters中的属性也会发生改变,如果state的值没有发生任何变化,那么getters

        中的属性的值就不会发生改变/

    getRandom:function(state){

       return statenum +'--'+ Mathrandom()

    }

  },

  / 在mutations中修改state中的值(修改state中的值要想留下记录必须用mutations修改) /

  mutations: {

    / 在mutations里面写异步就会造成数据混乱的问题 /

    / mutations 的方法最好大写,为了和actions方法做区分 /

    / mutations 通过payload来获取 /

    ADDNUM: function (state, payload) {

      consolelog('ADDNUM', state);

      / 模拟后台获取数组的异步场景 /

      / setTimeout(()=>{

        statenum+=payload

      },500) /

      / statenum++ /

      statenum += payload

    },

    DELNUM: function (state, payload) {

      consolelog('DELDNUM', state);

      / statenum-- /

      statenum -= payload

    },

  },

  / actions是用来调后台接口的并commit提交一个mutations /

  actions: {

    / actions里面的方法小写为了区分mutations里面的方法 /

    / 异步请求要放 actions 里面去写 不要放组件写/

    addajax: function ({

      commit

    }, data) {

      setTimeout(() => {

        / 使用解构出来的commit方法来提交一个mutations方法ADDNUM来修改state中的值 /

        commit('ADDNUM', data)

      }, 500)

    },

    delajax: function ({

      commit

    }, data) {

      setTimeout(() => {

        / 使用解构出来的commit方法来提交一个mutations方法ADDNUM来修改state中的值 /

        commit('DELNUM', data)

      }, 500)

    },

  },

  / 可以使用modules把vuex分模块 /

  modules: {}

})

2分模块使用vuex:

appvue内容:

<template>

  <div id="app">

    <h1>{{$storestatemodAmodaStr}}</h1>

    <h1>{{$storestatemodBmodbStr}}</h1>

    <h1>{{$storegetters['modA/strGetter']}}</h1>

    <button @click="changeStr">修改modaStr的值</button>

    <button @click="waitchange">异步修改modaStr的值</button>

  </div>

</template>

<script>

export default {

  name:"App",

  created(){

    consolelog(this);

  },

  methods:{

    changeStr(){

      this$storecommit('modA/CHANGESTR','坚持学VUE啊')

    },

    waitchange(){

      this$storedispatch('modA/waitfnStr','坚持学前端啊')

    }

  }

  }

</script>

<style>

</style>

store新建modules文件创建ModAjs文件:

/ 模块的局部状态 /

/ 箭头函数如果想返回对象需要使用()包一下不能直接返回{} /

const state = ()=>({

    modaStr:'我是模块A的数据'

  })

  / getters计算组件中的数据的,可以对数据进行二次加工类似于computer功能 /

  / 类似于计算属性 /

  const getters= {

    strGetter:function(state){

        consolelog(state);

      return statemodaStr + 'getter'

    }

  }

  / 在mutations中修改state中的值(修改state中的值要想留下记录必须用mutations修改) /

  const mutations= {

   CHANGESTR(state,payload){

    statemodaStr = payload

   }

  }

  / actions是用来调后台接口的并commit提交一个mutations /

  const  actions= {

    waitfnStr({commit},data){

        setTimeout(()=>{

            commit('CHANGESTR',data)

        },1000)

    }

  }

  / 可以使用modules把vuex分模块 /

  const modules={

  }

  export default {

      / 保证模块之间的数据独立运行,不互相影响 /

      namespaced:true,

      state,

      getters,

      mutations,

      actions,

      modules

  }

store新建modules文件创建ModBjs文件:

const state = ()=>({

    modbStr:'我是模块B的数据'

  })

/ getters计算组件中的数据的,可以对数据进行二次加工类似于computer功能 /

/ 类似于计算属性 /

const getters= {

}

/ 在mutations中修改state中的值(修改state中的值要想留下记录必须用mutations修改) /

const mutations= {

}

/ actions是用来调后台接口的并commit提交一个mutations /

const  actions= {

}

/ 可以使用modules把vuex分模块 /

const modules={

}

export default {

    / 保证模块之间的数据独立运行,不互相影响 /

    namespaced:true,

    state,

    getters,

    mutations,

    actions,

    modules

}

store下indexjs文件:

/ import { set } from 'core-js/core/dict'; /

import Vue from 'vue'

import Vuex from 'vuex'

/ 先把各个模块导入进来 /

import modA from '@/store/modules/ModAjs'

import modB from '@/store/modules/ModBjs'

Vueuse(Vuex)

/ Vuex 是一个专为 Vuejs 应用程序开发的状态管理模式 + 库。

它采用集中式存储管理应用的所有组件的状态,

并以相应的规则保证状态以一种可预测的方式发生变化。 /

/ 如果需要构建一个中单行单页应用,灰考虑如何更好的在组件外部管理状态,

   Vuex将会成为自然而然的选择 /

/ 导出一个Vuex实例化对象 /

export default new VuexStore({

  / state是用来存储组件中的数据的 /

  state: {

  },

  / getters计算组件中的数据的,可以对数据进行二次加工类似于computer功能 /

  / 类似于计算属性 /

  getters: {

  },

  / 在mutations中修改state中的值(修改state中的值要想留下记录必须用mutations修改) /

  mutations: {

  },

  / actions是用来调后台接口的并commit提交一个mutations /

  actions: {

  },

  / 可以使用modules把vuex分模块 /

  / 分模块实现数据集中管理 /

  / 在 modules 中把模块名注释一下/

  modules: {

   modA:modA,

   modB:modB

  }

})

使用框架时必须熟知框架指令特性!很重要;

Bootstrap+jQuery是很好的选择!

库:          1i18n(双语言切换);

                  2vue-router(路由);

                  3vuex(状态管理,需要进行双语言切换监听变化);

                  4ElementUI(饿了么以电脑端为主得UI框架);

                  5sass(css预处理);

                  6echarts(需要K线图,个人推荐不要用echarts,太大);

                  7axios(相对于fetch兼容性好,请求数据)

IE的坑:1走马灯之前用的是swiper的,结果兼容性不好,40+兼容不好,30主要以移动端为主,

                之后换成了ElementUI的走马灯又引导出无法覆盖ElementUI的样式,因为VUE是默认全局覆盖局部,再加一个style,不要加scoped,ElementUI是全局引入!  解决问题。

                2经验不足,IE9不支持flex,坑、坑、坑移动端写习惯了!

                3多行文本省略只支持webkit内核浏览器,又是坑,用js控制长度搞定!

                4低版本兼容引入babel-polyfill,将build webpackbaseconfjs里entry修改为entry: {'babel-polyfill': 'babel-polyfill',app: '/src/mainjs'},

            5使用axios低版本兼容 es6-promise包,在mainjs里引用

                import promise from 'es6-promise'

                promisepolyfill()

打包:1history模式:需要服务器端配置请看官网>

用vue router如何获得当前页面的路由的方法如下:

路由器将自渲染对应的组件以及更新路由信息:

其中<router-view>可以传递props,支持v-ref,同时也可以使用v-transition和transition-mode来获得场景切换效果,被渲染的组件将注册到父级组件的this$对象上。

路由对象和路由匹配:

路由对象,即$router会被注入每个组件中,可以利用它进行一些信息的获取。

如属性 说明:

$routepath 当前路由对象的路径,如'/vi

$routequery 请求参数,如/foouser=1获取到queryuser = 1

$routerouter 所属路由器以及所属组件信息

$routematched 数组,包含当前匹配的路径中所包含的所有片段所对应的配置参数对象。

$routename 当前路径名字

当然,你也可以在自己定义路由规则(map)的时候自定义字段,用以特殊目的。

这里只是做了一些简单的介绍,最后,更多高级用法请参考官方文档。

在我们使用vue-cli创建生产的项目build后,默认会生成大量的map文件,如下图:

这些map非常大,所以最好在build是不要将其生产出来。

修改配置,使其build时不生成map文件:

在config文件夹下找到indexjs文件,打开然后找到productionSourceMap,将其设置为false即可。

以上就是关于vue中引入百度地图全部的内容,包括:vue中引入百度地图、VUE-X 辅助函数用法及分模块使用vuex、Primary:Vue{三、一个基于Vue的门户网站(经验踩坑)}等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9591646.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-29
下一篇2023-04-29

发表评论

登录后才能评论

评论列表(0条)

    保存