util.js

【小程序】 版本自动更新的实现

核能气质少年 提交于 2020-08-18 12:01:55
更新问题 微信小程序遇到新版本发布后,旧版本无法自动更新的困扰. 我之前进行开发的时候: 最笨的方法就是,删除小程序后再重新搜索打开就好; 注意:准确来讲,版本自动更新的方法越早进行补充越合理, 尤其适合前期使用人数较少的时候就做补充 以避免后期使用人数太多时而旧版本依然无法检测更新及时替换的情况 实现方案 1.小程序的运行机制 热启动:小程序打开后在一段时间内(目前5分钟)再次被打开,此时会将后台的小程序切换到前台。 冷启动:小程序首次打开或者销毁后重新打开 2.更新版本 冷启动时,如果发现有新版本,将会异步下载新版本的代码包,并同时用客户端本地的包进行启动,及新版本的小程序需要等下一次冷启动才会应用上; 如果马上应用最新版本,使用 wx.getUpdateManager API 进行处理。 实现一: /** * 检测当前的小程序 * 是否是最新版本,是否需要下载、更新 */ function checkUpdateVersion() { //创建 UpdateManager 实例 const updateManager = wx.getUpdateManager(); //检测版本更新 updateManager.onCheckForUpdate(function (res) { // 请求完新版本信息的回调 if (res.hasUpdate) { /

站长新手入门:从0开始搭建微信小程序商城,不会代码也能开商城(附带源码)

我是研究僧i 提交于 2020-08-16 10:14:15
2020年全球疫情肆虐下,经济环境持续低迷,虽然国内已逐渐复苏,但线下消费仍然没法短期回到常态,所以今年开始直播电商、线上零售更加火爆。那么如果一个没有编程基础,或者说稍微懂一点技术的老板,要做小程序可以吗?那么今天跟着小A一起,从零开始搭建一个属于自己的小程序商城。(以下教程对完全的小白可能会有一定难度,如果阅读有问题可以反复研究) 小程序申请及认证 1、微信小程序申请; 进入微信公众平台,点击右上角的“立即注册”,账号类型选择“小程序”。按照官方引导,逐步完成小程序注册。由于小程序商城开发必须用到微信支付功能,所以在填写到“主体信息登记”时,注册方式选择“微信认证”通过微信认证验证主体身份,需支付300元认证费。这样将小程序申请和小程序认证同时操作,节省审核时间。 如之前有同一主体已认证的服务号,可以登录认证服务号,开通小程序,按照步骤填写信息提交即可。通过认证服务号开通的小程序无需再次进行小程序认证。 2、小程序信息完善; 完成注册后,微信小程序信息完善步骤和开发可同步进行。选择对公打款的用户,完成汇款验证后,可以补充小程序名称信息,上传小程序头像,填写小程序介绍并选择服务范围。 3、小程序申请支付 已认证的小程序可登录小程序,申请微信支付。 开发前准备 1、绑定开发者; 登录微信公众平台小程序,进入用户身份-开发者,新增绑定开发者。已认证的小程序最多可绑定20个开发者

微信小城序入门 util.js两种添加方式

丶灬走出姿态 提交于 2020-05-09 20:17:22
初学微信小程序有很多不懂的。 微信小程序目前有大小限制,最大不能超过2M,所以复用一些js文件是非常有必要的: 目前我所了解的是以下两类方法: 第一:将js文件放入主目录的app.js文件下 例如在app.js文件中放入函数: sum:function(a,b){ return a+b; } 此时在其他js文件中的函数中调用此函数,可以用如下方法: var app = getApp() Page({ data: { s: '' }, onLoad: function () { that.setData({ s: app.sum(9,7); }) } }) 此时s的值就是16 第二:将js文件放入主目录的utils/util.js文件下 例如在util.js文件中放入函数 function sum(x,y){ return x+y } 此时需要在module.exports里声明该函数(个人使用'声明'这个词语) module.exports = { formatTime: formatTime, sum:sum } 此时在其他js文件中的函数中调用此函数,可以用如下方法: var util = require('../../utils/util.js') Page({ data: { s: '' }, onLoad: function () { that.setData({ s:

不为人知easy-mock-cli

痞子三分冷 提交于 2020-05-06 08:56:42
初识easy-mock-cli,始于一场缘分 在谈及easy-mock-cli的时候,先说一下easy-mock是什么把?官方解释是:Easy Mock 是一个可视化,并且能快速生成 模拟数据 的持久化服务。通俗易懂的话,就是假数据。使用的目的就是为了在前后端开发的过程中,前端会比后端先行一步,在还原完页面就需要等后端的接口在去开发功能,这样,就会造成前后端开发时间不同步,浪费开发的时候,mock的出现就解决了这个困境。前端在还原完页面之后,可以根据与后端定义好的mock接口,进行开发。等后端开发完成之后,与后端联调。项目大功告成,也没有谁等谁,互相嫌弃的问题了。 easy-mock-cli 的自我介绍 Easy Mock 是一个可视化,并且能快速生成模拟数据的服务。以项目管理的方式组织 Mock List,能帮助我们更好的管理 Mock 数据,不怕丢失。 Easy Mock CLI 是一个基于 Easy Mock 快速生成 API 调用文件的命令行工具。 可以根据你mock的接口,结合axios生成的api层,一开始觉得真好啊,不用去一个个手写api层,自动生成了mock中所有的,觉得真开心呀,省事省力,然后就开始用mock模拟数据,进行接口测试。 easy-mock-cli的安装 npm install -g easy-mock-cli 创建配置文件 .easymockrc {

[3.0] 一个人开发一个App,小程序从0到1,删减添加

一笑奈何 提交于 2020-04-29 13:30:56
在这个黄道吉日,咱们将要干一件,惊天地泣鬼神,妇孺皆知的大事,那就是删掉微信开发工具自动生成的源代码。 删掉pages下的index、logs目录,啥都不留; 删掉utils下的util.js,只流空气; 删掉app.js里的代码,只留App({}); 删掉app.wxss里的内容,只留下一地鸡毛; 删掉sitemap.json, 只留下一声叹息,但这里有个前提:你确定所有页面都可被索引(搜索),而且一直不会有例外,如果不是,那就留着,如果你已经删掉了,那就补回来。 删掉project.config.json,如果不想再接着开发的话; 删掉,哦,不,是修改。修改app.json里的pages值为:"pages/home/index",并快速按下保存。当然,慢速也是可以的。 删掉,删掉,把一切的烦恼统统删掉;删掉,删掉,把多余的代码全部删掉;删掉,删掉,我听到你在鬼哭狼叫。 删一时,一时爽,一直删除,一直爽。爽过之后,再慢慢增加回来。 3.1 增加 在app.json中的pages新增pages/home/index并进行保存时,你会发现在左边pages目录下,多了一个home目录,里面存着页面4件套。 按微信产品经理的建议,开发小程序时,先从布局文件wxml和样式文件wxss开始,紧接着实现业务逻辑(js)。至于json,不用开发,只是配置就好。 好了,这次做个乖宝宝

微信小程序:防止多次点击跳转(函数节流)

人走茶凉 提交于 2020-04-21 05:48:59
场景 在使用小程序的时候会出现这样一种情况:当网络条件差或卡顿的情况下,使用者会认为点击无效而进行多次点击,最后出现多次跳转页面的情况,就像下图(快速点击了两次): 解决办法 然后从 轻松理解JS函数节流和函数防抖 中找到了解决办法,就是 函数节流(throttle):函数在一段时间内多次触发只会执行第一次,在这段时间结束前,不管触发多少次也不会执行函数。 /utils/util.js: function throttle( fn, gapTime) { if (gapTime == null || gapTime == undefined) { gapTime = 1500 } let _lastTime = null return function ( ) { let _nowTime = + new Date() if (_nowTime - _lastTime > gapTime || !_lastTime) { fn() _lastTime = _nowTime } } } module.exports = { throttle: throttle } /pages/throttle/throttle.wxml: < button bindtap= 'tap' data-key= 'abc'>tap </ button> /pages/throttle/throttle

Vue中的防抖

浪子不回头ぞ 提交于 2020-04-10 10:55:02
vue中使用防抖 应用场景:多次点击提交按钮 首次提交执行,重复提交就会等待一定的时间提交执行 //util.js export const debounce = (fn, wait) => { let delay = wait|| 500 let timerout; return function () { let args = arguments; if (timerout) { clearTimeout(timer) } let callNow = !timerout; timerout = setTimeout(() => { timerout = null }, delay) if (callNow) fn.apply(this, args) } } //引用 import { debounce } from '@/env/util' methods:{ refresh:debounce(function(){ //执行函数 this.refreshTypes2('G'); },3000) } 总结 首次点击提交按钮会立即执行一次debounce方法,后面3s内不触发事件才能继续执行。这很适合防止表单重复提交! 来源: oschina 链接: https://my.oschina.net/u/4461771/blog/3227547

大前端模块化

青春壹個敷衍的年華 提交于 2020-02-27 07:47:22
打一个通用 UMD 包 有这样一个场景,客户端运行很久,但是法务部和数据部需要收集用户的一些信息,这些信息收集好之后需要进行相应的数据处理,之后上报到服务端。客户端提供一个纯粹的 JS 执行引擎,不需要 WebView 容器。iOS 端有成熟的 JavaScriptCore、Android 可以使用 V8 引擎。这样一个引擎配套有一个 SDK,访问 Native 的基础能力和数据运算能力,可以看成是一个阉割版的 Hybrid SDK 额外增加了一些数据处理能力。 问题结束了吗?处理逻辑的时候还需要用到2个库: cheerio 和 sql 。因为都是 Node 工程,所以纯粹的 JS 环境是没办法直接执行。所以需求就进行了转变 ———— 将 Node 项目打包成 UMD 规范。这样就可以在纯粹的 JS 环境下运行。接下来的文章就分析下各种规范。其实也就是前端模块化的几种规范。 前端模块化开发的价值 随着互联网的飞速发展,前端开发越来越复杂。本文将从实际项目中遇到的问题出发,讲述模块化能解决哪些问题,以及以 Sea.js 为例讲解如何进行前端的模块化开发。 恼人的命名冲突 我们从一个简单的习惯出发。我做项目时,常常会将一些通用的、底层的功能抽象出来,独立成一个个函数,比如 function each(arr) { // 实现代码 } function log(str) { //

叮点跑腿小程序项目部署教程

大兔子大兔子 提交于 2019-11-30 00:32:37
项目目录介绍 |--server //服务端目录 |--client //后台客户端目录 |--wxapp //微信小程序项目目录 |--ddrun.sql //数据库文件 准备工作 1.微信小程序账号 (需要企业版+微信认证) 2.微信商户号 需要支付证书 用做退款功能 3.如需公众号提醒功能 需要认证过的服务号 4.阿里云短信相关的东西 5.腾讯地图API key 拥有以上全部内容,即可进行安装部署操作。 一、安装环境 方案一、自行手动安装git、nodejs、mysql、pm2管理器 方案二、安装“宝塔面板”,然后进入"软件管理"安装nginx、pm2管理器(自带nodejs)、mysql。 若安装过程中出现报错问题,请检查软件版本问题。 请参考作者的服务器环境:mysql5.1 | node v8.9.1 二、部署服务端 请先将数据库文件导入到数据库。数据库编码为“utf8mb4” 1、修改pm2.json文件 文件目录:server/pm2.json name为项目名,cwd为项目再服务器的根目录,其他无需更改。 { "apps": [{ "name": "runing_demo", //项目名称 "script": "production.js", "cwd": "/www/wwwroot/nodeproject/runing_demo", //服务器项目根目录