内置函数
本页面介绍Magic-API中常用的内置函数。
日期时间函数
当前时间
javascript
// 当前日期时间
var now = new Date();
// 格式化日期
import DateFormat from 'date';
var formatted = DateFormat.format(now, 'yyyy-MM-dd HH:mm:ss');
// 输出: 2024-01-01 12:00:00
var dateOnly = DateFormat.format(now, 'yyyy-MM-dd');
// 输出: 2024-01-01日期解析
javascript
import DateFormat from 'date';
// 解析字符串为日期
var date = DateFormat.parse('2024-01-01 12:00:00', 'yyyy-MM-dd HH:mm:ss');
// 获取时间戳
var timestamp = date.getTime();日期计算
javascript
import DateFormat from 'date';
var now = new Date();
// 加减天数
var tomorrow = DateFormat.addDays(now, 1);
var yesterday = DateFormat.addDays(now, -1);
// 加减小时
var nextHour = DateFormat.addHours(now, 1);
// 加减月份
var nextMonth = DateFormat.addMonths(now, 1);
// 获取月初
var monthStart = DateFormat.getMonthStart(now);
// 获取月末
var monthEnd = DateFormat.getMonthEnd(now);字符串函数
常用操作
javascript
var str = " Hello World ";
// 去空格
str.trim(); // "Hello World"
// 大小写
str.toLowerCase(); // " hello world "
str.toUpperCase(); // " HELLO WORLD "
// 分割
"a,b,c".split(","); // ["a", "b", "c"]
// 替换
"hello".replace("l", "L"); // "heLlo"
"hello".replaceAll("l", "L"); // "heLLo"
// 截取
"hello".substring(0, 3); // "hel"
"hello".substr(1, 3); // "ell"
// 包含
"hello".contains("ell"); // true
"hello".startsWith("he"); // true
"hello".endsWith("lo"); // true字符串工具
javascript
import StringUtil from 'string';
// 判空
StringUtil.isEmpty(""); // true
StringUtil.isEmpty(null); // true
StringUtil.isNotEmpty("hello"); // true
// 空值处理
StringUtil.defaultIfEmpty(null, "default"); // "default"
// 拼接
StringUtil.join(",", ["a", "b", "c"]); // "a,b,c"
// 格式化
StringUtil.format("Hello, {}!", "World"); // "Hello, World!"数学函数
javascript
// 基础运算
Math.abs(-5); // 5
Math.max(1, 2, 3); // 3
Math.min(1, 2, 3); // 1
Math.round(1.5); // 2
Math.floor(1.9); // 1
Math.ceil(1.1); // 2
// 随机数
Math.random(); // 0-1之间的随机数
Math.floor(Math.random() * 100); // 0-99的随机整数
// 幂运算
Math.pow(2, 3); // 8
Math.sqrt(16); // 4集合函数
数组操作
javascript
var arr = [1, 2, 3, 4, 5];
// 遍历
arr.forEach(item => log.info(item));
// 映射
var doubled = arr.map(x => x * 2); // [2, 4, 6, 8, 10]
// 过滤
var filtered = arr.filter(x => x > 3); // [4, 5]
// 查找
var found = arr.find(x => x > 3); // 4
var index = arr.findIndex(x => x > 3); // 3
// 判断
var hasEven = arr.some(x => x % 2 == 0); // true
var allPositive = arr.every(x => x > 0); // true
// 归约
var sum = arr.reduce((a, b) => a + b, 0); // 15
// 排序
arr.sort((a, b) => b - a); // [5, 4, 3, 2, 1]
// 包含
arr.includes(3); // true集合工具
javascript
import CollectionUtil from 'collection';
var list = [1, 2, 3];
// 判空
CollectionUtil.isEmpty(list); // false
CollectionUtil.isNotEmpty(list); // true
// 获取第一个/最后一个
CollectionUtil.first(list); // 1
CollectionUtil.last(list); // 3
// 去重
CollectionUtil.distinct([1, 1, 2, 2, 3]); // [1, 2, 3]JSON函数
javascript
// 对象转JSON字符串
var obj = { name: "test", value: 123 };
var jsonStr = JSON.stringify(obj);
// {"name":"test","value":123}
// JSON字符串转对象
var parsed = JSON.parse('{"name":"test","value":123}');
// { name: "test", value: 123 }
// 格式化输出
var pretty = JSON.stringify(obj, null, 2);加密函数
javascript
import Encrypt from 'encrypt';
// MD5
var md5Hash = Encrypt.md5("hello");
// SHA256
var sha256Hash = Encrypt.sha256("hello");
// Base64编码
var encoded = Encrypt.base64Encode("hello");
var decoded = Encrypt.base64Decode(encoded);
// AES加密
var key = "1234567890123456";
var encrypted = Encrypt.aesEncrypt("hello", key);
var decrypted = Encrypt.aesDecrypt(encrypted, key);UUID生成
javascript
import UUID from 'uuid';
// 生成UUID
var uuid = UUID.random(); // 550e8400-e29b-41d4-a716-446655440000
// 不带横线的UUID
var uuid32 = UUID.random().replace(/-/g, "");HTTP请求
javascript
// GET请求
var getResult = http.get('https://api.example.com/data');
// 带参数的GET
var getWithParams = http.get('https://api.example.com/search', {
params: {
keyword: 'test',
page: 1
}
});
// POST请求
var postResult = http.post('https://api.example.com/submit', {
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer token'
},
body: {
name: 'test',
value: 123
}
});
// 设置超时
var result = http.get('https://api.example.com/data', {
timeout: 5000 // 5秒超时
});
// 处理响应
if (result.code == 200) {
return result.data;
} else {
exit 500, "请求失败";
}Redis操作
javascript
// 字符串操作
redis.set("key", "value");
redis.setex("key", 300, "value"); // 带过期时间
var value = redis.get("key");
redis.del("key");
// 判断存在
var exists = redis.exists("key");
// 设置过期时间
redis.expire("key", 3600);
var ttl = redis.ttl("key");
// Hash操作
redis.hset("user:1", "name", "张三");
redis.hget("user:1", "name");
redis.hgetAll("user:1");
// List操作
redis.lpush("list", "value");
redis.rpush("list", "value");
redis.lrange("list", 0, -1);
// Set操作
redis.sadd("set", "member");
redis.smembers("set");
redis.sismember("set", "member");
// 自增
redis.incr("counter");
redis.incrBy("counter", 10);环境变量
javascript
// 获取环境变量
var dbHost = env.get('DB_HOST');
var apiKey = env.get('API_KEY');
// 带默认值
var port = env.get('PORT', '8080');