对象

对象

对象(Object)是一种非常核心和基础的数据结构,同时也是一种引用类型。对象用于存储和表示具有键值对(key-value pairs)结构的数据,其中键(也称为属性名或属性)是字符串,而值则可以是任意数据类型,包括数字、字符串、布尔值、数组、函数甚至是其他对象。

普通对象

普通对象是最基本的对象类型,由用户通过对象字面量 {} 创建。它们主要用于存储键值对。

let user = {
	name: "xx",
	age: 123,
	getName() {
		return this.name;
	},
	setName(name) {
		this.name = name;
	}
}

内置对象

vino 提供了consoleJSONlogglobalconfigvino共6种内置对象

console

console 用于开发者在控制台进行调试输出,建议在开发环境下使用,console只有1个log函数。生产环境建议使用log对象

示例

let message = "Hello, World!";
console.log(message); // 输出:Hello, World!

log

log用来记录日志,属性与方法如下

名称类型参数返回值说明
info方法...message:any[]void记录信息级别的日志
debug方法...message:any[]void记录调试级别的日志
warn方法...message:any[]void记录警告级别的日志
error方法...message:any[]void记录错误级别的日志
fatal方法...message:any[]void记录致命错误级别的日志
config方法objectvoid配置日志参数,如输出方式、日志级别等

输出日志

log.info("info");
log.debug("debug");
log.warn("warn");
log.error("error");
log.fatal("fatal");

注意

log.fatal 会中断程序运行

控制台打印:

2024-02-06 11:58:43 INFO  index.js:13 > info
2024-02-06 11:58:43 DEBUG index.js:14 > debug
2024-02-06 11:58:43 WARN  index.js:15 > warn
2024-02-06 11:58:43 ERROR index.js:16 > error
2024-02-06 11:58:43 FATAL index.js:17 > fatal

config

默认情况下,log会输出到控制台,默认为debug级别。你可以通过下面配置来修改默认日志配置

//配置日志
log.config({
	out: 0, //日志输出方式:0控制台,1文件
	level: "info", //日志级别:debug,info,warn,error,fatal
	filename: "/Desktop/temp/logs/x.log",//当out=1时,必须指定日志文件路径
	maxSize: 1,//日志文件最大大小,单位MB
	maxBackups: 2,//日志文件最大备份数
	maxAge: 3,//日志文件最大保存天数
	compress: false//是否压缩日志文件
});

JSON

属性与方法

名称类型参数返回值说明
stringify方法value:anystring将一个值转换为 JSON 字符串
parse方法text:string,type?:stringany将一个 JSON 字符串转换回的值

stringify

JSON.stringify()方法用于将数组中的所有元素连接成一个字符串。

语法

JSON.stringify(value); 
  • value: 要转换为 JSON 字符串的值。

示例

const obj = {name: "John", age: 30, city: "New York"};
const myJSON = JSON.stringify(obj);
console.log(myJSON); // 输出:'{"name":"John","age":30,"city":"New York"}'

parse

JSON.parse()方法将一个 JSON 字符串转换回 JavaScript 的值。

语法

JSON.parse(text, type);
  • text: 要被解析成 JavaScript 值的 JSON 字符串。
  • type: (可选),指定要转换成的 JavaScript 值的类型,目前支持Map,Set

示例

const jsonString = '{"name":"John","age":30,"city":"New York"}';
const obj = JSON.parse(jsonString);
console.log(obj.name); // 输出:John

let arr = JSON.parse(`[1, 2, 3, "w", 2,  3 ,"2"]`);
console.log(arr);   // 输出:[1, 2, 3, "w", 2, 3, "2"]

let set = JSON.parse(`[1, 2, 3, "w", 2,  3 ,"2"]`, "Set");
console.log(set);   // 去重后为 {1, 2, 3, "w", "2"},输出:Set(5)

let map = JSON.parse(`{"name":"x","age":[1,2,3]}`, "Map");
console.log(map);   // Map(2)

global

global对象是一个map,可以存储任何key-value数据。global是全局唯一和共享的,这也意味着在程序中的任何地方都可以共享数据。

global.set("name", "vino");
let name = global.get("name");

作用

  1. 提供一个全局容器;
  2. 多个js文件之间无需频繁importexport,也可以进行数据交换;
  3. 解耦js文件之间的依赖;

config

config 对象的内容来自于config.js文件的默认导出。config.js文件是vino框架唯一且默认的配置文件,该文件存放位置为项目入口js文件的同级目录,程序启动时会自动加载。也可以在启动时通过--config=./config.js 指定配置文件的路径。

/project
  ├── index.js  //主文件
  ├── config.js //配置文件
  └── src
      ├── f1.js
      ├── f2.js
      └── f3.js

index.js 文件

let server = config.server;
//这里会打印: 8080
console.log(server.port)

config.js 文件

export default {
	server: {
		port: 8080,
	}
}

作用

由于vino框架支持将js文件编译成ss字节码文件,编译器会将所有依赖文件(通过import导入的文件) 全部编译到字节码中,这样当执行ss文件时,就无法对配置进行修改。

注意事项

不要在任何代码中通过import来导入config.js文件

vino

vino对象中包含filenamedirname2个属性,用于获取主文件绝对路径和主文件所在目录的绝对路径

属性与方法

名称类型参数返回值说明
filename属性string主文件的绝对路径
dirname属性string主文件所在目录的绝对路径
version属性string获取当前vino的版本号
vinopath属性string获取vino主目录

关于路径相关的内容请查阅相对路径

更新时间 8/13/2024, 6:14:17 PM