# a11y-cloud **Repository Path**: ByteDance/a11y-cloud ## Basic Information - **Project Name**: a11y-cloud - **Description**: No description available - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-08-23 - **Last Updated**: 2025-06-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README

无障碍云标签-助力视障群体

无障碍解决方案,不再需要前端开发者持续写代码适配。只需接入云标签sdk后,根据云标签定义的数据规则,使用标注工具进行可视化配置,并实时进行无障碍测试,该工作全程可由 0 研发基础的QA或其他角色完成。 (当UI视图结构动态变化时,云标签sdk会根据页面内容实时生成新的无障碍属性) [English Version](./README.md) ### 快速体验 1. 安装依赖 ``` $ yarn bootstrap ``` 2. 构建 **mark tool** 与 **runtime sdk** 并启动 **node server** ``` $ yarn build ``` 选择运行 example ``` ? Please choose usage: ❯ Run example Run packages ``` 选择运行 nodejs-server ``` ? Please choose usage: Run example ? Please choose examples: a11y-webpack-loader-react ❯ nodejs-server ``` 3. 等待构建结束,会自动打开 http://localhost:3001/index.html 标注面板并连接 socket 4. 打开你的项目,在代码中引入sdk;或在浏览器打开任意网站,通过devtool控制台引入sdk。随后即可在 http://localhost:3001/index.html 标注面板开始无障碍标注 ```js const script = document.createElement("script"); script.src = "http://localhost:3001/sdk.min.js"; document.body.appendChild(script); ``` ### 快速接入部署 想要在你的工程中接入无障碍云标签,方式如下: 1. 使用 `Build` 命令构建前端产物,随后将 `packages/a11y-web-client/dist` 产物放入你的资源平台,将 `packages/a11y-web-sdk/dist` 产物引入你的项目(也可以直接将源代码接入你自己的项目进行构建)。 ``` $ Yarn build ``` 选择构建 packages ``` ? Please choose usage: Run example ❯ Run packages ``` 选择构建 a11y-web-client 和 a11y-web-sdk ``` ? Please choose usage: Run packages ? Please select the corresponding debug packages (multiple selections allowed, use space to select, supports fuzzy search): ◉ a11y-web-client ❯◉ a11y-web-sdk ◯ a11y-web-socket ◯ a11y-webpack-loader ``` 构建完成后调整产物位置 2. 将 `packages/a11y-web-socket` 目录下的 nodejs 代码部署在你的服务器,通过命令启动(提醒:修改端口配置 `config/deployment.config.js`) ``` $ cd packages/a11y-web-socket && npm run start ``` 3. 按照 `examples/nodejs-server` 目录下的 mock 接口 interface 实现,存入你自己的数据库。(提醒:修改端口配置 `config/deployment.config.js`) ### 云标签标准数据说明 **A11yTag Interface**
字段名 字段介绍 字段类型
desc 无障碍的功能描述 string
attrs 云标签sdk会直接将attrs内的属性设置在目标元素上 AttrsProps
aid 元素的a11y-id的属性值,通过a11y-loader生成,用来选择元素 string
query 元素的css Selector,用来选择元素(与aid二选一使用) string
calcAttrs 计算规则定义,该条目下会告知云标签sdk如何通过现有页面元素的信息去生成无障碍属性 CalcAttrsProps

**AttrsProps Interface**
字段名 字段介绍 字段类型
tabindex 焦点顺序,遵循w3c string | number
role 如buton、link、dialog等,遵循w3c string
- 该类别下可支持任意标准html元素属性。

**CalcAttrsProps Interface**
字段名 字段介绍 字段类型
label 句子,一个焦点的最终朗读结果 LabelProps

**LabelProps Interface**
字段名 字段介绍 字段类型
list 片段,一个句子包含多个片段 ListProps
terms 条件,指定片段在某个或多个条件下生效 termsProps

**ListProps Interface**
字段名 字段介绍 字段类型
list 片段,一个句子包含多个片段 WordProps[]

**WordProps Interface**
字段名 字段介绍 字段类型
aid 元素的a11y-id的属性值,通过a11y-loader生成,用来选择元素 string
query 元素的css Selector,用来选择元素 string
value 固定文案拼接 string
opt 单词处理方式:默认为追加(+),可以设置为删减(-) '-' | '+'
map 将包含特定属性元素进行文案映射 AttrMap

**AttrMap Interface**
字段名 字段介绍 字段类型
type 映射的类型,固定为属性 'attr'
attr 映射的属性,如图片使用'src' string
match 匹配规则 { [string]: string }

**termsProps Interface**
字段名 字段介绍 字段类型
bool 生效条件,是或否 boolean
check 规则类型,当前支持:是否存在、是否为数字 'exist' | 'number'
aid 元素的a11y-id的属性值,通过a11y-loader生成,用来选择元素 string
query 元素的css Selector,用来选择元素 string

### 目录介绍 ``` . ├── CONTRIBUTING.CN.md ├── CONTRIBUTING.md ├── DSL.js // 云标签标准数据说明 ├── LICENSE ├── README.CN.md ├── README.md ├── commitlint.config.js ├── config │ ├── deployment.config.js // 部署配置,可根据需要修改 │ └── webpack.base.config.js // 基础的 webpack 配置 ├── examples │ ├── a11y-webpack-loader-react // React 项目使用 a11y-webpack-loader 自动生成 a11y-id 属性示例 │ └── a11y-nodejs-server // 使用 nodejs 搭建的数据处理服务示例 ├── lerna.json ├── package-lock.json ├── package.json ├── packages │ ├── a11y-web-client // 云标签标注工具🔧,支持标注过程高亮、功能实时生效 │ ├── a11y-web-sdk // 云标签运行时sdk,在代码中接入无障碍能力 │ ├── a11y-web-socket // 云标签服务,提供socket标注能力 │ └── a11y-webpack-loader // webpack构建loader,添加固定的a11y-id属性便于标注。(支持JSX源代码或产物代码) ├── script │ ├── build.js │ ├── clean.js │ ├── start.js │ ├── test.js │ └── utils.js └── yarn.lock ``` ### 联系我们 如果有任何问题,可以通过提 issue 或评论的方式联系我们,我们会在三个工作日内回复。 ### License 无障碍云标签 使用 Apache License 2.0 。