commonjs的模块练习

1.node.js对于commonjs的实现

1.node.js对commonjs的规范做了三个步骤

1.node只有执行到require函数才会加载和执行模块。
2.为了隐藏模块中的代码,nodejs执行模块时,会将模块中的所有代码放置到一个函数中执行,以保证不污染全局变量。

(function(){
    //模块中的代码
})()

3.为了保证顺利的导出模块内容,nodejs做了以下处理
1.在模块开始执行前,初始化一个值module.exports = {}.
2.module.exports即模块的导出值.
3.为了方便开发者便捷的导出,nodejs在初始化完module.exports后,又声明了一个变量exports = module.exports.

(function(module){
    module.exports = {};
    var exports = module.exports;
    //模块中的代码
    return module.exports;
})()

2.练习

制作一个斗地主洗牌发牌的程序
划分模块:

  1. 工具模块,导出一个函数,用于将一个数组中的所有内容乱序排列
  2. 扑克牌构造函数(类)
    1. 属性
      1. 花色(1~4,♣、♥、♦、♠)
      2. 牌面(1~15,14小王,15大王)
    2. 方法
      1. toString:得到该扑克牌的字符串
  3. 入口模块(入口文件)
    1. 创建54张扑克牌
    2. 洗牌
    3. 发牌
入口文件index.js
//index.js  入口
var pokers = []; //扑克牌的数组
var Poker = require("./poker") //导入扑克牌的构造函数
for(var j = 1;j <= 13;j ++){
    for(var i = 1;i <= 4;i ++){
        pokers.push(new Poker(i,j));
    }
};
pokers.push(new Poker(null, 14), new Poker(null, 15));
var util = require('./util');//导入洗牌发牌功能
util.sortRandom(pokers);//洗牌

var player1 = pokers.slice(0, 18);//人数牌数
var player2 = pokers.slice(18, 36);
var player3 = pokers.slice(36);

util.print(player1);//发牌
util.print(player2);
util.print(player3);

poker.js 扑克牌的构造函数
//poker.js扑克牌的构造函数
function Poker(color,number){
    this.number = number;
    this.color = color;
};
Poker.prototype.createPoke = function(){
    var str = '';
    //花色:♣、♥、♦、♠
    if (this.color === 1) {
        str = "♣"
    }
    else if (this.color === 2) {
        str = "♥";
    }
    else if (this.color === 3) {
        str = "♦";
    }
    else {
        str = "♠"
    };
    //牌面
    if(this.number >= 2 && this.number <= 10){
        str += this.number;
    }else if(this.number == 1){
        str += 'A';
    }else if(this.number == 11){
        str += 'J';
    }
    else if(this.number == 12){
        str += 'Q';
    }
    else if(this.number == 13){
        str += 'K';
    }else if (this.number === 14) {
        str = "joker";
    }
    else if (this.number === 15) {
        str = "JOKER";
    };
    return str;
}
module.exports = Poker;

发牌洗牌 util.js
//util洗牌发牌
module.exports = {
    sortRandom: function (arr) {//洗牌
        arr.sort(function (a, b) {
            return Math.random() - 0.5;
        })
    },
    print: function (pokers) {//发牌
        var str = "";
        for (var i = 0; i < pokers.length; i++) {
            var p = pokers[i];
            str += p.createPoke() + "   ";
        }
        console.log(str);
    }
};

结果:在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值