JavaScript速度慢且不干燥

JavaScript速度慢且不干燥,javascript,jquery,Javascript,Jquery,我在这里使用JavaScript代码通过页面上的条带处理不同的签出框。我的代码似乎降低了我的页面速度。当我点击按钮时,需要3-5秒才能打开收银台。而且我这里用的看起来不干。你有更好的方法把代码写得更短吗 <script> var handler = StripeCheckout.configure({ key: '{{ stripe_pub_key }}', image: '{% static "img/payment/paul.jpg" %}',

我在这里使用JavaScript代码通过页面上的条带处理不同的签出框。我的代码似乎降低了我的页面速度。当我点击按钮时,需要3-5秒才能打开收银台。而且我这里用的看起来不干。你有更好的方法把代码写得更短吗

<script>
    var handler = StripeCheckout.configure({
      key: '{{ stripe_pub_key }}',
      image: '{% static "img/payment/paul.jpg" %}',
      locale: 'auto',
      allowRememberMe: false,
      zipCode: true,
      token: function(token) {
        $('#stripeToken').val(token.id);
        $('#stripeEmail').val(token.email);
        $('#paymentForm').submit();
      }
    });

    $('#buyCourseButton1').click(function(e) {
      // Open Checkout with further options:
      handler.open({
        name: 'Brand You',
        description: 'by Paul S.',
        currency: 'eur',
        amount: '4900'
      });
      $('#coursePackage').val('package_1');
      e.preventDefault();
    });

    $('#buyCourseButton2').click(function(e) {
      // Open Checkout with further options:
      handler.open({
        name: 'Brand You',
        description: 'by Paul S.',
        currency: 'eur',
        amount: '9900'
      });
      $('#coursePackage').val('package_2');
      e.preventDefault();
    });

    $('#buyCourseButton3').click(function(e) {
      // Open Checkout with further options:
      handler.open({
        name: 'Brand You',
        description: 'by Paul S.',
        currency: 'eur',
        amount: '79900'
      });
      $('#coursePackage').val('package_3');
      e.preventDefault();
    });

    // Close Checkout on page navigation:
    window.addEventListener('popstate', function() {
      handler.close();
    });
  </script>

var handler=StripeCheckout.configure({
密钥:“{stripe_pub_key}}”,
图像:“{%static”img/payment/paul.jpg”%}”,
区域设置:“自动”,
我:错,
真的,
令牌:函数(令牌){
$('#stripeToken').val(token.id);
$('#stripeEmail').val(token.email);
$(#paymentForm')。提交();
}
});
$(“#buyCourseButton1”)。单击(函数(e){
//使用其他选项打开签出:
handler.open({
名称:“品牌你”,
描述:'保罗的',
货币:欧元,
金额:“4900”
});
$('coursePackage').val('package#1');
e、 预防默认值();
});
$(“#购买课程按钮2”)。单击(函数(e){
//使用其他选项打开签出:
handler.open({
名称:“品牌你”,
描述:'保罗的',
货币:欧元,
金额:“9900”
});
$('coursePackage').val('package#u 2');
e、 预防默认值();
});
$(“#购买课程按钮3”)。单击(函数(e){
//使用其他选项打开签出:
handler.open({
名称:“品牌你”,
描述:'保罗的',
货币:欧元,
金额:'79900'
});
$('coursePackage').val('package#3');
e、 预防默认值();
});
//关闭页面导航上的签出:
addEventListener('popstate',function(){
handler.close();
});

这里有一个快速重构,它将单击处理程序生成移动到一个助手函数(
courseClickHandler
):


var handler=StripeCheckout.configure({
密钥:“{stripe_pub_key}}”,
图像:“{%static”img/payment/paul.jpg”%}”,
区域设置:“自动”,
我:错,
真的,
令牌:函数(令牌){
$('#stripeToken').val(token.id);
$('#stripeEmail').val(token.email);
$(#paymentForm')。提交();
}
});
//为给定课程包创建新的单击事件处理程序,
//给定的数量是多少
var courseClickHandler=(金额,coursePackage)=>{
返回e=>{
//使用其他选项打开签出:
handler.open({
名称:“品牌你”,
描述:'保罗的',
货币:欧元,
金额:金额
});
$('coursePackage').val(coursePackage);
e、 预防默认值();
}
}
$('buyCourseButton1')。单击(courseClickHandler(“4900”,“package_1”);
$('buyCourseButton2')。单击(courseClickHandler(“9900”,“package_2”);
$(“#购买CourseButton3”)。单击(courseClickHandler(“79900”,“package#3”);
//关闭页面导航上的签出:
addEventListener('popstate',function(){
handler.close();
});

将类似的代码放在一个函数中(参数不同的部分),并多次调用该函数。工作非常完美!非常感谢。
<script>
    var handler = StripeCheckout.configure({
      key: '{{ stripe_pub_key }}',
      image: '{% static "img/payment/paul.jpg" %}',
      locale: 'auto',
      allowRememberMe: false,
      zipCode: true,
      token: function(token) {
        $('#stripeToken').val(token.id);
        $('#stripeEmail').val(token.email);
        $('#paymentForm').submit();
      }
    });

    // create a new click event handler for the given course package,
    // and the given amount
    var courseClickHandler = (amount, coursePackage) => {
      return e => {
        // Open Checkout with further options:
        handler.open({
          name: 'Brand You',
          description: 'by Paul S.',
          currency: 'eur',
          amount: amount
        });
        $('#coursePackage').val(coursePackage);
        e.preventDefault();
      }
    }

    $('#buyCourseButton1').click(courseClickHandler("4900", "package_1"));

    $('#buyCourseButton2').click(courseClickHandler("9900", "package_2"));

    $('#buyCourseButton3').click(courseClickHandler("79900", "package_3"));

    // Close Checkout on page navigation:
    window.addEventListener('popstate', function() {
      handler.close();
    });
  </script>