万金流
以码会友。 吾Q:578751655。 水平有限,轻喷,谢!

练习背景

完成一个随机字符串发布页面。十秒内打开页面,会看到相同的7-14位随机字符串。超过时间,字符串会变化。已经出现过的字符串不可追溯。

技术框架

  • nodejs+express承载html页面,在打开时,向后台请求功能,返回一个字符串,并把该字符串显示在页面上。

  • 后台功能模块生成随机字符串,返回。超出十秒后访问此功能,则重新生成字符串并重新计时。

练习内容

  • 尽量独立思考完成,如果有困难,阅读参考代码,完成练习,理解完整思路。

  • 理解参考代码中随机数的生成,查询资料,对比Math.radom。

参考代码

代码不完整,仅供参考。

代码1

// 记录模块初始化时的时间戳,用于判断是否需要刷新随机字符串
let mynow = Date.now();
// 存储当前的随机字符串
let mystr = secureRandomString();

/**
 * 生成安全的随机字符串
 * 使用加密级别的随机数生成器(crypto.getRandomValues)
 * @returns {string} 长度在7-14之间的随机字符串
 */
function secureRandomString() {
  // 字符集:大写字母、小写字母、数字
  const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
  // 生成7-14之间的随机长度
  const length = crypto.getRandomValues(new Uint8Array(1))[0] % 8 + 7;
  
  // 生成指定长度的加密安全随机值
  const randomValues = crypto.getRandomValues(new Uint8Array(length));
  // 将随机值映射到字符集并拼接成字符串
  return Array.from(randomValues, val => chars[val % chars.length]).join('');
}

/**
 * 获取随机字符串,每10秒自动刷新一次
 * @returns {string} 当前的随机字符串
 */
export function get_string() {
    // 计算距离上次刷新的时间差(毫秒)
    let t = Date.now() - mynow;
    
    // 如果超过10秒,则刷新随机字符串
    if (t > 10 * 1000) {
        mystr = secureRandomString();
        //更新刷新时间
        mynow = Date.now();
    }
    
    return mystr;
}

代码2

function add_str(x)
{
    let a=document.querySelector("body");
    let b=document.createElement("div");
    b.textContent=x;
    a.appendChild(b);
}

function f2() {
    let myurl2 = "http://127.0.0.1:3000/test2";
    fetch(myurl2)
        .then(r =>r.text())
        .then(r => add_str(r));
}
f2();
posted on 2026-06-11 17:31  万金流  阅读(53)  评论(0)    收藏  举报