首页 >社区问答列表 >javascript - 官方30行js比赛:30行js你能做出什么?

javascript - 官方30行js比赛:30行js你能做出什么?

国外社区的30行js小比赛是不是让你按捺不住 跃跃欲试了呢骚年! 你的机会来了~
由 segmentfault 主办的
30行 原生javascript 编程比赛
等待你狂拽酷炫吊炸天的效果

  1. 我们推荐使用 jsfiddle.net runjs.cn 在线编辑器,将代码链接贴在本贴下即可
  2. 比赛的评比标准是 社区小伙伴们的投票数;代码行数在30行左右
  3. 比赛时间为期两周
  4. 奖项设置,我们为得赞数目最高的前三名同学准备神秘的小奖品以及SF的纪念T恤
  5. 当然你也可以简短的给自己的作品设计一下 slogan,简单阐述你的创意
  6. 活动过程中,有发现任何作弊和抄袭代码的行为,将会被取消评选资格

最新提示:得票最高前三名用户将分别获得又拍云提供的1000元代金券!前五名将获得SF的纪念T恤!

骚年们,准备好了嘛?等你来挑战!!!


范例:

30行JavaScript代码(仅975字节)写出的一个功能完整的递归光线跟踪程序

http://jsfiddle.net/vz5aZ/2/

  • 大家讲道理
  • 大家讲道理    2017-04-10 13:10:466楼

    生成一個足夠安全同時相對好記(如果你的英語詞彙量足夠大的話)的密碼。

    靈感來自 這則xkcd漫畫。

    30行好難寫啊!寫了半天沒寫滿,加了註釋還是不滿30行。
    沒辦法,只好再補一個python的版本填滿30行。

    // by Jakukyo Friel <weakish@gmail.com>
    // under Apache License v2
    
    // Yet another random passphrase generator.
    // Inspired by http://xkcd.com/936/
    // But I use 5 words instead of 4, since 5 words will achieve an entropy of
    //    log(99171)/log(2)*5 = 82.988
    // This is enough.
    // NIST recommends 80-bits for the most secure passwords.
    
    
    var fs = require('fs');
    var pickrand = require('pickrand')
    var wordlist = fs.readFileSync('/usr/share/dict/words').toString().split("\n");
    
    generate_random_passwd = function() {
      pickrand(wordlist)
      for (var i=0;i<5;i++) {
        // Avoid characetr `'` in passphrase, since some broken^W websites does not support it.
        process.stdout.write(pickrand(wordlist).replace(/'/g, '').replace(/\n$/, ''))
      };
    };
    
    generate_random_passwd()
    
    // A python version I wrote before. (To fill 30 lines.)
    // import random
    // wordlist = open('/usr/share/dict/words').readlines()
    // pick = lambda : random.choice(wordlist)
    // for i in range(5): print(pick().replace('\'', '').strip(), end='')
    

    使用方法:

    將上述代碼保存爲文件,比如generate_pass.js,然後node運行即可:

    node generate_pass.js
    

    依賴:

    • pickrand模塊,可用 npm install pickrand安裝。
    • 因爲供抽取的詞彙來自系統自帶的詞典,所以需要在unix系統上運行。

    +0添加回复

  • 回复
  • 黄舟
  • 黄舟    2017-04-10 13:10:464楼

        //github: https://github.com/myworld4059/tmpl.js
        //实现一个js模板引擎,带缓存 
    
        exports = function (str, data) {
            var $ = '$' + (+ new Date)
                , fn = function (data) {
                    var i, variable = [$], value = [[]];
                    for (i in data) {
                        variable.push(i);
                        value.push(data[i]);
                    }
                    return (new Function(variable, fn.$))
                        .apply(data, value).join("");
                };
    
            //将模板解析成函数
            fn.$ = fn.$ || $ + ".push('"
                + str.replace(/\\/g, "\\\\")
                .replace(/[\r\t\n]/g, " ")
                .split("[#").join("\t")
                .replace(/((^|#])[^\t]*)'/g, "$1\r")
                .replace(/\t=(.*?)#]/g, "',$1,'")
                .split("\t").join("');")
                .split("#]").join($ + ".push('")
                .split("\r").join("\\'")
                + "');return " + $;
    
            //如果未定义data则返回编译好的函数,使用时直接传入数据即可,
            //省去每次解析成函数的时间
            return data ? fn(data) : fn;
        };
    

    +0添加回复

  • 回复
  • 巴扎黑
  • 巴扎黑    2017-04-10 13:10:461楼

    document.write('<iframe src="http://www.baidu.com" width="100%" height="100%"></iframe>');//别说30行,我1行代码就写一个百度出来
    

    +0添加回复

  • 回复