设计和构建你自己的JavaScript代码库:提示与技巧

  代码库:我们一直在使用它们。代码库是开发者把他们会在项目中使用到的代码打包起来形成的,这总能节省时间和避免重复造轮子。拥有一个可重复使用的包,不管是开源的还是闭源的,总比重复构建一样特性的包或者从过去的项目中手动复制粘贴要好。

  来自作者的更多文章

  Stop Maiming Bodies: The Perils of Pixel Font-Size

  ES2016: Should the Future of JavaScript Be Developer-Driven?

  除了被打包的代码,还可以更精确的形容代码库吗?除了少数的例外,代码库通常只是一个文件,或者是在同一个文件夹里的几个文件。它的代码应该可以单独保存和在你的项目中正常使用。库文件允许你根据项目的不同来调整结构或者行为。想象一下只能通过USB接口进行通讯的USB设备。一些设备,例如鼠标和键盘,可以通过设备提供的接口来进行配置。

  在这篇文章,我会解释如何构建库文件。尽管大部分的方法可以应用到其他语言,但这篇文章主要讲述的是构建JavaScript库文件。

  ##为什么构建你自己的Javascript库?

  首先和最重要的,库文件可以让现有的代码方便的重复利用。你不需要挖出陈旧的项目来复制文件,只需要引入库文件。这也可以让你的应用组件化,让应用的代码库更小更易维护。

物联网

  Christ Church Library ( source )

  任何可以让实现一个具体的功能更容易或者可以被重复利用的抽象的代码,都可以被打包进去库文件。jQuery是一个有趣的例子。尽管jQuery的API有大量的简化的DOM API,在跨浏览器DOM操作比较困难的过去有着相当重要的意义。

  如果一个开源项目变得流行并且让许多开发者使用它,人们很有可能通过提出问题或者贡献代码来参加它的开发。不管怎样,都对库和依赖它的项目有所帮助。

  一个流行的开源库也会带来很好的机会。公司可能会对你的工作质量表示认可并给你发offer。可能公司会要求你把你的项目整合进他们的应用。毕竟,没人可以比你更了解你的项目。

  当然它可能只是一个习惯——享受敲码,帮助他人并在这个过程中学习和成长。你可以提升你的极限和尝试新的东西。

  ##范围和目标

  在写下第一行代码之前,你需要确定你的库的功能——你需要设置一个目标。通过这个目标,你可以专注于你想利用这个库来解决的问题。要牢记你的代码库的原本的形式在解决问题上要更容易使用和记忆。API越简单,使用者学习你的代码库就更容易。引入一个Unix的设计哲学:

  只做一件事情并把它做好

  问下你自己:你的代码库解决了什么问题?你打算怎么取解决它?你将会一个人完成全部工作,还是引入别人的代码库?

  不管代码库体积有多大,尝试制作一个路线图。列出你想要的每一个特性,并将它们尽可能的打散,知道你有一个小巧但是能解决问题的代码库,就像 minimum viable product 。这会成为你的第一个版本。从这里开始,你可以在每一个新特性建立里程碑。从本质上来说,你把你的项目变成了比特级的代码块,让每一个特性完成的更好和更有趣。相信我,这会让你保持状态良好。

  ##API设计

  在我看来,我想以使用者的角度来开发我的代码库。你可以称呼它为以用户为中心的设计。在本质上,你正在创造你的代码库的大纲,给予它更多的思考和让选择它的人使用起来更方便。在同时,你需要思考在什么地方需要可以定制,这会在这篇文章的后面讨论。

  终极的API测试是尝试一下自己的技术,在你的项目使用你的代码库。试着用你的代码库替换之前的代码,看它是否满足了你想要的特性。试着让你的代码库尽可能的直观,让它可以更灵活的在边界条件下使用,还有定制化(在之后的文章会讲述)。

  这是一个关于用户代理字符串的代码库的大纲的可能会有样子:

  // Start with empty UserAgent string

  var userAgent = new UserAgent;

  // Create and add first product: EvilCorpBrowser/1.2 (X11; Linux; en-us)

  var application = new UserAgent.Product('EvilCorpBrowser', '1.2');

  application.setComment('X11', 'Linux', 'en-us');

  userAgent.addProduct(application);