每日精选-秒杀代码分享

线上效果图

分享目录

  • 代码解析
  • 遇到的问题及解决方法
  • 知识点总结

第一版JS

缺点:

1、代码都在一个函数下

2、代码耦合性太高

3、没有错误处理机制

代码模块化

模块是任何大型应用程序架构中不可缺少的一部分,模块可以使我们清晰地分离和组织项目中的代码单元。在项目开发中,通过移除依赖,松耦合可以使应用程序的可维护性更强。与其他传统编程语言不同,在当前JavaScript里,并没有提供原生的、有组织性的引入模块方式。目前的常见模块化解决方案有:

 

函数封装

function fn1(){
    statement
}

function fn2(){
    statement
}

我们在讲函数的时候提到,函数一个功能就是实现特定逻辑的一组语句打包,而且JavaScript的作用域就是基于函数的,所以把函数作为模块化的第一步是很自然的事情,在一个文件里面编写几个相关函数就是最开始的模块了

 

这种做法的缺点很明显:污染了全局变量,无法保证不与其他模块发生变量名冲突,而且模块成员之间没什么关系。

对象

var myModule = {
    var1: 1,

    var2: 2,

    fn1: function(){

    },

    fn2: function(){

    }
}

myModule.fn2();
var myModule = (function(){
    var var1 = 1;
    var var2 = 2;

    function fn1(){

    }

    function fn2(){

    }

    return {
        fn1: fn1,
        fn2: fn2
    };
})();

使用"立即执行函数",可以达到不暴露私有成员的目的。

$(function(){
    var goodsList = [];
    var gid = '';
    var timesGroup = [];
    var currDisplay = '';
    var nextDisplay = '';
    var goodsSkus = [];
    var comments = [];
    var num = 5;
    var clock;
    //缓存DOM
    var doTimes = $('.h-do-times');
    var doingTimes = $('.h-doing-times');
    var $countDown = $('#countdown');

    //倒计时
    function timecount () {
    }

    //渲染页面
    function renderUl(goodsList) {
    }

    //获取评论
    function getComments(skuIds) {
    }

    //获取商品列表
    function init () {
    }
    init();
});

本次项目使用的是函数封装方法,基本结构如下:

线上代码讲解

遇到的问题及对应的解决方案

  • 超级秒杀抢空——通过字段过滤抢空商品
  • 整点切换场次——定时器里判断,整点刷新页面
  • 托底数据——备用接口

知识点总结

这个项目主要就是接口的调用,然后拿到数据做对应的处理,我在项目里总结了几点需要注意的:

1、变量的命名,JS里面变量使用驼峰式命名;

2、代码分模块,做好注释,以方便后期维护;

3、jsonp的一个小技巧,jQuery jsonp无法捕获404、500状态错误,只要加上timeout参数即可

 

Thank you!

每日精选-秒杀

By Phoebe Li

每日精选-秒杀

  • 192