003 封装随机数据模块

75 阅读4分钟

前言

目前已经实现了用户数据的构造和渲染, 实际上这里就突然冒出来了两个想法, 第一个是这个随机数据, 前端可以不可以像我的zdppy_random一样,也有自己的一个随机数据生成器呢? 第二个想法是表格的样式, 能不能抽离成一个单独的css文件, 里面存放了各种各样的表格样式呢?

有想法就要去实践, 实践是检验真理的唯一标准.

所以我决定先封装一个random.js文件,里面能够生成随机的用户数据.至于更多的内容,则后面再继续封装.

随机的用户数据

我简单的封装了一下, 代码如下:

function generateRandomUsers(count) {
    const surnames = ['张''李''王''赵''孙''周''吴''郑''钱'];
    const names = ['三''四''五''六''七''八''九''十'];
    const users = [];

    for (let i = 0; i < count; i++) {
        const surname = surnames[Math.floor(Math.random() * surnames.length)];
        const name = names[Math.floor(Math.random() * names.length)];
        const age = Math.floor(Math.random() * (100 - 10 + 1)) + 10;
        users.push({name: surname + name, age: age});
    }

    return users;
}

console.log(generateRandomUsers(10));

执行效果如下:

在这里插入图片描述

在这里插入图片描述

不过我感觉还可以扩展到百家姓, 单独封装一个生成名字的方法.

根据百家姓生成随机姓名

首先是姓名, 没有包含所有的姓氏, 这里让ai给我列出了100个, 如果大家有自己的姓氏想要加进来可以留言给我说.

const xing =  [
    '张''李''王''赵''孙''周''吴''郑''钱''冯',
    '陈''褚''卫''蒋''沈''韩''杨''朱''秦''尤',
    '许''何''吕''施''孔''曹''严''华''金''魏',
    '陶''姜''戚''谢''邹''喻''柏''水''窦''章',
    '云''苏''潘''葛''奚''范''彭''郎''毛''尹',
    '邓''邢''缪''赫''池''俞''祁''鲁''范''赖',
    '荣''董''梁''谭''薛''潘''赖''蔡''廖''涂',
    '麦''宗''贾''殷''熊''彭''翟''阎''乐''仇',
    '荆''江''袁''雷''郭''邵''朴''龚''魏''冯',
    '余''高''汪''傅''于''包''伍''曹''沈''韩'
];

然后我收集了一些常用的名字:

const ming = [
    '明''国''华''建''文''平''志''伟''东''海''强''晓''生''光''林''小''民''永''杰''军',
    '波''成''荣''新''峰''刚''家''龙''德''庆''斌''辉''良''玉''俊''立''浩''天''宏''子',
    '金''健''一''忠''洪''江''福''祥''中''正''振''勇''耀''春''大''宁''亮''宇''兴''宝',
    '少''剑''云''学''仁''涛''瑞''飞''鹏''安''亚''泽''世''汉''达''卫''利''胜''敏''群',
    '松''克''清''长''嘉''红''山''贤''阳''乐''锋''智''青''跃''元''南''武''广''思''雄',
    '锦''威''启''昌''铭''维''义''宗''英''凯''鸿''森''超''坚''旭''政''传''康''继''翔',
    '远''力''进''泉''茂''毅''富''博''霖''顺''信''凡''豪''树''和''恩''向''道''川''彬',
    '柏''磊''敬''书''鸣''芳''培''全''炳''基''冠''晖''京''欣''廷''哲''保''秋''君''劲',
    '栋''仲''权''奇''礼''楠''炜''友''年''震''鑫''雷''兵''万''星''骏''伦''绍''麟''雨',
    '行''才''希''彦''兆''贵''源''有''景''升''惠''臣''慧''开''章''润''高''佳''虎''根',
    '诚''夫''声''冬''奎''扬''双''坤''镇''楚''水''铁''喜''之''迪''泰''方''同''滨''邦',
    '先''聪''朝''善''非''恒''晋''汝''丹''为''晨''乃''秀''岩''辰''洋''然''厚''灿''卓',
    '轩''帆''若''连''勋''祖''锡''吉''崇''钧''田''石''奕''发''洲''彪''钢''运''伯''满',
    '庭''申''湘''皓''承''梓''雪''孟''其''潮''冰''怀''鲁''裕''翰''征''谦''航''士''尧',
    '标''洁''城''寿''枫''革''纯''风''化''逸''腾''岳''银''鹤''琳''显''焕''来''心''凤',
    '睿''勤''延''凌''昊''西''羽''百''捷''定''琦''圣''佩''麒''虹''如''靖''日''咏''会',
    '久''昕''黎''桂''玮''燕''可''越''彤''雁''孝''宪''萌''颖''艺''夏''桐''月''瑜''沛',
    '杨''钰''兰''怡''灵''淇''美''琪''亦''晶''舒''菁''真''涵''爽''雅''爱''依''静''棋',
    '宜''男''蔚''芝''菲''露''娜''珊''雯''淑''曼''萍''珠''诗''璇''琴''素''梅''玲''蕾',
    '艳''紫''珍''丽''仪''梦''倩''伊''茜''妍''碧''芬''儿''岚''婷''菊''妮''媛''莲''娟'
];

然后, 封装了一个生成姓名的方法:

export default {
    getName() => xing[Math.floor(Math.random() * xing.length)] + ming[Math.floor(Math.random() * ming.length)],
}

在App.vue中使用:

在这里插入图片描述

在这里插入图片描述

测试结果如下:

在这里插入图片描述

在这里插入图片描述

随机的年龄

接着我又封装了生成随机年龄的方法:

export default {
    name() => xing[Math.floor(Math.random() * xing.length)] + ming[Math.floor(Math.random() * ming.length)],
    int(a, b) => Math.floor(Math.random() * (b - a + 1)) + a,
    age() => Math.floor(Math.random() * (60 - 10 + 1)) + 10,
}

此时测试结果如下:

在这里插入图片描述

在这里插入图片描述

随机用户

最后, 就是再封装一下随机的用户数据了.

const name = () => xing[Math.floor(Math.random() * xing.length)] + ming[Math.floor(Math.random() * ming.length)]
const int = (a, b) => Math.floor(Math.random() * (b - a + 1)) + a
const age = () => int(1860)
const user = () => ({
    namename(),
    ageage(),
})
const users = (length = 100) => {
    let arr = []
    for (let i = 0; i < length; i++) {
        arr.push({
            id: i + 1,
            ...user(),
        })
    }
    return arr
}
export default {
    name,
    int,
    age,
    user,
    users,
}

封装了以后, 我在App.vue里面测试了一下:

<h1>{{random.name()}} {{random.age()}}</h1>
<h1>{{random.user()}}</h1>
<h1>{{random.users(3)}}</h1>

此时页面效果如下:

在这里插入图片描述

在这里插入图片描述

说明我们封装得很成功, 已经能够生成随机的姓名, 随机的年龄, 以及随机的用户信息了.

而且, 随机的用户信息可以生成指定个数.

总结

我们现在等于是实现了封装生成随机用户信息的功能, 但是还没有替换, 而且关于封装表格样式模块的想法也还没有实现.

任重而道远啊...

继续加油....