我在一些JavaScript库中看到过它(例如 transducers-js, 路径x 和 再版). 我想这是一种命名间隔的形式,但我找不到解释或至少在任何地方找到关于它的评论。
"@@"是用户领域的,特定领域的类似物。著名符号.
一般来说,"@@"的格式为 "@@$NAMESPACE/$property"
,其中 $NAMESPACE
是一些域标识符和 $property
是该域的一个属性。
"@@"并不完全是众所周知的符号,因为,一是它们是字符串;二是它们也不是该问题中引用的规范的一部分。"@@"确实类似于众所周知的符号 @@
因为它们都会影响特定领域的行为。领域的 @@
是 "所有代码领域"=="JavaScript环境的所有实例"==几乎所有的东西。"@@"的领域是 NAMESPACE
.
下面是transducers.js、routex和redux之间"@@"用法的比较。
transducers.js - JavaScript中的传感器实现。
{
"@@transducer/init": () => {...},
"@@transducer/result": (result) => {...},
"@@transducer/step": (result, input) => {...},
}
你可以在这里实现"@@"方法来符合transducers.js transformer协议。如果一个对象符合transformer协议,它就可以与其他符合该协议的对象进行合成,以符合另一个协议:transducers.js transducer协议。
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
. 它们是用来实施 减速器,导出后与 redux
和自己的状态+动作还原器
redux - 为JavaScript应用程序管理状态。
const ActionTypes = {
INIT: `@@redux/INIT${randomString()}`,
REPLACE: `@@redux/REPLACE${randomString()}`,
PROBE_UNKNOWN_ACTION: () => `@@redux/PROBE_UNKNOWN_ACTION${randomString()}`
}
redux也使用"@@"作为常量,每一个常量都用来验证reducer的形状。ActionTypes.INIT
被进一步用于 联合减压器 getUnexpectedStateShapeWarningMessage
来对返回的信息进行有条件的格式化。ActionTypes.REPLACE
在这里面加入了 拉动请求 来处理一个恼人的警告信息,同时验证reducer形状。
简而言之,这些都是"@@"的不同情况。transducers.js用它们来实现他们的transducer协议,routex用它们作为常量,而redux用它们来验证输入。它们很可能没有单一的起源,尽管它们可能从以下方面获得了灵感 @@