# @cocreate/utils 中文文档

规范地址：https://npmcn.com/package/%40cocreate/utils/

版本：2\.0\.3
npm 元数据更新时间：2026-11-07T02:38:38.457Z
中文译文更新时间：2026-11-10T05:27:43.837Z
软件包许可：AGPL-3\.0

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40cocreate/utils
原文对照：https://npmcn.com/package/%40cocreate/utils/?lang=original
项目主页：https://cocreatejs.com/docs/utils
源码仓库：https://github.com/CoCreateJS/utils

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：554 kB，80 个文件
- 模块格式：ES Module
- TypeScript 类型：未声明
- 运行依赖：1 个
- 首次发布：2021-03-29T16:29:19.830Z
- 最新版本发布：2026-11-07T02:38:38.291Z
- 近 30 天下载量：6378（2026-10-10 至 2026-11-08，npm 官方下载统计）
- 已发布版本数：294（近 12 个月 22 个）

## 中文简介

香草javascript中一个简单的utils组件. 使用 HTML5 属性和/或 JavaScript API 轻松配置.

## 安装

```sh
npm install @cocreate/utils
```

也可以使用：`pnpm add @cocreate/utils`、`yarn add @cocreate/utils`、`bun add @cocreate/utils`

## README

# 创造功用

香草javascript中一个简单的utils组件. 使用 HTML5 属性和/或 JavaScript API 轻松配置. 把它当作我们的旋转 [游乐场!](https://cocreatejs.com/docs/utils)

![minified](https://img.badgesize.io/https://cdn.CoCreateJS.com/utils/latest/CoCreate-utils.min.js?style=flat-square&label=minified&color=orange) ![gzip](https://img.badgesize.io/https://cdn.CoCreateJS.com/utils/latest/CoCreate-utils.min.js?compression=gzip&style=flat-square&label=gzip&color=yellow) ![brotli](https://img.badgesize.io/https://cdn.CoCreateJS.com/utils/latest/CoCreate-utils.min.js?compression=brotli&style=flat-square&label=brotli) ![GitHub latest release](https://img.shields.io/github/v/release/CoCreateJS/utils?style=flat-square) ![License](https://img.shields.io/github/license/CoCreateJS/utils?style=flat-square) ![Hiring](https://img.shields.io/static/v1?style=flat-square&label=&message=Hiring&color=blueviolet)

![CoCreate-utils](https://cdn.cocreatejs.com/docs/CoCreate-utils.gif)

## [文档和演示](https://cocreatejs.com/docs/utils)

完整的指南和工作演示请参见 [贴花](https://cocreatejs.com/docs/utils)

## 光盘N

```html
<script src="https://cdn.CoCreateJS.com/utils/latest/CoCreate-utils.min.js"></script>
```

```html
<script src="https://cdn.CoCreateJS.com/utils/latest/CoCreate-utils.min.css"></script>
```

## 国家预防机制

```shell
$ npm i @cocreate/utils
```

## 线条

```shell
$ yarn install @cocreate/utils
```

## 模块使用

### 无害环境管理(震动树木)

```js
import { uid, ObjectId } from "@cocreate/utils";
```

### ESCR 分路径进口

```js
import { getValueFromObject } from "@cocreate/utils/getValueFromObject";
import { queryElements } from "@cocreate/utils/queryElements";
```

### 普通JS( 节点)

```js
const { uid, ObjectId } = require("@cocreate/utils");
const { getValueFromObject } = require("@cocreate/utils/getValueFromObject");
```

## 在字符串中渲染值

`renderValue` 解决 Coreate 双曲线值和 AST 表达式。 它会 当表达式从所提供的数据读取时,运行时无需DOM节点。 这个 从最内层的占位符向外解决嵌入值,同时调用者 拥有自己的巢穴瞄准镜 可以通过一个习惯 `resolveValue` 调用.

```js
import { renderValue } from "@cocreate/utils";

const html = await renderValue(
    undefined,
    {
        data: { ready: "<ready>" },
        object: { status: "ready" },
        module: { name: "utils" }
    },
    "<p>{{data.{{object.status}}}} {{$data.module.name}}</p>",
    undefined,
    undefined,
    undefined,
    undefined,
    { escapeOutput: true }
);
```

可选 `escapeOutput` hTML 字符串的解析值 输出。 DOM 渲染器可以省略它,因为 DOM 处理文本和属性 指定值时逃出 .

## 查询和排序

CoCreate在MongoDB、索引DB、MySQL和 其他存储供应商。 MongoDB 查询和排序行为为犬科 合同。 存储包可以使用其本地查询引擎或索引作为 优化,但它必须返回相同的逻辑结果.

共享帮助者可从 `@cocreate/utils`数字 :

```js
import { queryData, searchData, sortData } from "@cocreate/utils";
```

### 查询

`queryData(object, query)` 对一个对象进行MongoDB式查询. 密钥可能使用点标记来解决嵌入值.

```js
const matches = queryData(
    {
        status: "active",
        profile: { score: 82 },
        tags: ["customer", "priority"]
    },
    {
        status: "active",
        "profile.score": { $gte: 80 },
        tags: { $in: ["priority"] }
    }
);
```

查询可使用 `$and`, (中文(简体) ), `$or`,以及 `$nor`支持 字段操作者包括平等和不平等比较、成员、, 阵列匹配、 存在、 正则表达式、 类型检查和模块 检查。 储存包装器应将这些条件转化为原生条件 当对应行为可用时查询语言并使用共享 帮助作为相容性倒置.

`searchData(object, search)` 在一个对象之间进行面向文本的匹配. 它与结构不同 `queryData` 过滤后可应用 记录满足结构化查询.

### 多字段排序

`sortData(data, sort)` 应用所声明顺序的排序字段:

```js
const sorted = sortData(records, [
    { key: "status", direction: "asc" },
    { key: "updated.on", direction: "desc" },
    { key: "_id", direction: "desc" }
]);
```

第一个领域是初级类型。 只有在 基本价值是平等的,每个后面的字段都打破了所有人留下的联系 上一个字段。 缺少的二级或三级价值不排除 记录.

排序遵循蒙戈DB公约:

-   键支持点标记,包括嵌入值,如 `updated.on`。 。 。 .
-   缺失的字段被视为 `null` 为了比较.
-   按上升顺序在普通值之前排序和 在他们之后,依次降下.
-   不同类型的值遵循了MongoDB的BSON比较顺序.
-   矩阵和对象比较应当遵循 MongoDB 行为 相应的 JavaScript 表示允许它.
-   等位排序键并不意味着稳定的顺序 。 包含 `_id` 作为最后决定 字段.

### 存储本地排序

存储包装器在生产油罐时更喜欢本土分拣 结果 :

-   MongoDB可以直接使用它的原生类型.
-   IndexedDB在每个索引字段时可以使用一个光标来覆盖一个复合索引 所有字段都使用同一方向.
-   SQL 包装器可以将此类翻译为 `ORDER BY` 并同时明确匹配 蒙戈DB的无效订单.
-   混合方向、可选索引DB索引字段或不兼容的本地字段 类型排序必须使用共享的比较器作为倒置.

索引DB 复合索引省略不包含每个索引的记录 字段。 因此,不得设置可选的二级或三级领域 在唯一用于收集结果的光标中,除非包装器也收集 省略的记录。 倒车 `sortData` 保留统一 行为.

### 倾斜

过滤和完整的条条令必须在 `index` 财务报告和审定财务报表 `limit` 适用。 设置一个不完全排序的结果集 可返回存储提供者的不同记录.

光标页标,包括 `_id` 作为最后排序键并构建下一个 范围从所有排序键值加 `_id`提供了决定性的 当多个记录具有相同的前一个值时,边界.

## 构建

```shell
# Build UMD + ESM + CJS
npm run build

# Build only module outputs
npm run build:modules

# Build only UMD bundle
npm run build:umd
```

# 目录

-   [目录](https://npmcn.com/package/%40cocreate/utils/#readme-table-of-contents)
-   [查询和排序](https://npmcn.com/package/%40cocreate/utils/#readme-querying-and-sorting)
-   [通知](https://npmcn.com/package/%40cocreate/utils/#readme-announcements)
-   [路线图](https://npmcn.com/package/%40cocreate/utils/#readme-roadmap)
-   [如何贡献](https://npmcn.com/package/%40cocreate/utils/#readme-how-to-contribute)
-   [关于](https://npmcn.com/package/%40cocreate/utils/#readme-about)
-   [许可证](https://npmcn.com/package/%40cocreate/utils/#readme-license)

# 通知

图书馆的所有更新都记录在我们 [变化](https://github.com/CoCreateJS/utils/blob/master/CHANGELOG.md) 财务报告和审定财务报表 [释放](https://github.com/CoCreateJS/utils/releases)。您也可以订阅电子邮件以发布和中断更改.

# 路线图

如果你对这个项目的未来方向有兴趣, 请看看我们的开放 [问题](https://github.com/CoCreateJS/utils/issues) 财务报告和审定财务报表 [拖动请求](https://github.com/CoCreateJS/utils/pulls)我们想听听你的反馈.

# 关于

CoCreate-utils 由 CoCreate 开发者经验团队指导和支持.

请发电子邮件给开发者体验团队 [这里](mailto:develop@CoCreateJS.com) 如果有任何疑问.

Coreate-utils由CoCreate维护和资助. CoCreate的名称和标志是CoCreate,LLC的商标.

# 如何贡献

我们鼓励为我们的图书馆捐款(你甚至可能得分) [捐款](https://github.com/CoCreateJS/utils/blob/master/CONTRIBUTING.md) 详细指南.

我们希望这个图书馆由社区驱动, Coreate 领导。 我们需要你的帮助来实现这一目标。 为了帮助确保我们按正确的顺序建造正确的东西,我们请你们创造 [问题](https://github.com/CoCreateJS/utils/issues) 财务报告和审定财务报表 [拖动请求](https://github.com/CoCreateJS/utils/pulls) 或只是对现有问题进行投票或发表意见或提出请求.

我们感谢你的继续支持,谢谢!

# 许可证

该软件在GNU Affero通用公共许可证版本3(AGPLv3)和商业许可证下获得双许可证.

-   **开源使用**:用于开源项目和非商业用途,此软件可在AGPLv3下提供. AGPLv3允许您自由使用,修改并分发此软件,前提是所有修改和衍生作品也根据AGPLv3获得许可. 营业执照全文见 [自由文件](https://github.com/CoCreateJS/utils/blob/master/LICENSE)。 。 。 .
    
-   **商业用途**: 意图将这一软件用于商业目的的营利性公司和个人必须获得商业许可证。 商业执照,当你签到 API 密钥我们 [网站](https://cocreatejs.com/)。该许可证允许对软件进行专有使用和修改,而不需要AGPLv3的左取要求。 将这一软件融入专有商业产品和应用是理想的.
    

如果您没有购买商业许可证,并打算将这个软件用于商业目的,请到我们的网站上注册API密钥.

### 领导 `$this` 选择器

启动查询分支 `$this` 以返回当前元素,或附加 用 CSS 选择器测试该元素 `matches()` 继续前:

```html
click-query="$this:checked $closest .api-type-filter input:checked[]"
click-query="$this.active[aria-pressed='true'] $parent .target"
```

`$this#id`, (中文(简体) ), `$this.class`, (中文(简体) ), `$this[attribute]`,而伪类都匹配 现在的要素,而不是后代。 失败的比赛只停止 逗号分枝. 裸体 `$this` 返回没有当前元素 测试。 附加选择器启动剩余查询后的空白; 引用属性或括号内的白空间仍然是测试的一部分. `$this` 仅在分支开始时支持。 现有横向 运营商和后人选择者继续正常进行.

### 解析属性名称

```js
import { resolveProperty } from "@cocreate/utils";

const key = resolveProperty(element, "textcontent"); // "textContent"
if (key !== undefined) element[key] = "Updated";
```

`resolveProperty(object, name)` 返回匹配名称的原始字符串密钥 没有案件敏感性,或 `undefined` 当不存在匹配时。 它自己搜东西 财产,包括不可拥有的财产,不读 获取器。 不同的密钥必须是独特的忽略大小写: `myMethod` 财务报告和审定财务报表 `mymethod` 同一物体上或其原型链造成 `TypeError`即使一个是 准确的匹配。 允许使用同一种拼写法进行重叠. 打电话的人 选择是读取、指定还是引用已解决的成员.

### 指定嵌入式 AST 结果

一个被点到的运算符在已设定范围的对象上识别属性。 何时 该成员不是一个函数, AST 评价嵌入值, 指定 并返回该结果:

```js
await astAsync({
    node: element,
    sandbox: { $this: element, $ExamplePlugin: ExamplePlugin },
    executeAST: {
        "$this.myInstance": { "$ExamplePlugin": ["$this", {}] }
    }
});
```

两者都有用 `astSync` 财务报告和审定财务报表 `astAsync`,包括多个兄弟姐妹的钥匙, 嵌入路径、数组指数和 `items[]` 附录。 AST解决 从它的沙盒或登记册中找到根,代表写信给 `dotNotationToObject`。 。 。 . 根对象必须存在; 缺少的父对象由共享创建 帮手 其公约适用于: `undefined` 删除属性,并指定 `undefined` 到一个索引化的数组条目,该条目将退出. 现有的可调用成员保留了方法引用语义. 诸如 `"$this.myInstance"` 仍然读取值; 普通键仍然存储值 aST结果和范围。 返回的结果不自动指定给 插件加载器下的主机元素.

### AST 中的浏览器全域

在浏览器评价中, `$window` 读取浏览器窗口和 `$CoCreate` 读取当前 `window.CoCreate` 名称空间。 两个支持点化的地产 读取、指派密钥和方法调用 `astSync` 财务报告和审定财务报表 `astAsync`数字 :

```js
astSync({ executeAST: "$window.location.origin" });
astSync({ executeAST: "$CoCreate" });
await astAsync({ executeAST: { "$window.exampleSettings": { enabled: true } } });
```

Globals在评价时间解析出,因此CoCreate可能在AST后加载. 运算符JS表达式也可以使用 `$($window.innerWidth)` 财务报告和审定财务报表 `$($CoCreate.someProperty)`,或浏览器正常 `window` 财务报告和审定财务报表 `CoCreate` 内部名称 `$()`。 。 。 .

### 同步和同步调用

`$function` 在两者中创建同步回调 `astSync` 财务报告和审定财务报表 `astAsync`。 。 。 . 创建回调不会执行它的身体 。 把它包起来 `$async` 创建 一个同步召回,其身体使用 `astAsync` 并返回一个承诺:

```json
{
    "$async": {
        "$function": {
            "params": ["value"],
            "body": { "$await": "$value" }
        }
    }
}
```

两种形式都保留了周围的范围、参数和可选性 `bind`。 。 。 . `$await` 需要同步评价;同步回调拒绝. 同步回电仍然可以直接返回承诺,而不等待 这个 Async 配置评价不会改变召回声明.

## 常见问题

### @cocreate/utils 是什么？

香草javascript中一个简单的utils组件\. 使用 HTML5 属性和/或 JavaScript API 轻松配置\.

### 如何安装 @cocreate/utils？

在项目目录运行 npm install @cocreate/utils，或使用 pnpm add / yarn add / bun add。

### @cocreate/utils 支持 TypeScript 吗？

该包的 package\.json 没有声明类型入口。需要类型提示时，可以在 npm 上查找社区维护的 @types/cocreate\_\_utils 是否存在。

### @cocreate/utils 支持 ESM 还是 CommonJS？

以 ES Module 形式发布，推荐使用 import 引入。在 CommonJS 项目中，Node\.js 20\.19\+ / 22\.12\+ 可以直接 require\(\) 不含顶层 await 的 ES Module，更早的版本需要改用动态 import\(\)。

### @cocreate/utils 可以商用吗？

@cocreate/utils 使用 AGPL-3\.0 许可。最严格的 Copyleft：除分发外，通过网络向用户提供基于它的服务也需要开源对应源码。闭源 SaaS 使用前务必评估。以上为概括，不构成法律意见，请以许可原文为准。

### @cocreate/utils 的下载量有多少？

根据 npm 官方下载统计，@cocreate/utils 在 2026/10/10 – 2026/11/08 这 30 天内被下载 6,378 次，日均约 213 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @cocreate/utils 还在维护吗？

最新版本 2\.0\.3 发布于 2026/11/07（3 天前）；至今共发布 294 个版本，其中过去 12 个月发布了 22 个；首次发布于 2021/03/30。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

