小程序 const moment = require('moment')_微信小程序开发者工具生成预览二维码 - 零贰...

本文介绍了一个用于微信小程序动态生成预览二维码的工具的实现过程。首先,通过指定框架打包源码,处理ES新特性代码。然后,上传打包数据到微信服务器,返回预览二维码的base64字符串。主要涉及的技术包括glob、fs、crypto等模块以及微信小程序的接口调用。
摘要由CSDN通过智能技术生成

由于项目测试人员越来越多,经常需要开发提供二维码测试,所以需要一种动态生成小程序预览二维码的工具。

开发前需要一个无人使用的开发者账号,用于生成二维码。(使用测试的微信号就行)

具体流程为

c3d41080062be8a4e7503b48755b9322.png

可以直接使用mpvue taro 等框架直接打包的代码,或者小程序原生未打开增强编译的代码。如果有一下ES新特性的代码,需要编译一下才能打包使用。

第一步是打包 这里使用的是开发工具的源码

./

  "use strict";
  const a = require("glob"),
    b = require("fs"),
    c = require("path"),
    d = require("crypto");
  module.exports = async (e, f, g = {}) => {
    const h = [
      (1),
      (4),
      (4),
      (4),
      (1),
    ];
    (h[0][0] = 190), h[1].writeInt32BE(0, 0), (h[4][0] = 237);
    let i,
      j,
      k,
      l = 0;
    const m = [],
      n = [];
    return new Promise((o, p) => {
      const q = ({ nodir: !0 }, g),
        r = {};
      let s = 0;
      a(`${e}/**`, q, (a, q) => {
        if (!a) {
          ((a) => {
            const f = (a),
              h = (e, a);
            if () {
              const a = ("md5");
              (f);
              const b = ("hex");
              if (((r[h] = b), g.ignoreFileMd5 && g.ignoreFileMd5[h] === b))
                return;
            }
            const i = (`/${(/\\/g, "/")}`);
            l++,
              (i),
              (f),
              /\.js\.map$/.test(a) ||
                ((s += ), (s += ), (s += 12));
          });
          let a = 18 + 12 * l + (m).length;
          k = ((b, c) => {
            const d = (4);
            (b.length, 0);
            const e = (4),
              f = n[c].length,
              g = a;
            (g, 0), (a += f);
            const h = (4);
            return h.writeInt32BE(f, 0), ([d, b, e, h]);
          });
          const p = (4);
          (l, 0),
            (p),
            (i = (k)),
            (j = (n)),
            h[2].writeInt32BE(, 0),
            h[3].writeInt32BE(j.length, 0);
          const t = (h),
            u = ([t, i, j]);
            (s += 18),
            o({ destPath: f, data: u, totalSize: s, fileMd5Info: r });
        } else p(a);
      });
    });
  };

  第二步是上传打包数据

const zlib = require("zlib");
const request = require("request");
const readFile = require("./pack");

exports.testsource =  (src, config) =>{
  returnnew Promise((resolve, reject) => {
    const params = [
      "_r=" + (),
      "newticket=" + ,
      "appid=" + ,
      "path="+,
      "debug_launch_info=" + encodeURIComponent(),
      "platform=0&ext_appid=&os=win&clientversion=1032006090&gzip=1&is_game_engine_app=1&devplugin=0",
    ];
    readFile(src).then(({ data }) => {
      const url =
        "" + ("&");
      request(
        { url, body: (data), method: "post" },
        (error, response, body) => {
          if (error) {
            reject(error);
            return;
          }
          if( != 200){
              reject({statusCode:})
              return;
          }
          resolve((body));
        }
      );
    });
  });
};

其中src为源代码的根目录的路径。

config为配置项,为开发工具的令牌,具体获取和更新查看《微信小程序开发者工具获取和更新newticket》

:当前小程序的appid

:小程序入口的路径

:入口数据的配置 是一个json字符串 {"scene":1001,"path":"pages/index/index","query":{}} 分别对应的是场景值 入口路径和参数

最后通过上传,微信服务器会返回一个base64字符串的图片,解析查看即为预览的二维码。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值