个人开源项目——Jerry

Jerry
在平常工做中,常常会碰到一些问题,好比数字金额要写成千分位形式(1234 -> 123,4.00)、要写成汉字大写形式(123 -> 壹佰贰拾叁圆),又好比要进行 cookie 读写操做,这些问题都比较常见,可是好多经常使用的工具库都没有,只能去网上找 snippets,感受很不爽啊。因此我就诞生了一个想法,写一个本身的开源工具库!ios

说到作到,一两周时间我把基本结构搭起来了,而且放在了 GitHub,如今还只实现了部分功能,还有不少的功能要实现。一我的的力量老是有限的,因此我想在掘金吸引一波关注,但愿你们可以加入到这个项目的开发维护中来,或者帮我提供更多的建议和想法。git

我为何要写这个项目?

首先我先讲讲我为何要写这个项目。github

  • 可能不少人都不屑一顾,由于不少功能都已经有人实现了,并且实现的更好,有些功能的实现也很简单;可是别人实现了是别人的事情,我认为我也要本身试一试,可能看起来很简单的功能你实现的时候才发现并不简单。又或者你在实现某个简单的功能当中可以学习到新的知识。
  • 我以前研究过一段时间 Underscore 的代码,也写了几篇笔记,我自认为仍是在这个过程当中学习到了不少东西的。可是学到了东西还不够,由于尚未真正实践过,尤为是对于 Underscore 的代码架构的学习,须要好好实践一下才能深有感触,因此此次新作的这个项目的架构也是采用的 Underscore 的那一套。实际上那套架构也是许多 JavaScript 工具库经常使用的架构。
  • 对于一些基础功能的实现,有利于咱们掌握基础知识,这是最重要的一点!JavaScript 真的有不少须要学习的地方,咱们天天用着各类框架或者工具库工做——Vue、React、jQuery、Underscore、fetch、axios……等等等等。这些框架或工具库确实大大简化了咱们的工做,提升了咱们的效率,可是你真的学到了不少底层的知识吗?写到最后可能咱们就是一个框架使用工,熟练操做 Vue、React……问题是这些能力不少人都会,甚至比你更加熟练,那面试的时候你拿什么作到脱颖而出呢?我以为这是咱们都应该思考的问题,咱们不只要会使用框架,还要会一些使用原生代码搭建框架或工具库的本领。这也是为何越是大公司越重视你对基础知识的掌握程度,由于不少大公司并不会直接使用别人的框架,他们会本身搭建框架(Seajs、Avalon、Omi……)、本身搭建组件库(Ant-Design、ElementUI……)、本身搭建脚手架(dva)以及本身搭建工具库(umi……)等等,就算不是本身重写,也会在别人的基础上作很大程度的修改、封装。这就很考验开发的基础功力了。因此……我以为本身要写这个项目,这个项目不是一个一蹴而就的项目,会经历很长的时间,在这段时间里,我能够学习其余知识,而后继续完善这个项目。这样就能够作到既学习了新鲜的技术,也巩固了基础知识。
  • 写这个项目可以让我学到新知识,好比用 rollup 打包库代码、用 eslint 检测代码语法及风格、用 mocha 作单元测试、用 travis 作持续集成……等等等等,我可以学到不少东西。最重要的是我以为我可以在写代码的过程当中学习到许多兼容性问题。对于有些知识,咱们须要集中精力一举攻破,好比 Webpack 的使用;可是对于有些知识咱们必须文火慢炖,就好比代码的兼容性问题。这种问题只能在本身写代码的过程当中慢慢去学习,慢慢去积累,经过不断地查阅 MDN 文档,咱们就能够了解到哪些 API 兼容性如何。这个问题实际上也是面试的时候喜欢问的一个问题。

那么加入这个项目对你有什么好处呢?面试

为何加入这个项目

首先看了上面我写这个项目的理由,我相信不少人也会有一样的感觉,写这个项目是有利于提升自身水平的。npm

另外在你面试的时候,对于开源项目的贡献是可以给你大大加分的。然而不少大型的项目架构复杂、源码晦涩难懂,并且随着框架的成熟,须要增长的新功能和须要修改的 bug 其实是不多的,这就大大减小了你对它们作出贡献的可能。axios

可是如今 Jerry 是一个刚刚起步的项目,功能简单,代码架构清晰,只须要你来实现你就能够对这个项目作出贡献了。bash

如何加入项目

首先你能够参考一下这个指导文件,里面用中文写的很清楚了。babel

大体的提交步骤以下:cookie

  • 需求列表下找到心仪的、你有把握实现的且未实现的新功能,固然也能够是去找 bug。
  • fork 项目 repo
  • 而后建立一个新的分支(分支命名最好参考一下指导文件),把你的项目拷贝到你的本地:架构

    $ git clone ...
  • 而后切换到你的新分支,开始写代码。写代码时须要注意:

    • (1)注意尽可能使用兼容性较好的原生 API,至少确保是 babel 会转译的 API。
    • (2)代码风格请参考已有代码,运行 npm run eslint 能够检测代码风格及语法错误。
    • (3)写完功能代码请自行添加测试用例到对应文件下,好比 src/packages/String.js 模块下的新功能对应的测试案例位于 test/String.test.js,而后运行 npm run test 能够进行单元测试,测试案例所有经过以后才可进入下一步。
    • (4)本地构建代码,运行 npm run build,确保你的代码能被打包压缩。
    • (5)新增模块时,请在 src/packages 下新增对应文件,而后在 test 下新增对应测试文件,最后不要忘了在 src/index.js 中引入对应模块,不然新模块的函数不会被暴露出来。
  • 写完代码而且经过风格测试、单元测试、构建测试以后,就能够提交到你的远程仓库了,而后能够提起 Pull Request,在提交 PR 的时候记得描述清楚你本次所完成的工做。我会在 review 以后合并分支。

注意实现完功能以后,不用提交 npm,这一步由我来作,文档的话能够不写,到时候我会写上去的。

我有新想法

如今在 issues 下面有一个 issue 专门用于计划 API 的,你能够在下方直接回复,说出你想要实现的新功能。

另外你也能够直接新增 issue,说出你的想法。

若是是 bug 提单的话,请直接提交 issue。

我什么都不会

什么都不会也不要紧的,你能够点进去咱们的 repo,而后轻轻地点一个 star,如今不会之后就会了,欢迎你在任什么时候候对个人项目作出贡献!

相关文章
相关标签/搜索