@cocreate/filter

中文文档
2.0.2发布于 2026/11/07AGPL-3.0CommonJS近 30 天下载 2040

一个 JavaScript api 定义了过滤颜色,描述,文本,价格或任何存储于db的文档列表的属性. 用于创建自定义组件, 如抓取、 计分器、 数据表等 .

中文使用文档
文档目录25 节
  1. 安装
  2. 光盘N
  3. 无
  4. 线条
  5. 如何运作
  6. 最小示例
  7. 过滤属性
  8. 查询过滤
  9. 密钥和搜索过滤
  10. 排序
  11. 再加载多加载
  12. 过滤对象形状
  13. Java 脚本 API
  14. init(element)
  15. getFilter(element)
  16. 数据助手
  17. 生命周期和时间
  18. 目前的限制和执行说明
  19. 解决问题
  20. 过滤器永远不会改变
  21. 查询缺少一个字段
  22. 装入更多替换列表
  23. 排序无效
  24. 捐款
  25. 许可证

创建过滤器

@cocreate/filter 将 HTML 属性变成可重复使用的数据过滤器。 它是Coreate应用程序中由列表,表格,搜索,页码,无限滚动,自定义数据传输组件使用的过滤层.

模块本身不获取或提供记录。 它从一个或多个元素中收集过滤状态,使该状态暴露于拥有结果集的元素或数据模块.

文档和演示 | 更改日志 | 问题

minified gzip brotli GitHub latest release License

CoCreate-filter

安装

光盘N

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

无

npm install @cocreate/filter
import "@cocreate/filter";

线条

yarn add @cocreate/filter

如何运作

模块监视带有一个或多个元素的元素 filter-* 属性。 它读取其当前值,创建过滤对象,并通过其 setFilter 一体化.

有两个共同的安排:

  1. 将过滤属性直接放入结果元素上.
  2. 将输入、选择和按钮等控件放在结果元素内或相邻处,并与之连接 filter-query。 。 。 .

当一个控制器改变时,模块在发送更新后过滤器前等待一秒钟. 普通更新重排结果索引和组合 overwrite;加载更新保留了现有结果.

最小示例

<input
    type="search"
    filter-query-key="name.$regex"
    placeholder="Search names"
>

<div
    id="users"
    filter-query
    database="app"
    collection="users"
    filter-limit="20"
></div>

输入提供了查询键并从输入值中获取其值. 结果元素是过滤目标. 拥有的数据或渲染模块 #users 消耗产生的过滤器.

过滤属性

属性目的示例
filter-query将元素标为过滤目标并解决相关控制.filter-query
filter-query-key添加来自元素的查询字段.filter-query-key="user_id"
filter-query-value从属性直接提供查询值.filter-query-value="active"
filter-query-options为正则表达式查询添加选项字段.filter-query-options="i"
filter-key设置消耗数据模块使用的密钥或索引值.filter-key="page"
filter-value用品价值 filter-key。 。 。 .filter-value="2"
filter-search启用使用元素当前值的文本搜索.filter-search
filter-operator选择搜索操作员。 默认是 or。 。 。 .filter-operator="and"
filter-case-sensitive用于搜索的大小写敏感度控制 .filter-case-sensitive="true"
filter-sort-key选择要排序的字段.filter-sort-key="createdAt"
filter-sort-direction选择排序方向.filter-sort-direction="desc"
filter-limit每页设置记录。 默认是 20。 。 。 .filter-limit="50"
filter-index设置起始结果索引.filter-index="0"
filter-on添加加载多或计数触发 : click, (中文(简体) ), scroll,或 fetched。 。 。 .filter-on="scroll"

该模块目前使用连字符 filter-* 属性名称。 它们是与点指派语法分开的 @cocreate/events。 。 。 .

查询过滤

使用 filter-query 结果要素和 filter-query-key 控制系统 控制权 getValue() 结果成为查询值.

<input
    filter-query-key="email.$regex"
    filter-query-options="i"
    type="search"
>
<section id="results" filter-query></section>

由此产生的查询概念如下:

{
    email: {
        $regex: "value",
        $options: "i"
    }
}

被嵌入的密钥会通过CoCreate的点注释工具进行转换. 空数组值去掉相应的查询密钥 。 缺少密钥、 空值或被拒绝的值 checkValue 禁用贡献.

使用 filter-query-value 以加价方式提供的值:

<button filter-query-key="status" filter-query-value="published">
    Published
</button>

明确管制 filter-query-value 未从输入事件更新。 值变化时更改属性或调用过滤器更新集成.

密钥和搜索过滤

filter-key 为过滤器提供值 key 对象。 数字值转换为数字;无效的数字值返回到 1 在目前执行过程中.

<button filter-key="page" filter-value="2">Next page</button>
<div filter-query filter-limit="20"></div>

添加 filter-search 用于输入或具有共生成的其他元素 getValue() 方法 :

<input
    filter-search
    filter-operator="or"
    filter-case-sensitive="false"
    placeholder="Search all fields"
>
<div filter-query></div>

过滤器包含有当前值、操作符和大小写敏感性设置的搜索条目。 消耗数据模块决定适用哪些字段和搜索执行.

排序

排序表示为 { key, direction } 条目。 在一个 INPUT, (中文(简体) ), TEXTAREA,或 SELECT 的排序属性触发过滤器更新.

<select filter-sort-key="createdAt" filter-sort-direction="desc">
    <option value="desc">Newest</option>
    <option value="asc">Oldest</option>
</select>
<div filter-query></div>

多类控件可以贡献出不同的字段. 如果两个控件使用相同的排序密钥,后置值将取代更早的方向.

再加载多加载

结果元素的 filter-limit 默认为 20。 。 。 . filter-index 默认为 0。 。 。 .

<div id="results" filter-query filter-limit="25"></div>
<button filter-on="click">Load more</button>

filter-on="scroll" 用途 IntersectionObserver 当触发器完全可见时请求更多数据. filter-on="fetched" 将获取的计数写入触发器 setValue 之后 fetchedData 活动.

装入更多更新集 loadMore 并保存现有结果集。 普通查询、搜索、排序或密钥更改重置 index 设置 overwrite 所以旧纪录被替换了.

过滤对象形状

运行时间维护一个类似于以下的过滤对象:

{
    query: { status: "published" },
    key: { page: 1 },
    search: [
        { value: "co", operator: "or", caseSensitive: false }
    ],
    sort: [
        { key: "createdAt", direction: "desc" }
    ],
    index: 0,
    limit: 20,
    overwrite: true
}

只有人口密集的部分。 准确解释 query, (中文(简体) ), key,以及 search 属于消耗过滤器的数据模块.

Java 脚本 API

包导出一个默认对象, 包含以下成员:

import CoCreateFilter from "@cocreate/filter";

await CoCreateFilter.init(document.querySelector("#results"));
const filter = await CoCreateFilter.getFilter(
    document.querySelector("#results")
);

init(element)

初始化一个元素, a HTMLCollection页:1 NodeList,或一系列元素。 元素在匹配模块的过滤选择器时进行处理.

getFilter(element)

构建并返回一个元素的有效过滤器,包括从相关控制中解析的贡献。 该模块还暴露了其内部 elements 财务报告和审定财务报表 filters 用于检查运行时状态的集成图.

数据助手

默认导出也会被曝光 queryData, (中文(简体) ), searchData,以及 sortData 从 @cocreate/utils。这些帮助器可供定制的消费者使用,将相同的语义应用到一个内语数组中.

生命周期和时间

  • 匹配元素在启动和添加到文档时初始化.
  • 支助 filter-* 属性变化触发过滤器更新.
  • 输入更改为 1000ms。 。 。 .
  • filter-on="scroll" 用途 IntersectionObserver 阈值为 1。 。 。 .
  • 删除的节点从模块的元素注册被删除 .

因为过滤器是同步组装的,在CoCreate装入后初始化所依赖的数据/发送模块,或者使用它们的生命周期钩,而不是假设在HTML解析时可以同步使用过滤器.

目前的限制和执行说明

  • 过滤器更新延迟一秒钟 。 这影响到方案更新和文本输入.
  • 空值在多条路径中被视为无效贡献 。 使用删除过滤器属性或一个空数组, 其中消耗性集成需要清除查询 .
  • filter-on="fetched" 取决于 fetchedData 事件和a setValue 由周围数据部分提供的方法.
  • 来源重复 value === "true" 键转换中的分支。 计划转换 "false" 改为 0 未执行;无效的数字值返回到 1。 。 。 .
  • 此包协调过滤状态 。 它没有定义数据库权限,传输,记录渲染,或页码UI.

解决问题

过滤器永远不会改变

检查控件是否支持 filter-* 属性,解决 a filter-query 结果元素,并曝光 getValue() 当没有明确 filter-query-value 提供。 记住,更新延迟了1秒钟.

查询缺少一个字段

检查 filter-query-key 和返回的值 getValue()空值和被 checkValue 被跳过。 对于巢地,使用点名,例如: profile.name 或者说 profile.name.$regex。 。 。 .

装入更多替换列表

确定更新来自一个元素 filter-on="click" 或者说 filter-on="scroll"。一个普通输入、查询、排序或密钥故意更新集 overwrite 并重置索引.

排序无效

排序控件只附加他们的自动更改收听器 INPUT, (中文(简体) ), TEXTAREA,以及 SELECT 要素。 确认两者 filter-sort-key 财务报告和审定财务报表 filter-sort-direction 是现相而非空相.

捐款

请读一下 贡献指南打开 问题,或者提交拉动请求。 属性名称的改变,过滤形状,解跳行为,和生命周期事件都是相容性的,应该包括文档和实例.

许可证

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

  • 开源使用 : 对于开源项目和非商业用途,该软件可在AGPLv3下提供. 见 自由文件。 。 。 .
  • 商业用途: 营利性用途需要从 创造。 。 。 .

版本与发布记录

@cocreate/filter 共发布 296 个版本,首次发布于 2021/03/26;过去 12 个月发布了 12 个版本。

版本发布日期距今
2.0.2latest2026/11/073 天前
2.0.12026/11/064 天前
2.0.02026/11/037 天前
1.39.02026/10/2120 天前
1.37.02026/08/043 个月前
1.36.02026/08/013 个月前

关于 @cocreate/filter 的常见问题

@cocreate/filter 是什么?

一个 JavaScript api 定义了过滤颜色,描述,文本,价格或任何存储于db的文档列表的属性. 用于创建自定义组件, 如抓取、 计分器、 数据表等 .

如何安装 @cocreate/filter?

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

@cocreate/filter 支持 TypeScript 吗?

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

@cocreate/filter 支持 ESM 还是 CommonJS?

以 CommonJS 形式发布,可以直接 require();在 ES Module 项目中也可以用 import 引入(Node.js 会把 module.exports 作为默认导出)。

@cocreate/filter 可以商用吗?

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

@cocreate/filter 的下载量有多少?

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

@cocreate/filter 还在维护吗?

最新版本 2.0.2 发布于 2026/11/07(3 天前);至今共发布 296 个版本,其中过去 12 个月发布了 12 个;首次发布于 2021/03/26。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。