自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

王佳斌

仁者见之谓之仁,智者见之谓之智。

  • 博客(439)
  • 资源 (4)

原创 React - Vscode 代码提示 / 补全插件

一、Reactjs code snippets二、React Redux ES6 Snippets三、Typescript React code snippets

2020-10-17 22:38:15 223

原创 React - npm start 启动报错:“babel-loader“: “8.1.0“ 版本冲突问题(两种解决方案)

报错分析阅读报错信息不难发现,是说您用 create-react-app 命令创建项目时所用到的 babel-loader 依赖为 8.1.0 版本,但您项目下 node_modules 包下的 babel-loader 版本为 8.0.6。所以导致 版本冲突 无法启动项目问题,报错信息中,React 其实已经给出了解决方案。## SEOThere might be a problem with the project dependency tree.It is likely not a

2020-10-17 22:28:20 237

原创 Vue - 项目(未编译)上传到 Gitee / GitHub 时不上传 dist 文件夹/看不到(解决方案)

前言未编译的 Vue 项目在上传码云仓库时,却看不到 dist 文件夹,这是由于 Vue 为了节约上传文件的大小,将 dist 文件给禁止上传了。解决方案将 vue 根目录下的 .gitignore 文件打开,删除掉 /dist/ ,就可以了。...

2020-10-15 20:20:47 605 2

原创 This may cause things to work incorrectly. Make sure to use the same version for both. If you are us

前言vue 版本是 2.6.11 ,而 vue-template-compiler 是2.6.12,导致的报错。完整报错,这是因为 vue / vue-template-compiler 版本不一致导致:解决只需要将 vue-template-compiler 删除,然后重新安装与 vue 版本一致的即可。一、在项目 node_models 文件夹下找到 vue-template-compiler 包,然后删除掉。二、重新执行命令安装 vue-template-compiler (项目根

2020-10-15 19:29:58 566 2

原创 微信小程序 - 获取用户头像昵称等信息(带授权检测)

前言接口调整官方文档:https://developers.weixin.qq.com/community/develop/doc/0000a26e1aca6012e896a517556c01在以前,是否授权可以直接弹出询问用户,但现在微信更改了策略,必须 由用户点击按钮触发。下面将用代码来实现用户授权及获取用户信息。功能介绍无论确认授权还是拒绝授权,都会跳转对应页面,不让用户卡在界面。点击授权后,下次不在出现授权页面了,如果拒绝,下次依然出现。以下代码可直接复制粘贴,具体功能如下:

2020-10-11 22:19:40 921 1

原创 phpMyAdmin - 数据库导入与导出(Mysql)

前言有时候,我们在本地环境写好逻辑及创建的数据库后,需要部署到服务器上,代码直接复制过去就好了,但数据库需要涉及导入与导出。导出本地环境在本地环境中,你需要登录 phpMyAdmin 进行导出操作:导出后,你会得到一个 .*sql 文件,如下图所示:导入部署环境(服务器)得到本地环境中导出的数据库后,需要在服务器环境的 phpMyAdmin 执行导入操作:...

2020-10-10 23:07:33 503

原创 宝塔Linux面板 - 添加站点建站时没有域名实现 IP 地址访问测试(宝塔面板建站 IP 访问)

前言使用面板添加站点时,必须要填写一个域名用来指向程序,没有域名怎么办?答案:域名直接写 【服务器 IP 地址】操作步骤如果还没有添加站点,则直接在创建站点的时候,域名那填写服务器地址即可,下面就不用看了。如果你创建了站点,现在想要修改域名为本机服务器地址,则按照教程走即可。首先,点击右侧导航栏【网站】→【设置】,如下图所示:然后,添加后保存。最后,直接在浏览器输入 IP 地址即可。...

2020-10-10 19:23:06 1806 7

原创 Linux - CentOS 宝塔管理面板的安装与配置管理(Windows)

前言当我们搭建或购买了 Linux 服务器后,通常都是借助面板来完成程序环境的搭建(而非命令配置),最近购买了一台云服务器,配置过程记录一下。准备工作准备连接到您远程 Linux 服务器的信息。首先,你应该明确知道你服务器的以下信息,否则无法继续:IP 地址(公网)管理员账号管理员密码一、安装(宝塔终端)下载传送门:https://download.bt.cn/ssh/BT-Term.exe官网传送门:https://www.bt.cn/linuxpro.html?invite

2020-10-10 15:31:19 1933 5

原创 《Mysql设计规范》- 数据库命名规范 / 数据库基本设计规范 / 索引设计规范 / 字段设计规范 / SQL开发规范 / 数据库操作行为规范

一、数据库命名规范所有的数据库对象名称必须使用小写字母并用下划线表示,因为默认情况下,mysql 对大小写敏感, mysql 数据库本质上是 linux 系统下的一个文件,而 linux 系统是大小写敏感的。所有数据库对象名称禁止使用 mysql 保留关键字。数据库对象的命名要能做到见名知意,并且最好不要超过 32 个字符。太长不方便使用,并且会在传输时增加网络开销。临时表必须以 tmp_ 为前缀并以日期为后缀。备份表必须以 bak_ 为前缀并以日期为后缀。所有存储相同数据的列名和列类型必须一

2020-10-09 23:03:52 1398 6

原创 微信小程序 - 获取用户当前位置信息(用于定位地址及获取地址等需求)

前言有两种获取位置的方式,一种是 直接返回经纬度等信息(必须代码处理后才能显示到界面上),另一种是 "界面选择式" 由用户打开地图选择位置。最近有添加用户收货地址需求(外卖项目),需要获取用户当前位置。第一步说白了,就是微信需要让用户确定是否允许你获取它的位置,如果你不授权,将弹框提示。首先,你必须进行 授权 ,无论是哪种获取用户地址的方式。一、配置 app.json 文件,加入以下代码:"permission": { "scope.userLocation": { "

2020-10-09 16:13:11 1705 5

原创 微信小程序 - 获取用户手机屏幕高度与宽度(两种方案)

前言有时候我们需要获取用户手机屏幕高度或宽度来完成一些界面表现,具体请看代码。第一种方案(推荐)"vw" = "view width" "vh" = "view height"使用 CSS3 引入的 vw / vh 基于宽度/高度相对于窗口大小。/* 元素根据手机屏幕宽高占位100% */.view { height: 100vh; width: 100vw;}第二种方案官方文档:https://developers.weixin.qq.com/miniprogra

2020-10-08 17:18:49 3868 9

原创 微信小程序 - 点击按钮退出小程序的解决方案(以及不兼容解决方案)

前言有时候,当用户点击按钮时 将小程序直接退出,而不是由用户点击右上角 小程序胶囊 关闭。方案官方文档:https://developers.weixin.qq.com/miniprogram/dev/component/navigator.html直接使用 <navigator> 组件即可,具体代码如下:<navigator open-type="exit" target="miniProgram">关闭小程序</navigator>注意事项你可能

2020-10-03 18:23:45 407 2

原创 微信小程序 - 随机生成订单号(JavaScript)

前言如题,随机生成订单号是很常见的需求,如下图所示:第一种可自己拼接其他字母。时间戳 + 6位随机数的订单号。function orderCode(){ // 存放订单号 let orderCode = ''; // 6位随机数(加在时间戳后面) for (var i = 0; i < 6; i++) { orderCode += Math.floor(Math.random() * 10); } //

2020-10-01 18:01:13 2791 6

原创 vant weapp - Card 商品卡片 (修改标题与金额中间间距太大问题)

前言最近在使用 Vant-weapp 小程序组件,使用 Card 组件想实现这样一个界面:在官方文档中给出的示例配置中,你根本无法调整中部宽度。。解决方案调整如下三个类,具体看下方代码:.van-card__bottom:金额 / 虚拟价格 / 数量,那一块容器。.van-card__img:图像容器。.van-card__thumb:左侧容器(图像)/* 金额/虚拟价格 - 上浮 */.van-card__bottom{ padding-bottom: 80rpx!import

2020-09-30 11:42:20 1070

原创 微信小程序 - wx.navigateTo({}) 跳转页面携带 对象/数组/复杂数据 参数(携带一个复杂对象数据参数)

前言你可以理解为:携带一个 复杂对象数据 参数,实现跳转页接收。在微信小程序,使用 wx.navigateTo({}) API 携带参数跳转页面很常见,但是今天有一个需求,需要携带一个复杂的数据,它是一个数组,里面嵌套了 N 个对象,对象里还有数组。解决方案使用 JSON 对象的两个方法:JSON.strtingify:将 object 转化为字符串JSON.parse:将字符串解析为 object。/** [发送参数]* 将对象解析为字符串*/wx.navigateTo({

2020-09-29 18:39:49 1252

原创 微信小程序 - 带参数跳转页面参数字段文章内容太长或包含特殊字符(“?“,“&“ 或 “=“)导致被截取或失败

前言在微信小程序,使用 wx.navigateTo({}) API 携带参数跳转页面很常见,但是今天有一个需求,需要携带一个复杂的数据,它是一个数组,里面嵌套了 N 个对象,对象里还有数组。 所以我需要使用 JSON.stringify 将对象转为字符串,然后再传递过去。我的场景:其中 image 属性中包含文章链接,导致了 JSON.parse 解码失败,因为被截取了。解决方案用 encodeURIComponent() 进行转码,在目标页面再用 decodeURIComponent() 解码

2020-09-29 18:36:44 1538 1

原创 APP 设计规范 - 基于人机界面指南(IOS平台设计规范)

2020-09-23 16:16:39 640 2

原创 PS - 图层显示索引不能做修改(将索引图层改为正常图层)

前言有些时候,我们从网上下载的图片用 PS 打开图层竟然显示为 索引 ,如下图所示:我们无法对图片进行修改,这时候就需要 修改索引颜色。解决方案在顶部菜单栏依次点击【图像】→【模式】→【勾选RGB颜色】:完成。...

2020-09-22 16:00:08 325 2

原创 微信小程序 - 点餐界面添加购物车左右摆动动画(用户点击添加到购物车后会有一个左右摆动的购物车提示)

效果图动画代码这里 只提供图中购物车动画代码,不提供以上点餐界面(需要点餐界面 点击这里:Gitee仓库)。在触发代码中使用 this.cartWwing() 调用动画,不理解请访问 教程。/** * 点击商品+号购物车摆动 * @return void */cartWwing: function(){ // 创建动画实例(animation) var animation = wx.createAnimation({ duration: 100,//动画持续时间

2020-09-22 09:07:58 2353 2

原创 微信小程序轮子 - 外卖点餐左右联动界面完整源码(类似美团饿了么点餐界面)

前言流畅体验,无 Bug,为了更好的使用,界面 CSS 没做太多处理,请根据自身需求补充。已完成该有的点餐功能(你可以随意扩展功能),最后点击 去结算 时能获取到用户点了哪些商品,具体如下图所示:效果图Gitee 码云仓库地址https://gitee.com/wangjiabin-x/ordering-interface使用方法直接查看仓库 README,克隆项目运行起来!...

2020-09-08 08:48:47 2583 1

原创 微信小程序 - wx:if 判断一个数组中是否为空(判断是否有数据)

前言有这么一个需求,当服务器返回的数据为空时,则证明没有数据,那么前端就应该展示一个如下图所示的区块,来友好提示用户。实现判断方法有很多,这里我只谈我认为最简单且代码最简洁的方案。直接判断数组长度,如果等于 0 则就证明无数据,具体代码如下:/** 假设服务器返回的数据是一个数组(Arr)* Arr: [ {}, {} ]*/<view wx:if="{{ Arr.length == 0 }}">...</view>...

2020-09-03 09:02:55 1418

原创 微信小程序 - 每隔一段时间请求后端接口获取最新数据(实时刷新数据)

前言如果你想直接看实现方案,直接移步最后面。有时候,需要实现 页面停留时每隔一段时间请求后端接口更新最新数据 ,就比如我现在这个项目,它就需要每隔一段时间进行刷新,以确保数据是最新的:逻辑图实现说白了,在 onShow() / onHide() 生命周期函数中注册 定时器 即可。Page({ /** * 页面的初始数据 */ data: { realTime: null,//实时数据对象(用于关闭实时刷新方法) }, /** * 生命

2020-09-02 18:19:00 2253 1

原创 微信小程序 - 引入第三方字体(使用网络字体艺术字)

前言有时候因项目需求,可能需要一套第三方艺术字体,就像如图所示效果(店内自取 / 外卖):实现当然,网页也可以用。引入一套第三方字体(我这里只提供如上图所示的第三方字体),网上很多字体库。在 CSS 文件中写入自定义字体样式。调用。具体演示代码:<view class="main-title">店内自取</view>/* 字体封装 */@font-face { font-family: "blod"; src: url('https://st

2020-09-01 16:47:07 1268

原创 微信小程序 - 网络请求(wx.request)封装:Promise 获取回调结果及降低微信 API 耦合度

前言降低网络请求和 wx.request 的耦合度,改用 Promise 的方法获取回调结果。封装创建 service.js 文件,写入以下封装好的函数:// 封装 wx.requestexport default function request(options) { return new Promise((resolve, reject) => { wx.request({ url: options.url, //服务器接口地址 method: opt

2020-08-31 10:32:53 496 1

原创 Mysql - 报错:Duplicate entry ‘0‘ for key ‘PRIMARY‘(Navicat for MySQL)解决

前言我用的是可视化数据库软件 Navicat for MySQL ,出现如下弹框报错:XXXX - Duplicate entry '0' for key 'PRIMARY'解决由于 主键字段没有添加自动递增导致的 ,让其自增即可,如下图所示:保存。

2020-08-30 17:14:37 530 1

原创 Thinkphp 6 - 事务操作(自动(transaction) / 手动(startTrans))

前言要想了解 TP6 事务操作,首先要知道什么是事务(即数据库事务)。???? 举个例子,我们去银行转账,操作可以分为下面两个环节:从第一个账户划出款项。将款项存入第二个账户。在这个过程中,两个环节是 关联 的。第一个账户划出款项必须保证正确的存入第二个账户,如果第二个环节没有完成,整个的过程都应该取消,否则就会发生丢失款项的问题。整个交易过程,可以看作是一个事务,成功则全部成功,失败则需要全部撤消,这样可以避免当操作的中间环节出现问题时,产生数据不一致的问题。数据库事务是一个逻辑上

2020-08-29 16:30:29 1331 1

原创 Thinkphp 6 - 数据库配置未定义:mysql(throw new InvalidArgumentException(‘Undefined db config:‘ . $name);)解决方案

前言场景是这样的。我创建了一个数据库,并配置了 config/database.php ,具体报错信息和代码如下:database.php(看似没有任何问题)但却报错。 // 数据库连接配置信息 'connections' => [ 'demo' => [ // 数据库类型 'type' => 'mysql', // 服务器地址 'hostname'

2020-08-29 15:21:15 549

原创 Thinkphp 6 - 继承系统 Facade 类实现静态方式调用动态方法(为自定义或第三方类库添加静态代理)

前言推荐参照官方文档一起看:https://www.kancloud.cn/manual/thinkphp6_0/1037491系统已经为大部分核心类库定义了 Facade(门面) ,当然我们也可以为自己的类库添加静态代理。下面,我们一步步手工来创建一个自己的静态调用类库。一、编写类库这里的类库可以是自己编写的,当然也可以是第三方的轮子。首先,我们在 app/ 目录下创建一个 common 公共类库文件夹,并创建 Demo.php :然后打开 Demo.php 文件,编写自己的类库

2020-08-28 10:30:48 1178 1

原创 Thinkphp 6 - 连接配置多个数据库并实现自由切换(详细过程及实例demo)

前言有时候,我们需要配置多个数据库,根据业务查询每个数据库下不同的表。接下来,我们一步一步实现。一、创建数据库我这里测试使用的是本地环境(127.0.0.1)。创建如下图所示 数据库及表(用户表 / 管理员表),简单写点东西:admin(数据库名):administrator_information(表名)user(数据库名):essential_information(表名)二、配置数据库注意:数据库连接参数(如用户名密码)应为你个人的,这里暂时用我的,请自行更改。

2020-08-28 08:25:16 2218

原创 PHP设计模式 - 门面模式(Facade)通俗易懂 / 友好示例代码

前言门面模式(Facade)又称外观模式,用于为子系统中的一组接口提供一个一致的界面。门面模式定义了一个高层接口,这个接口使得子系统更加容易使用:引入门面角色之后,用户只需要直接与门面角色交互,用户与子系统之间的复杂关系由门面角色来实现,从而降低了系统的耦合度。打个比方,比如我们要在淘宝买东西,我基本上只需要鼠标点一些按钮就完成了。但是实际上网站的后台是 很多个子系统一起去完成 你购买商品的任务的,比如网站系统,购物车系统,订单系统,用户中心系统,支付系统。这些系统 对外通过了统一的接口,让你在

2020-08-27 10:45:22 2146 4

原创 PHP - 命名空间(namespace)概述及实例说明

https://www.php.net/manual/zh/language.namespaces.rationale.php

2020-08-26 17:54:14 1595 1

转载 专访 Livid:程序员值得花时间一看!

谈沟通在公开场合讲话,是一个非常有用的技能「沉默寡言」、「不善言辞」一般是形容程序员的标配,但在我和Livid的两个小时的交流中,感受到的却全然不是这样。聊到小时候的趣事儿,Livid笑着说:「从小属于臭不要脸的那类型,什么辩论、演讲、播音样样都来。」现在看来,这些经历培养的能力让Livid受益终身,回想曾经参与的种种活动,Livid认为「在公开场合讲话是一个非常有用的技能。很多时候很多事情你自己因为太熟悉,就假设别人也和你一样熟悉。但是现实不是这样的,你需要持续地进行有效的沟通,别人才能真的懂」。2

2020-08-25 10:15:06 207 1

原创 微信小程序 - swiper 组件自定义指示器样式(通过类名设置样式)

解决方法注意:使用以下类名需要 在前面加上外面 swiper 容器的类名 否则可能会不生效!指示器样式类名:wx-swiper-dot当前指示器样式类名:wx-swiper-dot-active

2020-08-24 10:19:27 709 2

原创 JavaScript - 判断对象数组中是否存在某个对象(一维 / 多维数组判断)

一维数组存在则返回当前项索引,不存在则返回 -1。这个很简单,因为数组项不包含嵌套,直接用 JavaScript 提供的 indexOf 方法。// Arrayvar arr = ['A', 'B', 'C']// 如果不等于-1则代表存在if(arr.indexOf('D') != -1){ console.log('存在!')}// 否则不存在else{ console.log('不存在!')}多维数组这类数组较为复杂,下面有 2 个经典方法,根据具体业务逻辑情

2020-08-24 10:13:25 1474 1

原创 微信小程序 - 判断对象数组(数组项为对象)中是否存在某个对象

前言因微信小程序中的 JavaScript 与浏览器环境下存在一定的差异,数组有些 API 无法使用。往往我们都是动态添加需求,避免不了需要 判断数组对象中是否存在相同项 。解决方案该判断函数可在微信小程序中正常执行,通过遍历数组完成查找。// 需要判断的数组var arr = [ {name: '小红'}, {name: '小张'}]/* * @判断函数(推荐变量接收结果)* @返回值: Boolean* 如果返回true 则表示数组中有相同项* 如果返回false

2020-08-24 09:35:40 1498

原创 微信小程序 - 点击事件与长按事件共存且不冲突(用户可长按可点击)

前言对于同一控件同时设置 bindtap 和 bindlongtap ,会发现长按时先出现 bindlongtap 的事件,然后触发点击事件,显然这不是我们想要的。下面是个已实现功能的实例,请根据业务逻辑进行修改。wxml<!-- 此处更换为你的触发组件 --><button bindtouchstart="handleTouchStart" bindtouchend="handleTouchEnd" bindlongpress="handleLongPress"

2020-08-24 08:52:20 1442 2

原创 微信小程序 - 调用微信 API 回调函数内拿不到 this 问题(解决方案)

前言在微信 API 回调函数内 this 指向的是微信 API,所以拿不到 this.data.* / this.* 值。比如,下面这段代码(回调函数内访问this.data.*)就会报错:<button bindtap="go">测试</button>Page({ data: { message:'我是this上的值' }, /* * 事件处理 */ go: function() { wx.showModal({

2020-08-23 16:29:30 1865 1

原创 微信小程序 - 深 / 浅拷贝实现方法

前言在微信小程序中,你无法 直接使用常规浏览器环境中的深浅拷贝方法。但可以借助 utils.js 实现,下面是方法。创建深浅拷贝函数依次打开小程序目录【utils】→【utils.js】,写入深拷贝函数并暴露出去。// utils.js// 对象深拷贝函数const deepClone = function(initalObj) { var obj = {}; obj = JSON.parse(JSON.stringify(initalObj)); return obj;}

2020-08-23 15:29:47 2640 1

原创 JavaScript - 浅拷贝 / 深拷贝(函数封装)

前言如果你只想知道如何实现深浅拷贝,请直接跳过 前言 ,移步代码部分。今天开发小程序,需求是 实现一个长按管理应用的功能(似支付宝应用管理功能) ,当我做到了用户可以添加或移除应用时,发现直接操作改变了原数组(即应用列表数据),导致取消功能无法完成(因为需要对比原数组,但已经被改变了)。解决办法就是将初始数组进行拷贝,让用户操作副本。这样取消按钮的恢复与保存功能就能实现。浅拷贝仅仅复制对象的引用,而不是对象本身。浅拷贝的实现方法比较简单,下面介绍 2 个,都可以直接使用。一、简单复制

2020-08-23 14:18:47 1259 1

原创 微信小程序 - 无限循环执行动画(Animation)

效果图wxml<!-- 动画容器(执行动画) --><image src="https://img-blog.csdnimg.cn/20200820180305411.png"animation="{{ animationData }}"></image><!-- END --><!-- 触发按钮 --><button bindtap="go" style="">动起来</button><!--

2020-08-20 19:40:09 1517 1

ScreenToGif2193.zip|ScreenToGif2193.zip

windows 最好免费录制 GIF 图片软件,操作非常简单,功能丰富,可用于写博客时录制程序效果等等。

2020-08-27

Insomnia_setup.6.6.2.rar

类似postman,REST接口测试工具【官网最新版】。 【针对 官网下载困难、网络限速或请求不到、无法下载 这些问题放出该资源】

2019-08-11

mysql rpm.zip

红帽版mysql rpm包,版本为5.7.26,里面包含四个rpm包: (1)mysql-community-common-5.7.26-1.el6.x86_64.rpm (2)mysql-community-client-5.7.26-1.el6.x86_64.rpm (3)mysql-community-libs-5.7.26-1.el6.x86_64.rpm (4)mysql-community-server-5.7.26-1.el6.x86_64.rpm 本人已经安装成功,特此拿出来供需要的人使用。

2019-06-13

同一局域网内实现教师机通过IP地址传文件给学生机

这是一款用于在同一局域网中,进行文件传输的小工具。如:在一个机房里,老师可以通过这个软件(前提同一网络下),把课件上传到一个随机生成的ip地址中,学生们通过浏览器访问IP地址的方式,下载到课件,且学生机不需要网络!

2019-05-11

空空如也

空空如也
提示
确定要删除当前文章?
取消 删除