复杂js文件分析

本文将探讨如何分析复杂的JavaScript文件,特别是在微信小程序的上下文中。我们将研究如何理解和优化这些文件,以提高小程序的性能和用户体验。内容包括理解JS文件的组织结构、代码拆分策略、模块化技巧以及利用微信小程序的特定特性来优化代码。
摘要由CSDN通过智能技术生成
// 1. 格式化
// 2. 加大括号
// 3. 语义化转换

var app = getApp();

/**
 * 作用是 app是否含有onShowData字段,如果没有,就添加,如果有继续将 app.onShowData.scene 赋值为 e
 * @returns app.onShowData.scene: e
 */
function setOnShowScene(e) {
   
  app.onShowData || (app.onShowData = {
   });
  app.onShowData.scene = e;
}

// 对外封装了一层
var pay = {
   
  init: function (l, e) {
   
    // this
    var _ = this;
    // 封装的所有api
    var d = getApp().api;
    // l(函数输入参数)
    _.page = l;
    // e(函数输入第二参数)
    app = e;
    // 获取内存中字段名为 ‘PARENT_ID’ 的属性(可以类比理解为userId)
    var A = getApp().core.getStorageSync(getApp().const.PARENT_ID);

    // 若userId不存在,则将userId设置为0
    A || (A = 0);
    // l(函数输入参数).orderPay = 函数
    _.page.orderPay = function (e) {
   
        // 获取页面传入参数index设置为t
        var t = e.currentTarget.dataset.index;
        // 获取l(函数输入参数).data.order_list[index],作用是获取指定订单
        var o = _.page.data.order_list[t];
        // 新建数组 a
        var a = new Array();
        if (void 0 !== _.page.data.pay_type_list) {
   
            // l(函数输入参数).data.pay_type_list !== 0
            // void 0 可以代替 undefined 可以节省3个字符
            // l(函数输入参数).data.pay_type_list
            a = _.page.data.pay_type_list;
        } else if (void 0 !== o.pay_type_list) {
   
            // l(函数输入参数).data.order_list[index].pay_type_list !== undefined
            // 订单列表对应索引.pay_type_list
            a = o.pay_type_list;
        } else if (void 0 !== o.goods_list[0].pay_type_list) {
   
            // l(函数输入参数).data.order_list[index].goods_list[0].pay_type_list !== undefined
            a = o.goods_list[0].pay_type_list;
        } else {
   
            // 默认推送 [{ payment: 0 }]
            a.push({
    payment: 0 });
        }

        /** 获取当前页面栈。数组中第一个元素为首页,最后一个元素为当前页面。 */
        var r = getCurrentPages();
        /** 获取最后一个页面的路径 */
        var p = r[r.length - 1].route;
        var s = {
   };

        if (-1 != p.indexOf('pt')) {
   
            // 最后一个页面是拼团活动
            // c 赋值为 api.group.pay_data 获取支付参数的url
            c = d.group.pay_data;
            // s: { order_id: 获取l(函数输入参数).data.order_list[index],作用是获取指定订单的单号 }
            s.order_id = o.order_id;
        } else if (-1 != p.indexOf('miaosha')) {
   
            // 最后一个页面是秒杀活动
            c = d.miaosha.pay_data;
            s.order_id = o.order_id;
        } else if (-1 != p.indexOf('book')) {
   
            // 最后一个页面是预定活动
            c = d.book.order_pay;
            s.id = o.id;
        } else {
   
            // 最最普通的活动(兜底)
            var c = d.order.pay_data;
            s.order_id = o.order_id;
        }

        /** 线上支付 */
        // e: 之前配置的 {parent_id, condition: 2, order_id/id}
        // t: 请求支付的路由(用来发起预下单)
        // o: 获取最后一个页面的路径(用来判断啥活动)
        function n(e, t, o) {
   
            e.pay_type = 'WECHAT_PAY';
            // 函数输入第二参数, 请求 t(url), 请求参数 e(传进来的第一个参数)
            // 调取预下单接口
            app.request({
   
                url: t,
                data: e,
                complete: function () {
   
                    // 隐藏loading
                    getApp().core.hideLoading();
                },
                success: function (e) {
   
                    // 当 e.code == 0 代表请求成功
                    if (e.code == 0) {
   
                        // 设置 app.onShowData.scene : 'pay'
                        setOnShowScene('pay');
                        // 调用微信小程序接口 wx.requestPayment({...})
                        getApp().core.requestPayment({
   
                            _res: e,
                            timeStamp: e.data.timeStamp,
                            nonceStr: e.data.nonceStr,
                            package: e.data.package,
                            signType: e.data.signType,
                            paySign: e.data.paySign,
                            success: function (e) {
   
                                // TODO: 拉起 支付 订阅消息(支付)
                                getApp().subscribeMessage([
                                    'pay_tpl',
                                    'send_tpl',
                                ]);
                            },
                            fail: function (e) {
   },
                            complete: function (e) {
   
                                // 当用户取消或者支付失败
                                'requestPayment:fail' != e.errMsg &&
                                'requestPayment:fail cancel' != e.errMsg
                                    ?
                                        // 跳转到 路由最后一个页面,且携带参数 status = 1(应该是错误标记)
                                        getApp().core.redirectTo({
   
                                            url: '/' + o + '?status=1',
                                        })
                                    :
                                        // 弹出确认框
                                        getApp().core.showModal({
   
                                            title: '提示',
                                            content: '订单尚未支付',
                                            showCancel: !1,
                                            confirmText: '确认',
                                            success: function (e) {
   
                                                // 用户点击了确认则跳转 路由最后一个页面,且携带参数 status = 0(应该是正确标记)
                                                e.confirm &&
                                                getApp().core.redirectTo({
   
                                                    url: '/' + o + '?status=0',
                                                });
                                            },
                                        });
                            },
                        });
                    }

                    // 0 == e.code &&
                    //     (setOnShowScene('pay'),
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值