gpt4 book ai didi

javascript - 命名约定 "@@/"(at-at-slash)从何而来?

转载 作者:行者123 更新时间:2023-12-01 15:17:49 25 4
gpt4 key购买 nike

我已经在许多 JavaScript 库中看到过它(例如 transducers-jsroutexredux )。我想这是命名空间的一种形式,但我在任何地方都找不到解释或至少对此发表评论。

最佳答案

"@@/"是 well-known symbols 的用户领域、特定领域的类似物.

一般情况下,“@@/”的格式为"@@$NAMESPACE/$property" , 其中 $NAMESPACE是一些域标识符和 $property是该域的属性。

“@@/”并不是众所周知的符号,因为它们是字符串;它们也不是该问题中引用的规范的一部分。 “@@/”确实类似于众所周知的符号@@因为它们都影响特定领域的行为。 @@ 的域是“所有代码领域”==“JavaScript 环境的所有实例”== 几乎所有内容。 “@@/”的域是NAMESPACE .

下面是transducers.js、routex、redux之间“@@/”的用法对比

转换器.js - JavaScript 中的转换器实现

{
"@@transducer/init": () => {...},
"@@transducer/result": (result) => {...},
"@@transducer/step": (result, input) => {...},
}

您可以在此处实现“@@/”方法以符合transducers.js 转换器协议(protocol)。如果一个对象符合转换器协议(protocol),它可以与符合该协议(protocol)的其他对象组合,以符合另一个协议(protocol):transducers.js 转换器协议(protocol)。

routex - 用于 redux 的简单路由器

export const ROUTE_CHANGE_START = '@@ROUTEX/ROUTE_CHANGE_START';
export const ROUTE_CHANGE_SUCCESS = '@@ROUTEX/ROUTE_CHANGE_SUCCESS';
export const ROUTE_CHANGE_FAIL = '@@ROUTEX/ROUTE_CHANGE_FAIL';
export const ROUTE_NOT_FOUND = '@@ROUTEX/ROUTE_NOT_FOUND';
export const TRANSITION_TO = '@@ROUTEX/TRANSITION_TO';

routex 使用“@@/”作为常量。它们出现在 type此路由器的 actions.js 的导出操作的字段.它们用于实现 reducer , 导出用于 redux和你自己的状态+ Action reducer

redux - 管理 JavaScript 应用程序的状态

const ActionTypes = {
INIT: `@@redux/INIT${randomString()}`,
REPLACE: `@@redux/REPLACE${randomString()}`,
PROBE_UNKNOWN_ACTION: () => `@@redux/PROBE_UNKNOWN_ACTION${randomString()}`
}

redux 也使用“@@/”作为常量;这些中的每一个都用于验证 reducer 形状。 ActionTypes.INIT进一步用于 combineReducers getUnexpectedStateShapeWarningMessage有条件地格式化返回的消息。 ActionTypes.REPLACE已添加到此 pull request在验证 reducer 形状时处理烦人的警告消息。

简而言之,这些都是“@@/”的不同情况。转换器.js 使用它们来实现他们的转换器协议(protocol),routex 使用它们作为常量,redux 使用它们来验证输入。他们可能没有单一的起源,尽管他们可能从 @@ 中汲取了灵感。

关于javascript - 命名约定 "@@/"(at-at-slash)从何而来?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32977506/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com