库和命名空间的最佳实践

vvM*_*Ovv 7 javascript etiquette repository

创建库的最佳实践是什么?

我已经开发了近10年,并且在我工作的时候一直在建立我的图书馆.

我目前的设置方式遵循以下模式:

MYLIB.SomeUtility.utilFunc();
new MYLIB.SomeProject.ProjectClass(); //project specific classes

//Sometimes I have classes that extends external libraries,
//like JQuery, or KinteticJS objects
new MYLIB.SomeExternalLibrary.ExternalLibraryClass();
Run Code Online (Sandbox Code Playgroud)

我的库有css/js/php/as3中的文件,但为了避免混淆,我将它们分别放入各自的库中,如:MYLIB_JSetc ...

例如,在JS库中,我有WebGL,Canvas,JQuery,Regular JS类(如果我们称之为那个).

你可以看到它有点混乱,所以我试图了解其他人在做什么,所以我列出了一些快速问题:

如何处理:

  • 不同的语言?
  • 不同的平台(它的名称是什么?WebGL,Canvas,JQuery等......)?
  • 不同的项目
  • 外部库和依赖项

在我研究的过程中,我想到了谷歌,并且我问自己,他们如何处理他们的谷歌地图库,他们必须拥有一个包含一系列实用功能的通用谷歌库,但也有一些仅用于谷歌地图的文件,他们有后端可能是PHP和JS前端,那么如何管理呢?

谢谢你的帮助:D

PS.我使用Git进行版本控制工作

Ihs*_*san 8

我写这篇文章是因为你想知道别人做了什么.这就是我的工作.我不会声称这是"最佳做法".

1)当岁月流逝时,我意识到我通过项目记住了我的图书馆.因为项目是实际的挑战,而不是图书馆.

2)我们不再用单一语言编写程序.趋势是云服务器和应用程序必须以多种语言处理多个平台.

3)我看到,每次构建应用程序时,如果它变得更好,平台代码开始反映编码语言和框架独立(尽可能多),功能相似.

4)回顾项目时,它应该准备好重新工作,或者在不重新定义目录结构等的情况下进行任何编译......所以如果你使用特定于平台的代码,你必须根据平台编码要求来做,例如,强制将android代码存储在另一个目录结构中然后eclipse的几乎是荒谬的.

那我该怎么做:

主要切入点始终是project.在那之下,我分成了平台.在此之下,我分为平台工具和框架.

即:

   TheGreatWebProject
      |------->Server
      |           |------>Php
      |           |              |------>aScaryPhpFrameWork
      |           |              |------>myPhpLibraries
      |           |                           |-----------> myPhpLib1
      |           |                           |-----------> myPhpLib2
      |           |------>DotNet
      |                          |------>aScaryDotNetFrameWork
      |                          |------>myDotNetLibraries
      |                                       |-----------> DotNetOutputs
      |                                       |-----------> myDotNetLib
      |                                       |-----------> myDotNetSources
      |           
      |
      |------->Client
      |           |------>Html
      |           |         
      |           |------>Css
      |           |
      |           |------>JavaScript
      |           |              |-----------> aScaryJsLibrary
      |           |              |-----------> myJsLib1
      |           |              |-----------> myJsLib2
      |           | 
      |           |------>ActionScript3
      |                          |-----------> aScaryAs3Library
      |                          |-----------> swfOutputs
      |                          |-----------> myClient1.fla
      |                          |-----------> myClient2.fla
      |                          |-----------> myAs3AppSrc(in package 
      |                                        management file structure)
      |            
      |           
      |------->Extras
                  |------>Locales
                  |------>Documents
                  |------>Images
                  |------>Audio
                  |------>Video
                  |------>Other
Run Code Online (Sandbox Code Playgroud)

对于每个子部分,子分类将反映实现,ide和平台依赖性.所以不great cure that fits all存在......


现在最后我有一个目录:项目,在它下面我有多年的目录,每年我都有我今年制作的项目......

我希望这有帮助.