DemoH

DemoH 查看完整档案

其它编辑  |  填写毕业院校  |  填写所在公司/组织填写个人主网站
编辑
_ | |__ _ _ __ _ | '_ \| | | |/ _` | | |_) | |_| | (_| | |_.__/ \__,_|\__, | |___/ 该用户太懒什么也没留下

个人动态

DemoH 提出了问题 · 2019-09-11

vue中使用微信 jssdk 包签名错误但签名验证通过了嗷

微信公众号 绑定连接 ,使用公众号中的 定位 不得不用 微信的 jssdk

然后 npm install weixin-js-sdk
再所需要的页面中 import wx from 'weixin-js-sdk'

然后 在

 created() {
    let url = window.location.host.split('#')[0]
    R.a.a({
      local: url
    }).then(resp =>{
      if(resp.ok){
        wx.config({
          debug: true, // 开启调试模式,调用的api的返回值 若要查看传入的参数,可以在pc端打开,参数自动Log出来
          appId: resp.data.appId, // 公众号的唯一标识
          timestamp: resp.data.timestamp, // 生成签名的时间戳
          nonceStr: resp.data.nonceStr, // 生成签名的随机串
          signature: resp.data.signature,// 签名
          jsApiList: ['getLocation'] // 必填,需要使用的 位置服务 JS接口列表,各项JS接口 参照 微信JSSDK文档附录1
        });
        wx.ready(function () {
          // 检测是否支持微信Js接口
          wx.checkJsApi({
            jsApiList: [
              'getLocation'
            ],
            success: function (res) {
              console.log('success',res);
              if (res.checkResult.getLocation == false) {
                this.$toast('你的微信版本太低,请升级到最新的微信版本!');
                return;
              }
            }
          });
          wx.getLocation({
            // 获取 当前位置信息(经纬度,如需转换实际地址,需引用第三方转换)
            success: function (res) {
              console.log('定位信息',res)
              var latitude = res.latitude; // 纬度,浮点数,范围为90 ~ -90
              var longitude = res.longitude; // 经度,浮点数,范围为180 ~ -180。
            },
            cancel: function (res) {
              Message("用户拒绝授权获取地理位置");
            }
          });
        })
        wx.error(function(res){
          console.log('error',res);
        });
      }
    })
  },

然后就报错
clipboard.png
但是 后端验证 签名 验证是对的 w
网上搜问题, 很多说解决了 但也不说是怎么解决的 好烦啊 (┬_┬) 有没有大神给解答解答哇

关注 2 回答 1

DemoH 回答了问题 · 2019-09-05

这种效果有相关UI库嘛

关注 5 回答 4

DemoH 赞了文章 · 2019-08-31

一个奇葩问题引发的"吐血"

某天,和某同事交流技术,他提到了一个问题:在js中,如果一个变量赋值给另一个变量,那么他们一定相等吗?为什么?。然后,我脱口而出,是相等,这无毛病。变量赋值本身就只是一个定义好的变量的副本,他们相等是没问题的,即便是引用类型的数据对象,在赋值的时候保持着内存的同一引用,它们当然也相等啊。当然注意这里是相等,不是全等。即"=="而非"===",所以没有什么类型转换的讨论。不信,那我们来两个代表示例看看:

//基本类型
var a;
var b = a;
b == a;//true
//引用类型
var a = {};
var b = a;
b == a;//true,它们的引用地址相同

看起来好像是没什么问题的。然而事实真的是这样吗?

clipboard.png

我转念一想,不对啊,有这么简单的问题?同事再给我一个例子,狠狠的打击了我,卧槽,还可以这样?

clipboard.png

js数据当中还有一个特殊的值,那就是NaN

var a = NaN;
var b = a;
b == a;//猜猜这里是啥

答案真的是出乎你的意料,当然是false,也就是不相等啦。

clipboard.png

不带这么玩的吧?

clipboard.png

后面脑袋一闪,原来如此,这么低级的错误都犯,NaN虽然是一个数值型的值,但是它并不是一个确切的值,所以NaN !== NaN。也就是说,变量的赋值也不会改变它们的不等性呢。

clipboard.png

还可以这么玩。

ps:总结:任何时候任何一个问题都不要小看它,拘束于表面,因为它随时都会是一个坑,让你跳进去,认真点总不会有坏处的。

clipboard.png

鄙人创建了一个QQ群,供大家学习交流,希望和大家合作愉快,互相帮助,交流学习,以下为群二维码:

clipboard.png

查看原文

赞 10 收藏 2 评论 9

DemoH 提出了问题 · 2019-08-22

关于vue中使用MUI前端框架,有没有大佬做过

开着 MUI 框架 组件比较多,也比较适合现在的项目。
看着 MUI 适合做APP. 不知道 做web端网页可以适用不。
有没有大神用过的,给在下 ,意见建议。

或者私信我联系方式~ 拜大佬为师,茶水丰厚哈哈😄

关注 2 回答 1

DemoH 赞了回答 · 2019-08-10

解决前后端分离的意义是什么?

如果全公司只有你一个工程师,那么你还要不要做前后端分离?

我曾经是公司里唯一的工程师,我负责前端、后端、手机端,我曾经用php echo出所有的html。

后来我引入了jquery,从引入ajax的那一刻起,我知道前后端可以分离,因为不需要等待访问数据库完成才显示页面,而可以先把页面显示出来,然后再填充数据。

然后我抛弃了jquery,引入了vue,双向数据绑定使我可以把注意力集中在数据结构上,而更重要的是单页面渲染可以在地址栏不动的情况下改变页面内容。

我付出这么多精力,把已经写好的东西推翻再推翻,只是为了一件事情:让这个网站看起来比别人的更炫酷,我能做到别人做不到的事情,因为超越别人的感觉是如此美好。

在那个小公司里,所有的事情都是我一个人做的,我开发了后端的RESTful接口,引入了Rbac机制,加入了JWT,我做了cdn,我做了负载均衡,我做了数据库读写分离,我搭建了gitlab,我搭建了jenkins,我搭建了zabbix,我搭建了nginx,我申请了letsencrypt的免费https证书,因为它每隔三个月需要自动更新,我引入了acme自动更新机制。我做了前端的vue,我写了所有的css,我引入了微信的jssdk,我引入了微信支付,我开发了小程序,我用react native开发了原生的app,后来又用flutter重构了整个系统。

所以你觉得我是后端工程师,还是前端工程师?

我为什么一个人也要做前后端分离?因为这样的用户体验最好,这样的网站才是先进的网站。

我不觉得什么事情是别人的事情,我不觉得写接口是后端的事情,我不觉得写css是前端的事情,所有的事情都是这个网站的事情,都是我的事情。

后来我们的公司壮大了,又招了几个人,大家逐渐有了分工,但是对我来说,这是我的网站,不管哪里出现了问题,不管是后端出现了问题,还是前端出现了问题,我都会亲自上手修改,所有的代码对我来说都是透明的。

再后来,我不再去亲自动手改代码了,我每天都看每个人的代码,然后告诉他应该如何修改。

责任感再加上时间,最后会使你不再区分前端和后端。

从什么时候做起?从现在做起,学习你不了解的东西,从第一块砖开始,这是你的软件。

关注 9 回答 10

DemoH 发布了文章 · 2019-08-08

记录 vue 实现Web端的定位功能 获取经纬度

首先我这里的需求呢, 是获取当前用户的经纬度
经过无数次的测试, 先后用了 腾讯/百度地图的api,最后绝对还是高德的js APi
废话不多说, 直接上代码。

图片描述

首先在 index.html 里面 引入

<script type="text/javascript" data-original="https://webapi.amap.com/maps?v=1.4.15&key=你申请的key"></script>

然后 去你需要获取的页面 开始写, 我这里拿来测试用,所以只有一个App.vue 文件。
图片描述

貌似已经 很详细了。
通过调用谷歌的api 可以实现 准确定位,

function onComplete(data){
 // 这里面是 允许获取位置服务后 发生的事情,这里我直接获取想要的信息
}
function onError(data){
  // 这里面是获取定位失败后, 执行的事情,
  // 这里我设置的是获取失败后, 启用ip 定位
  // 但是有一点嗷,就是不太准确, 而且安卓微信上 经过测试,只能走这里 。
}

下面上完整代码:

methods: {
    getLocation() {
      let _this = this;
      AMap.plugin('AMap.Geolocation', function () {
        var geolocation = new AMap.Geolocation({
          // 是否使用高精度定位,默认:true
          enableHighAccuracy: true,
          // 设置定位超时时间,默认:无穷大
          timeout: 5000,
        })
        geolocation.getCurrentPosition()
        AMap.event.addListener(geolocation, 'complete', onComplete);
        AMap.event.addListener(geolocation, 'error', onError);
        // data是具体的定位信息
        function onComplete(data) {
          console.log('具体的定位信息',data)
        }
        function onError(data) {
          // 失败 启用 ip定位
          AMap.plugin('AMap.CitySearch', function () {
            var citySearch = new AMap.CitySearch();
            citySearch.getLocalCity(function (status, result) {
              if (status === 'complete' && result.info === 'OK') {
                  // 查询成功,result即为当前所在城市信息
                console.log('通过ip获取当前城市:', result)
              }
            })
          })
        }
      })
    },
  },
  created () {
    // 此处为调用精确定位之后,调取ip定位,可根据实际情况改写
    this.getLocation();
 }

经过测试:

ios机型,在微信内置浏览器 或 其他浏览器 可以完美 精确定位

安卓机型, 在微信内置浏览器 显示定位失败, 转为ip定位, 稍有偏差,但不会超级大,但是在其他浏览器 可以实现精确定位。

具体原因 还没有解决, 希望大佬们, 可以提出建议 意见咯。

本人小菜鸡一枚, 希望结识各路大佬~~~~

另外可以相互学习哟, 这里有个 杠精群, 既可以讨论经验技术,又可以 吹牛嗷:
图片描述

查看原文

赞 1 收藏 1 评论 3

DemoH 发布了文章 · 2019-08-08

记录 vue 实现Web端的定位功能 获取经纬度

首先我这里的需求呢, 是获取当前用户的经纬度
经过无数次的测试, 先后用了 腾讯/百度地图的api,最后绝对还是高德的js APi
废话不多说, 直接上代码。

图片描述

首先在 index.html 里面 引入

<script type="text/javascript" data-original="https://webapi.amap.com/maps?v=1.4.15&key=你申请的key"></script>

然后 去你需要获取的页面 开始写, 我这里拿来测试用,所以只有一个App.vue 文件。
图片描述

貌似已经 很详细了。
通过调用谷歌的api 可以实现 准确定位,

function onComplete(data){
 // 这里面是 允许获取位置服务后 发生的事情,这里我直接获取想要的信息
}
function onError(data){
  // 这里面是获取定位失败后, 执行的事情,
  // 这里我设置的是获取失败后, 启用ip 定位
  // 但是有一点嗷,就是不太准确, 而且安卓微信上 经过测试,只能走这里 。
}

下面上完整代码:

methods: {
    getLocation() {
      let _this = this;
      AMap.plugin('AMap.Geolocation', function () {
        var geolocation = new AMap.Geolocation({
          // 是否使用高精度定位,默认:true
          enableHighAccuracy: true,
          // 设置定位超时时间,默认:无穷大
          timeout: 5000,
        })
        geolocation.getCurrentPosition()
        AMap.event.addListener(geolocation, 'complete', onComplete);
        AMap.event.addListener(geolocation, 'error', onError);
        // data是具体的定位信息
        function onComplete(data) {
          console.log('具体的定位信息',data)
        }
        function onError(data) {
          // 失败 启用 ip定位
          AMap.plugin('AMap.CitySearch', function () {
            var citySearch = new AMap.CitySearch();
            citySearch.getLocalCity(function (status, result) {
              if (status === 'complete' && result.info === 'OK') {
                  // 查询成功,result即为当前所在城市信息
                console.log('通过ip获取当前城市:', result)
              }
            })
          })
        }
      })
    },
  },
  created () {
    // 此处为调用精确定位之后,调取ip定位,可根据实际情况改写
    this.getLocation();
 }

经过测试:

ios机型,在微信内置浏览器 或 其他浏览器 可以完美 精确定位

安卓机型, 在微信内置浏览器 显示定位失败, 转为ip定位, 稍有偏差,但不会超级大,但是在其他浏览器 可以实现精确定位。

具体原因 还没有解决, 希望大佬们, 可以提出建议 意见咯。

本人小菜鸡一枚, 希望结识各路大佬~~~~

另外可以相互学习哟, 这里有个 杠精群, 既可以讨论经验技术,又可以 吹牛嗷:
图片描述

查看原文

赞 1 收藏 1 评论 3

DemoH 赞了回答 · 2019-07-23

解决如何将 JavaScript 代码里的变量名转换为驼峰命名?

代码转换的话,属于 Babel 的范围,用 Babel 的插件解决.

可以将变量名转换为小驼峰命名的插件

  • babel-plugin-camelcase-identifier
  • babel-plugin-transform-imports

以下演示使用babel-plugin-camelcase-identifier插件,配置比较简单

提示

建议在做转换之前,先把原有代码备份好,比如使用 git.如果能做好单元测试的话,是更好的了,保证转换之后的代码能正常运行.

安装

yarn add -D @babel/core @babel/cli babel-plugin-camelcase-identifier

配置

// .babelrc
{ "plugins": ["camelcase-identifier"] }

使用

// index.js
var ab_ss = 1
var a = {
  ss_aa: 3,
}
var a = ab_ss + 2
npx babel index.js --out-file index-compiled.js

结果

转换结果


关注 5 回答 6

DemoH 回答了问题 · 2019-07-22

解决如何将 JavaScript 代码里的变量名转换为驼峰命名?

大佬, 记得有方法了之后, 把方法贴出来嗷

关注 5 回答 6

DemoH 提出了问题 · 2019-07-13

vue中 两个对象数组 去重, 把 不一样的 push到一个新数组里 怎么操作 小白求关爱

 let a = [
          {employeeId: "TAEP201903130011",itemId: "C001",targetValue: 999,thisDate: "2019-07-13"},
          {employeeId: "TAEP201903130011",itemId: "C002",targetValue: 887,thisDate: "2019-07-13"},
          {employeeId: "TAEP201903130011",itemId: "C003",targetValue: 777,thisDate: "2019-07-13"},
          {employeeId: "TAEP201905060026",itemId: "C001",targetValue: null,thisDate: "2019-07-13"},
          {employeeId: "TAEP201905060026",itemId: "C002",targetValue: null,thisDate: "2019-07-13"},
          {employeeId: "TAEP201905060026",itemId: "C003",targetValue: null,thisDate: "2019-07-13"}
        ]
let b = [
          {employeeId: "TAEP201903130011", itemId: "C001", targetValue: 999,  thisDate: "2019-07-13"},
          {employeeId: "TAEP201903130011", itemId: "C002", targetValue: 887,  thisDate: "2019-07-13"},
          {employeeId: "TAEP201903130011", itemId: "C003", targetValue: 777,  thisDate: "2019-07-13"},
          {employeeId: "TAEP201905060026", itemId: "C001", targetValue: null, thisDate: "2019-07-13"},
          {employeeId: "TAEP201905060026", itemId: "C002", targetValue: "2",  thisDate: "2019-07-13"},
          {employeeId: "TAEP201905060026", itemId: "C003", targetValue: null, thisDate: "2019-07-13"}
        ]

关注 3 回答 2

认证与成就

  • 获得 8 次点赞
  • 获得 29 枚徽章 获得 0 枚金徽章, 获得 8 枚银徽章, 获得 21 枚铜徽章

擅长技能
编辑

(゚∀゚ )
暂时没有

开源项目 & 著作
编辑

(゚∀゚ )
暂时没有

注册于 2019-02-01
个人主页被 662 人浏览