4

假设您刚刚实现了一个包含一些函数的 JavaScript 库,例如:

double = function(a){ return a*2; };
root = function(a,b,c){ return -b+Math.sqrt(b*b-4*a*c)/(2*a); };
hypotenuse = function(a,b){ return Math.sqrt(a*a+b*b); };

像这样分发它不是一个好主意,因为该代码会污染全局命名空间。

在发布之前格式化 JavaScript 库的正确方法是什么?

4

2 回答 2

5

由于您的函数不使用类,不需要状态,并且与一个简单的主题相关,您可以简单地将它们发布为

myMath = {
   double: function(a){ return a*2; },
   root: function(a,b,c){ return -b+Math.sqrt(b*b-4*a*c)/(2*a); },
   hypotenuse: function(a,b){ return Math.sqrt(a*a+b*b); }
};

现在假设您想要使用私有函数或状态,那么您可以使用模块模式

myMath = (function(){
   var square = function(x){return x*x}; // private function
   return {
       double: function(a){ return a*2; },
       root: function(a,b,c){ return -b+Math.sqrt(square(b)-4*a*c)/(2*a); },
       hypotenuse: function(a,b){ return Math.sqrt(square(a)+square(b)); }
   }
})();

但是这里真的没有理由使用这个结构。

现在请注意,在 github 上发布的内容远不止这些(文档、测试单元、readme.md 等),但这很难在 SO 上进行建设性讨论。

于 2013-01-21T19:57:17.650 回答
2

关于如何正确命名您的 Javascript 函数的讨论有很好的记录(参见下面的 #2)。我将专注于发布库时经常被遗忘的事情:

  1. 文档。我怎么强调都不过分。任何想要使用您的库的人都需要知道它的作用以及如何使用它的一些示例。人们经常轻而易举地阅读文档,但他们会专注于示例,因此请确保这些示例教会他们使​​用库的首选方法。在源内部和外部提供文档对于获得采用非常有帮助。

  2. 命名您的函数,以便您与其他人一起玩。请参阅如何在 JavaScript 中声明命名空间?了解如何在 Javascript 中完成此操作。

  3. 使用描述其用途的变量、参数和函数名称。变量名b通常不会告诉用户它的预期用途。如果它们很长也没关系,这就是为什么我们提供一个缩小版本供生产使用。

  4. 使您的图书馆易于使用。提供一个简单的下载和如何开始使用它的说明。

  5. 与您的用户交流。如果您的项目是开源的,请让人们轻松交流他们遇到的困难(Bug 跟踪、GitHub 问题、邮件列表等)。这将有助于建立一个社区,甚至可能让人们有兴趣回馈社会。

肯定有其他方法可以改进您已发布的库,但这些方法对于最流行的库来说很常见,因此您可能会在尝试在您的库中传播信息之前考虑它们。祝你好运!

于 2013-01-21T20:09:11.597 回答