• 技术文章 >web前端 >js教程

    Vue项目全局配置微信分享步骤说明

    php中世界最好的语言php中世界最好的语言2018-05-12 14:48:02原创2034
    这次给大家带来Vue项目全局配置微信分享步骤说明,Vue项目全局配置微信分享的注意事项有哪些,下面就是实战案例,一起来看一下。

    这个项目为移动端项目,主要用于接入公众号服务。项目采用两种登录方式,微信授权登录以及账号密码登录。对于移动端项目而言,为了便于项目扩展以及提供开发热更新速度,项目分为不同的模块,每个模块是一个单页面应用。页面分为两种,一种是需要用户登录之后才能浏览,另一种是用户无需登录即可浏览。无论哪一种,均配置微信分享。

    使用的技术

    1.使用vue作为框架
    2.使用vux作为UI组件库

    全局配置微信分享思路

    1.区分一般和特殊,一般情况,全局配置默认分享文案;特殊情况分两种,一种是分享内容不需要异步获取,则在路由跳转时配置,另一种是分享内容需要异步获取,则需要待异步内容获取后更新分享内容。

    2.不需要异步获取的内容我们采用定义在路由元信息的方式,直接在每次路由跳转之后调用公共函数更新分享内容。

    具体可以查看微信JSSDK的使用说明

    // wxShare.js
    import Vue from 'vue'
    // 在组件外使用vux集成的微信jssdk
    import { WechatPlugin, AjaxPlugin } from 'vux'
    Vue.use(WechatPlugin)
    Vue.use(AjaxPlugin)
    export default function wxShare ({title, desc, timelineTitle, link, imgUrl} = {}) {
      Vue.wechat.config({
       debug: false,
       appId: appId,
       timestamp: timestamp,
       nonceStr: nonceStr,
       signature: signature,
       jsApiList: ['onMenuShareAppMessage', 'onMenuShareTimeline']
      })
      Vue.wechat.ready(() => {
       Vue.wechat.onMenuShareAppMessage({
        title: title, // 分享标题
        desc: desc || '默认分享文案', // 分享描述
        link: link || window.location.href, // 分享链接
        imgUrl: imgUrl || '图标地址(必须是有效的Link)' // 分享图标
       })
       Vue.wechat.onMenuShareTimeline({
        title: timelineTitle || desc || '默认分享文案', // 分享标题,由于分享到朋友圈没有desc,所以这里采用的策略是,指定的朋友圈分享标题优先,其次采用发送给朋友的描述,最后采用默认文案。
        link: link || window.location.href, // 分享链接
        imgUrl: imgUrl || '图标地址(必须是有效的Link)' // 分享图标
       })
      })
      Vue.wechat.error((res) => {
      })
    }
    // 为Vue的原型对象添加该方法,则所有vue实例都能继承该方法
    Vue.prototype.$wxShare = wxShare
    // router/index.js 每个模块都有自己内部的路由配置
    // codes...
    const routes = [
      {
        path: '/index',
        name: 'index',
        redirect: '/index/homepage',
        children: [
         {
          path: '/index/homepage',
          name: 'homepage',
          component: homepage
          meta: { 
            title: '这是主页', 
            shareDesc: '这是本站的主页', 
            desc: 'homepage, click and see!',
            timelineTitle: '这是首页,欢迎点击关注,blablablablabla~~~',
            imgUrl: 'http://frankzhang.me/wp-content/uploads/2017/08/cropped-favicon-01.png'
          }
         },
        ]
       }
    ]
    // routerRule,公共路由配置,所有模块共用一个路由控制策略
    import wxShare from '@/utils/wxShare'
    export default function routerRule (router) {
      // other codes...
      router.afterEach(( to, from ) => {
        wxShare({ title: to.meta.title, desc: to.meta.shareDesc, link: to.meta.shareLink, logo: to.meta.shareLogo})
       })
    }
    // main.js
    import routerRule from ...
    routerRule(router)

    经过上面的配置,router.afterEach都会调用一次wxShare,重新读取router中的meta的信息重新定义微信分享内容,达到全局配置和特殊配置结合的目的。

    需要异步获取的分享内容

    这种情况,我们采取在vue实例的created钩子中,在获取数据的成功回调中调用一次wxShare即可

    // homepage.vue
    <script>
    export default {
      data() {
        return {
        }
      },
      created() {
        getHomepageInfo()
          .then( res => {
            this.$wxShare({
              title: res.title,
              desc: res.desc,
              imgUrl: res.logo
            })
          } )
      }
    }
    </script>

    需要注意的坑点

    1.如果项目采用非history模式,则需要去掉url上#后的部分传给后端换取微信签名。

    2.根据微信官方说明:

    所有需要使用JS-SDK的页面必须先注入配置信息,否则将无法调用(同一个url仅需调用一次,对于变化url的SPA的web app可在每次url变化时进行调用...

    由于SPA应用,url变化之后,需要重新config一次,重新注入当前页面的配置信息,因此这个步骤必须在router.afterEach中调用!因为根据vue-router的说明,在导航被确认之后,再调用全局的afterEach钩子,这个时候导航已经确认了,url已经改变,可以针对更新后的url重新获取微信签名了。

    相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!

    推荐阅读:

    动态加载JS文件三种方式总结

    js支持post请求的跨域方法总结

    以上就是Vue项目全局配置微信分享步骤说明的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。

    前端(VUE)零基础到就业课程:点击学习

    清晰的学习路线+老师随时辅导答疑

    自己动手写 PHP MVC 框架:点击学习

    快速了解MVC架构、了解框架底层运行原理

    专题推荐:步骤 分享 配置
    上一篇:Angular HttpClient入门教学 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • ❤️‍🔥共22门课程,总价3725元,会员免费学• ❤️‍🔥接口自动化测试不想写代码?• 聊聊用pkg将Node.js项目打包为可执行文件的方法• Node实战:运用Cookie&Session进行登录验证• 手把手带你了解Angular中的依赖注入• jQuery插件分享:Turn.js实现一个移动端电子书翻页效果• Angular学习之聊聊notification(自定义服务)
    1/1

    PHP中文网