v0.9.7

2024/09/27版本rc

vino

版本说明

语法特性

  1. 基本类型新增intfloat,移除number类型。
// 声明int
let a: int = 12
let b = int(21.9)

// 声明float
let e = 2.1
let f = 9f
let g = float("12")

// int和float混合数学计算的结果是float
let h = 12 * 2.1

说明

  • number类型被float替代,因为它们底层都是float64,所以精度相同;
  • intfloat在进行混合数学计算时,int会自动转为float
  1. 线程同步锁sync由原来的函数调用时加锁修改为函数声明时加锁。
// 函数a声明为线程同步函数
sync function a(){
  // 函数体
}

// 多线程执行时,函数a将是线程安全的
async a()
async a()
async a()
  1. 函数新增Rest参数;
function test(a, b, ...args) {
	console.log(args)
}

test(1, 2, 3, 4);  // 输出:[3,4]
test(5, 10);       // 输出:[]

新增模块

  1. 新增mysql模块,该模块实现了mysql的复制协议,可以完整解析binlog实现数据实时同步、数据复制等功能。
import {replication} from "mysql"

const config = {
	serverId: 32312,
	host: "localhost",
	port: 3306,
	user: "root",
	password: "123456",
}
let syncer = replication.open(config)
const log = {
	name: "binlog.000021", //要解析的binlog文件名
	pos: 0, //开始解析的binlog文件的具体位置
	rowsType: "object",//数据类型:object、json
}
const streamer = syncer.startSync(log)

//循环逐个解析binglog文件中的每一个事件
while (true) {
	const e = streamer.getEvent()
	//打印事件
	console.log(e)
}
  1. sql模块中新增ClickHous数据库支持。
  2. sql模块中的query函数新增第三个可选参数Class,可以指定查询结果为某个类的对象。
import sql from "sql";

class User {
  id
  name
}

class Student extends User {
  number
  phone
  birshday
}

// 如果需要指定类型,可以通过赋初始值的方式指定类型,此时vino会尝试将数据库查出来的数据按类型进行转换。如:
/*
class Student extends User {
  number = ""
  phone = ""
  birshday = new Date()
}
*/

let config = {
  url: "postgres://postgres:123456@127.0.0.1:5432/postgres?sslmode=disable",
  maxOpenConns: 40,
  maxIdleConns: 10,
  connMaxIdleTime: 12,
  connMaxLifetime: 12,
  bigintToType: 'string'
};
let db = sql.open("postgres", config);
//执行查询
let users = db.query(`select * from user`, [], User);
console.log(users);
  1. sql模块中新增queryJson函数,可以将sql查询结果转换为json字符串。
import sql from "sql";

let config = {
	url: "postgres://postgres:123456@127.0.0.1:5432/postgres?sslmode=disable",
	maxOpenConns: 40,
	maxIdleConns: 10,
	connMaxIdleTime: 12,
	connMaxLifetime: 12,
	bigintToType: 'string'
};
let db = sql.open("postgres", config);
//执行查询
let json = db.queryJson(`select * from user`);
console.log(json);

其他

  1. 移除字符串方法parseNumber,字符串转数字请使用intfloat内置函数;
  2. 移除了core包中的numbers对象;
  3. 修改了文档中的一些错误;
  4. 移除了map中的中括号获取值的方式,请使用get方法获取;

下载

文件名类型系统架构文件大小
vino-v0.9.7_rc-windows-x86_64.msi安装程序x86_6443MB
vino-v0.9.7_rc-windows-x86_64.zip压缩包x86_6442MB
vino-v0.9.7_rc-darwin-arm64.pkg安装程序ARM6444MB
vino-v0.9.7_rc-darwin-x86_64.pkg安装程序x86_6447MB
vino-v0.9.7_rc-darwin-arm64.tar.gz压缩包ARM6444MB
vino-v0.9.7_rc-darwin-x86_64.tar.gz压缩包x86_6447MB
vino-v0.9.7_rc-linux-arm64.tar.gz压缩包ARM6439MB
vino-v0.9.7_rc-linux-x86_64.tar.gz压缩包x86_6442MB
更新时间 9/26/2024, 6:49:27 PM