tarsdocs
  • Readme.md
  • CLA
  • LICENSE
  • 基础介绍
    • 简介
    • 基础概念
    • 基础通信协议 Tars
    • 统一通信协议 Tup
    • 开发模式介绍
    • 模板配置
    • 服务市场
    • 服务扩展
    • 框架版本说明
  • 开源版框架介绍
    • 开源版本部署
      • 部署总体介绍
      • Docker环境安装
      • Mysql安装
      • 框架源码部署(Linux/Mac)
      • 框架源码部署(Windows)
      • 框架Docker部署
      • 框架节点部署
      • 业务服务容器化
      • 框架K8SDocker 部署
      • 框架K8STARS 部署
      • 框架K8SFramework 部署(强烈推荐)
      • 框架更新及扩容
      • 调用链升级注意事项
      • TarsWeb-v3.0.3升级说明
    • 开源版管理平台
      • TarsWeb说明
      • web用户体系
      • web管理平台 API
  • 企业版本介绍
    • 企业版说明
    • 框架集群化机制
    • 框架单节点机制
    • 使用二进制包部署
    • 使用容器部署
    • 业务服务一主多备机制
    • 命令行控制终端
    • IP-LIST级联缓存机制
    • 多数据中心管理
    • 多网络支持
    • 第三方服务管理
    • 数据产生和管理机制
    • 密码重置
    • TarsPython介绍
  • 框架关键特性
    • 业务配置
    • 服务监控
    • 无损发布/重启
    • 调用链
    • IDC分组
    • 鉴权功能
  • TarsCPP
    • 编译
    • 快速开发入门
    • 使用指南
    • 开发规范
    • 服务线程说明文档
    • protobuf 协议支持文档
    • 第三方协议支持
    • HTTP1 支持
    • HTTP2 支持
    • TLS 通信支持
    • Push 功能说明
    • PushCallback 功能说明
    • Cookie 支持
    • 队列模式
    • 手动绑定
    • 性能数据
    • 2.x 版本变化
    • 3.x 版本变化
    • 协程版本说明
    • 基础类库说明
    • [案例]
      • 框架快速入门
      • Http 服务示例
  • TarsJava
    • 快速开始
    • 快速开发入门
    • [使用指南]
      • Tars 服务开发与上线
      • HTTP 服务开发与上线
      • 生成接口调用文件
    • [性能测试]
      • tars java 压测代码
  • TarsGo
    • 基本介绍
    • 快速开始
    • 使用指南
    • cmake 管理代码
    • pb2tarsgo
    • 性能数据
    • 使用示例
  • TarsPHP
    • 搭建 php 环境
    • 快速开发入门
    • [快速起步]
      • 搭建 HttpServer
      • 搭建 TimerServer
      • 搭建 TcpServer
      • 搭建 WebSocketServer
      • 弹幕活动实战
    • [框架简介]
      • 简介
      • tars-server
      • tars-client
      • tars-config
      • tars-deploy
      • tars-extension
      • tars-log
      • tars-monitor
      • tars-registry
      • tars-report
      • tars-utils
      • tars2php
    • [高阶应用]
      • PHP 的 Swoole 框架如何接入 Tars
      • 与 thinkphp 结合使用
      • 与 Swoft 结合使用
      • 与 Laravel 结合使用
      • 与 Yii2 结合使用
      • 持续集成方案
    • [其他]
      • 常见问题
      • 如何 Debug
      • changelog
      • 其他外部文档
  • Tars.js
    • 基本介绍
    • 脚手架
    • 快速开发入门
    • @tars/stream
    • @tars/rpc
    • @tars/logs
    • @tars/config
    • @tars/monitor
    • @tars/notify
    • @tars/utils
    • @tars/dyeing
    • @tars/node-agent
    • @tars/winston-tars
    • tars2node
  • K8SFramework
    • [安装和使用说明]
      • 介绍
      • 特性
      • 安装
      • 升级
      • 云原生运维
      • 管理平台
      • 证书
    • [开发环境构建]
      • Dockerfile 说明
      • 服务发布流程说明
      • 制作基础编译镜像
      • 制作业务服务镜像
      • 制作 Helm 包
      • 发布业务镜像到 K8S 集群
      • 服务发布示例
      • 如何调试业务服务
  • 服务扩展
    • 云告警
    • 接口及压测工具
    • 网关服务
    • dcache缓存服务
    • 发送邮件服务
    • 一致性存储服务
    • 一致性存储web管理平台
    • 唯一计数服务
  • 常见问题
    • 安装常见问题
    • Issues
    • Issues-tarscpp
    • Issues-tarsjava
    • Issues-tarsgo
    • Issues-tarsphp
  • 开源合作
    • TarsFramework 项目 Git 合作规范
  • 直播视频
    • B 站 TARS 培训系列课程
  • 相关文章
    • TARS 技术文章
  • 其它资源分享
    • 下载
    • Tars 介绍.pptx
    • TarsPHP 解密.pdf
    • TarsJava 本地调试.pdf
    • 微服务在腾讯的业务实践.pptx
Powered by GitBook
On this page
  • @tars/utils
  • Installation
  • 01. 配置文件解析器
  • example
  • 02. Endpoint 工具
  • example
  • 03. timeProvider 工具
  • example
  • 03. Promise 库

Was this helpful?

  1. Tars.js

@tars/utils

@tars/utils

TARS 框架辅助工具集合

Installation

$ npm install @tars/utils

01. 配置文件解析器

var Config = require("@tars/utils").Config;

API

parseFile(sFilePath, [encoding, callback])

解析指定文件

  • sFilePath: 文件名

  • encoding: 文件编码类型。 (默认值: utf8)

  • callback: 回调函数,回调函数的格式 function callback(ret, config){}, 其中 ret 为对象{code: 返回码,成功为 0, 失败为-1, message: 描述, exception:如果成功为 undefined,如果失败为事件对象}, config 为解析器本身

parseText(sText)

解析字符串,并将解析的结果存于内部的_data 属性中,可以通过 get 方法获取相应的值

  • sText: 字符串

  • return: true:解析成功, false: 解析失败

get(key, defaultValue)

文件被解析之后,会将结果存储到一个对象中,通过 get 方法可以获取制定的值。注:如果配置文件/字符串中有相同的 key,则 get 获取 key 对应的值时,不会获取所有的值,而是获取该 key 最后对应的那个值,也可以理解为对应相同的 key 后面的值覆盖前面的值。

  • key: 需要取值的 key 值,格式为 x1.x2.x3,其中 x1,x2,x3 依次为深层次的 key,注:如果 key 值本身为 x1.x2 格式,取该 key 对应的值时需要写成<x1.x2>,具体使用参见例子。

  • defaultValue: 取不到结果的默认值

getDomain(key, defaultValue)

获取 key 对应的值中类型为 Object 的属性数组

  • key: key 值。

  • defaultValue: 取不到结果的默认值

getDomainValue(key, defaultValue)

获取 key 对应的值中类型为 Object 的属性值数组

  • key: key 值。

  • defaultValue: 取不到结果的默认值

getDomainLine(key, defaultValue)

获取 key 对应路径下的所有非空行

  • key: key 值。

  • defaultValue: 取不到结果的默认值

  • return: 数组

data

通过该属性,可以获取文件解析的结果

example

var Config = require("@tars/utils").Config;

var config = new Config();
config.parseFile("./config.conf", "utf8");

var data = config.data;
console.log("data: ", data);
console.log(
  "get: tars.application.server.local: ",
  config.get("tars.application.server.local")
);
console.log(
  "getDomain: tars.application.server: ",
  config.getDomain("tars.application.server")
);
console.log(
  "getDomainValue: tars.application.server: ",
  config.getDomainValue("tars.application.server")
);

具体例子参见 examples 目录下的 test-config.js 文件

02. Endpoint 工具

var Endpoint = require("@tars/utils").Endpoint;

API

Class 方法:parse(desc)

从字符串中解析出 Endpoint 信息

  • desc: 字符串,例如:'tcp -h 127.0.0.1 -p 10000 -t 60000'

  • return: 返回 Endpoint 实例。

toString()

Endpoint 信息转化成字符串

copy()

拷贝 Endpoint 实例

example

var Endpoint = require("@tars/utils").Endpoint;

var endpoint = Endpoint.parse("tcp -h 127.0.0.1 -p 10000 -t 60000");
console.log("endpoint: " + endpoint.toString());
console.log("endpoint.copy: " + endpoint.copy().toString());

具体例子参见 examples 目录下的 test-endpoint.js 文件

03. timeProvider 工具

var timeProvider = require("@tars/utils").timeProvider;

API

nowTimestamp()

采用 Date.now()的方式获取时间,此种方式效率最高,Date.now()的方式的效率大概是 new Date().getTime()的 2 倍,是 process.hrtime()方式的 4 倍。

  • return: 返回对象

{
    hrtime: // 数组类型,[秒, 纳秒],
    timestamp: // 单位ms
}

diff(oTime)

当前时间相对于 oTime 的时间间隔

  • oTime: 相对时间,nowTimestamp 函数返回的对象类型

  • return: 浮点类型,时间间隔,单位毫秒

  • 注:nowTimestamp 和 diff 配对使用

dateTimestamp()

获取当前的时间戳, 即机器从启动到当前的时间(process.hrtime)

  • return: 返回对象

{
    hrtime: // 数组类型,[秒, 纳秒],
    timestamp: // 单位ms
}

dateTimestampDiff(oTime)

当前时间相对于 oTime 的时间间隔

  • oTime: 相对时间,dateTimestamp 函数返回的对象类型

  • return: 浮点类型,时间间隔,单位毫秒

  • 注:dateTimestamp 和 dateTimestampDiff 配对使用

example

var timeProvider = require("@tars/utils").timeProvider;

var i = 0,
  count = 10000000;
var tt1,
  tt2,
  interval = 0;
var t1 = new Date().getTime();
var t2 = t1;

tt1 = timeProvider.nowTimestamp();
for (i = 0; i < count; i++) {
  tt2 = timeProvider.diff(tt1);
}
t2 = new Date().getTime();
console.log("【hrTime】interval: " + (t2 - t1));

t1 = new Date().getTime();
tt1 = timeProvider.dateTimestamp();
for (i = 0; i < count; i++) {
  tt2 = timeProvider.dateTimestampDiff(tt1);
}
t2 = new Date().getTime();
console.log("【hrTime】interval: " + (t2 - t1));

具体例子参见 examples 目录下的 test-timer.js 文件

03. Promise 库

var Promise = require("@tars/utils").Promise;

为 TARS 应用提供一个方便统一的 Promise 库。开发 TARS 应用时推荐大家使用此库而不是自己选择 Promise 库,当出现更好的 promise 方案时,我们可以直接替换此模块中的实现,直接对所有应用生效。

var Promise = require("@tars/utils").Promise;
var promise = new Promise(function (resolve, reject) {
  setTimeout(function () {
    resolve(666);
  }, 3000);
});
promise.then(function (data) {
  console.log(data);
});

目前 TARS 中的 Promise 是基于 bluebird 库实现的,在 q、bluebird、原生 Promise 中 bluebird 性能最好。

Previous@tars/notifyNext@tars/dyeing

Last updated 3 years ago

Was this helpful?