"@@"(at-at-slash)这个命名惯例是怎么来的?

问题描述 投票:5回答:1

我在一些JavaScript库中看到过它(例如 transducers-js, 路径x再版). 我想这是一种命名间隔的形式,但我找不到解释或至少在任何地方找到关于它的评论。

javascript naming-conventions conventions
1个回答
1
投票

"@@"是用户领域的,特定领域的类似物。著名符号.

一般来说,"@@"的格式为 "@@$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用它们来验证输入。它们很可能没有单一的起源,尽管它们可能从以下方面获得了灵感 @@

© www.soinside.com 2019 - 2024. All rights reserved.