常用cuid.js 的实现

function pad (num, size) {var s = '000000000' + num;return s.substr(s.length - size);
};var os = require('os'),padding = 2,pid = pad(process.pid.toString(36), padding),hostname = os.hostname(),length = hostname.length,hostId = pad(hostname.split('').reduce(function (prev, char) {return +prev + char.charCodeAt(0);}, +length + 36).toString(36),padding);function fingerprint () {return pid + hostId;
};var lim = Math.pow(2, 32) - 1;function random () {return Math.abs(require('crypto').randomBytes(4).readInt32BE() / lim);
};var c = 0,blockSize = 4,base = 36,discreteValues = Math.pow(base, blockSize);function randomBlock () {return pad((random() *discreteValues << 0).toString(base), blockSize);
}function safeCounter () {c = c < discreteValues ? c : 0;c++; // this is not subliminalreturn c - 1;
}function cuid () {// Starting with a lowercase letter makes// it HTML element ID friendly.var letter = 'c', // hard-coded allows for sequential access// timestamp// warning: this exposes the exact date and time// that the uid was created.timestamp = (new Date().getTime()).toString(base),// Prevent same-machine collisions.counter = pad(safeCounter().toString(base), blockSize),// A few chars to generate distinct ids for different// clients (so different computers are far less// likely to generate the same id)print = fingerprint(),// Grab some more chars from Math.random()random = randomBlock() + randomBlock();return letter + timestamp + counter + print + random;
}cuid.slug = function slug () {var date = new Date().getTime().toString(36),counter = safeCounter().toString(36).slice(-4),print = fingerprint().slice(0, 1) +fingerprint().slice(-1),random = randomBlock().slice(-2);return date.slice(-2) +counter + print + random;
};cuid.isCuid = function isCuid (stringToCheck) {if (typeof stringToCheck !== 'string') return false;if (stringToCheck.startsWith('c')) return true;return false;
};cuid.isSlug = function isSlug (stringToCheck) {if (typeof stringToCheck !== 'string') return false;var stringLength = stringToCheck.length;if (stringLength >= 7 && stringLength <= 10) return true;return false;
};cuid.fingerprint = fingerprint;

Javascript实现cuid唯一标识号相关推荐

  1. Javascript生成全局唯一标识符(GUID,UUID)的方法

    方法一 function guid() {return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {var ...

  2. JavaScript 爆红后,微软为何还要开发 TypeScript?

    开源 TypeScript 在经历过最初微软的内部抵制后,如今终于成长为构建 Web 应用程序的首选语言. 作者 | Liam Tung 译者 | 弯月,责编 | 屠敏 头图 | CSDN 下载自东方 ...

  3. JavaScript权威指南(第六版) 初读笔记

    JavaScript的5种原始类型:undefined.null.布尔值.数字和字符串. JavaScript中两个非常重要的数据类型是对象和数组. 通过方括号定义数组元素和通过花括号定义对象属性名和 ...

  4. 2016年度 JavaScript 展望(下)

    [编者按]本文作者为资深 Web 开发者 TJ VanToll, TJ 专注于移动端 Web 应用及其性能,是<jQuery UI 实践> 一书的作者. 本文系 OneAPM 工程师编译呈 ...

  5. Vue只是JavaScript其中的一个框架

    JavaScript 浏览器里面唯一能运行的语言是JavaScript JavaScript 简写也就是JS EcmaScript EcmaScript(JavaScript交给Ecma组织去监管生产 ...

  6. JavaScript学习笔记 1

    <精通js脚本之jQuery框架> for in var arr = new Array(); arr[0] = 'a'; arr[1] = 'b'; for(var a in arr) ...

  7. python中编完类后到实例编写_Python 和 JavaScript 的区别是什么?

    原标题:Python 和 JavaScript 的区别是什么? JavaScript和Python这两种语言非常流行和强大,但它们在部分语法的使用上却有着一些不同,如果你恰好对这些区别对比感兴趣,那么 ...

  8. 我们与专家讨论了JavaScript –文字记录

    今天上午与专家对话的主题是JavaScript,我们的专家是Ara Pehlivanian,这是我们最新著作< Jump Start JavaScript>的合著者. 这是一个繁忙的会议, ...

  9. JavaScript?静下心来的研究之路

    目录 一. 入门级 二.初级开发: 三.中级开发 四.其他阅读 五. 结语 六.感谢 这是我这些年看的书.还有几本没有上镜,因为被朋友借走了,哈哈. (ps:这些书我也并又没全看完,有一些看的昏昏欲睡 ...

最新文章

  1. oracle执行长任务,oracle 里面定时执行任务设置
  2. Nginx URL重写(rewrite)配置及信息详解
  3. miui通知栏要点两下_「MIUI玩机技巧84」MIUI12状态栏如何切旧版控制中心
  4. 上班族不知不觉发财的十大秘诀
  5. 如何使用Apache Drill分析高度动态的数据集
  6. 数据增量更新定义_TiDB 在 OPPO 准实时数据仓库中的实践
  7. 【Java】hashCode和identityHashCode的区别
  8. SCPPO(六):源代码管理工具---Team Foundation Server
  9. Verdi的使用技巧总结
  10. 电脑重装系统超详细完整教程图解
  11. Windows远程桌面如何设置分辨率
  12. Android 实现计时器功能,Android计时器的三种实现方式(Chronometer、Timer、handler)...
  13. Unable to find gradle task to build
  14. 手机ROM,RAM作假显示
  15. 电脑版微信提示音mp3_短的微信提示音什么好?40首好听的微信提示音试听下载...
  16. 【plang 1.4.6】Plang高级编程语言(发布)
  17. 集体名词做主语时下谓语的单复数选择
  18. Nginx报504 gateway timeout错误的解决方法
  19. 歌斐资产CEO殷哲谈资产的转型升级
  20. MCNP学习笔记之命令行与接续运行

热门文章

  1. 应广常用的单片机的介绍
  2. 通信电子电路(2)---使用multisim分析电路小技巧、晶体管等效电路
  3. 墨迹天气电脑版官方版 v1.0.1.5 最新版​
  4. 【180928】魔兽连连看游戏源代码
  5. SourceInsight4.0破解方法
  6. 卡巴斯基和WISeKey发布安全手机应用抵御网络攻击
  7. 百度SEO站群启点自适应简洁html网源码
  8. js实现qq好友分组
  9. python模拟时钟含注释
  10. zabbix监控阿尔法特(OmniStack LS 6248)交换机