1

我正在构建一个可以在网站上显示系统信息的网络应用程序。它显示了运行“服务器”的电脑的硬件信息(温度、内存、cpu、风扇速度等)。它会打开一个显示此信息的 Web 服务器,该信息可通过网络访问。我正在使用流星、blazejs 和系统信息(https://github.com/sebhildebrandt/systeminformation)来做到这一点。系统信息将它从服务器获取的信息显示为长数字。这是我的html:

<template name="main">
{{#if subscriptionsReady}}

  <p>cpu manufacturer: {{get (static) 'data.cpu.manufacturer'}}</p>
  <p>cpu brand: {{get (static) 'data.cpu.brand'}}</p>
  <p>cpu model: {{get (static) 'data.cpu.model'}}</p>
  <p>cpu speed: {{get (static) 'data.cpu.speed'}}</p>
  <p>cpu cores: {{get (static) 'data.cpu.cores'}}</p>

  <p>total memory: {{get (dynamic) 'data.mem.total'}}</p>
  <p>free memory: {{get (dynamic) 'data.mem.free'}}</p>
  <p>used memory: {{get (dynamic) 'data.mem.used'}}</p>
  <p>active memory: {{get (dynamic) 'data.mem.active'}}</p>
{{/if}}

这在网站上显示

网站输出

我想将长数字格式化为“总内存 X.yz GB”,并且对于不同的数据类似。是否有任何易于使用的库可供我使用?

这也是我的服务器 javascript 文件

Meteor.startup(() => {

si.getStaticData(Meteor.bindEnvironment(function(data){
    Data.update({type: 'static'}, {data: data, type: 'static'}, {upsert: true})
}))

setInterval(Meteor.bindEnvironment(function() {

    si.getDynamicData(Meteor.bindEnvironment(function(data){
        Data.update({type: 'dynamic'}, {data: data, type: 'dynamic'}, {upsert: true})
    }))

}), 1000)

Meteor.publish('data', function(){
    return Data.find({})
})
});

和我的客户 javascript

let subscriptions = [
  Meteor.subscribe('data')
]

Template.main.helpers({

  get: function(obj, what) {
      console.log(obj)
      return _.get(obj, what)
},

dynamic: function() {
    return Data.findOne({type: 'dynamic'})
},

static: function() {
    return Data.findOne({type: 'static'})
},

subscriptionsReady: function() {
    for (let sub of subscriptions){
        if (!sub.ready()) return false
    }
    return true
}
})
4

2 回答 2

1

有一个非常流行的漂亮字节库(MIT 许可证):

将字节转换为人类可读的字符串:1337 → 1.34 kB

用于为人类显示文件大小。

用法:

const prettyBytes = require('pretty-bytes');

prettyBytes(1337);
//=> '1.34 kB' 

prettyBytes(100);
//=> '100 B'

请注意,它以 10 为基数进行转换(即 1 GB = 1,000,000,000 B,就像存储制造商通常使用的那样)。

我猜你指的是 RAM 内存,我认为这是制造商使用基数 2 转换报告的(即 1 GiB = 1,024 * 1,024 * 1,024 B),你可能会对这个其他流行的库感兴趣:filesize (BSD 3-条款许可)

于 2017-08-22T10:07:19.523 回答
-1

看看这个答案 - 这里有很多选票

如何在 JavaScript 中用逗号打印一个数字作为千位分隔符

tl;博士

function numberWithCommas(x) {
    return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
}

这就是你真正需要知道的。

于 2017-08-22T09:09:44.437 回答