我的开源项目——Jerry

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

说到做到,一两周时间我把基本结构搭起来了,并且放在了 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 兼容性如何。这个问题实际上也是面试的时候喜欢问的一个问题。

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

为什么加入这个项目

首先看了上面我写这个项目的理由,我相信很多人也会有同样的感受,写这个项目是有利于提高自身水平的。

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

但是现在 Jerry 是一个刚刚起步的项目,功能简单,代码架构清晰,只需要你来实现你就可以对这个项目做出贡献了。

如何加入项目

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

大致的提交步骤如下:

  • 去需求列表下找到心仪的、你有把握实现的且未实现的新功能,当然也可以是去找 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,现在不会以后就会了,欢迎你在任何时候对我的项目做出贡献!

转载于:https://www.cnblogs.com/DM428/p/10129473.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/484543.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python-列表和元组

python 数据结构 1.序列(包括元组、列表、字符串、buffer对象和xrange对象)序列中第一个元素的索引为0,第二个为1,依次类推序列的最后一个元素标记为-1,最后第二个为-2,依次类推 既可以向前计数,也可以向后计数2.列表和…

李德毅院士:希望智能驾驶成为我国继高铁之后又一张新名片

来源:汽车俱乐部Plus/ 导读 /5月19日,在WIC2021第五届世界智能大会的分论坛“智能交通峰会”上,中国工程院院士,欧亚科学院院士李德毅发表了主题演讲。以下是演讲实录。让我们掌声欢迎中国工程院院士,欧亚科学院院士&a…

windows下vagrant的安装使用

vagrant是简便虚拟机操作的一个软件,而使用虚拟机有几个好处: 1、为了开发环境与生产环境一致(很多开发环境为windows而生产环境为linux),不至于出现在开发环境正常而移步到正式生产环境时出现各种问题,而v…

python-字符串

#字符串之间的拼接,转换 #str():他会把值转换成合理形似的字符串,repr()会创建一个字符串,然后以合法的形似来表示值 #事实上,str(),int()、float()和long()是一种类型对象,并不完全是普通的函数,而repr()是…

《2021全球脑科学发展报告》发布

来源:众诚智库编辑:蒲蒲近年来,以人工智能、量子信息、集成电路、生命健康、脑科学、生物育种、空天科技、深地深海等为代表的新一轮科技革命和产业变革深入发展,正在重构全球创新版图、重塑全球经济结构。在众多极具“颠覆性”的…

正则控制可以输两位小数、负数,整数

function num(obj){obj.value obj.value.replace(/[^\d.-]/g,""); //清除"数字"和"."以外的字符obj.value obj.value.replace(/^\./g,""); //验证第一个字符是.字obj.value obj.value.replace(/^[0]/g,"");//验证第一个字…

python之模块导入

#使用命令import来导入模块 import math #floor():对浮点数取下整 print(math.floor(32.9))#int():取整 print(int(1.9))#ceil():与floor相对,取大于或等于它的最小的整数 print(math.ceil(2.7))#从模块中导入某函数,可以在程序中直接使用,而…

学者要研究真问题做真学问

来源:秦四清科学网博客链接地址:http://blog.sciencenet.cn/blog-575926-1289864.html创新难,原创更难,难于上青天。究其原因,主要在于学者缺乏对“真问题”的发现能力和凝练能力。创新的本质,是通过新的思…

cordova使用cordova-plugin-baidumaplocation插件获取定位

cordova使用cordova-plugin-baidumaplocation插件获取定位 原文:cordova使用cordova-plugin-baidumaplocation插件获取定位版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/mate_ge/article/details/78913914 1、首先在百度地…

神经网络完成芯片设计仅需几小时

来源:科技日报作者:张梦然 科技日报北京6月9日电 (记者张梦然)英国《自然》杂志9日发表一项人工智能突破性成就,美国科学家团队报告机器学习工具已可以极大地加速计算机芯片设计。研究显示,该方法能给出可行的芯片设计…

如何查看Apache的连接数和当前连接数

查看Apache的连接数和当前的连接数以及IP访问次数,下面有个不错的示例,大家可以参考下,希望对大家解决问题有所帮助 查看了连接数和当前的连接数 复制代码 代码如下: netstat -ant | grep $ip:80 | wc -l netstat -ant | grep $ip:80 | grep…

python-类的基本知识

#类的基本知识 #类对象的优点:多态,封装,继承#多态 from random import choice s[A,"B","C","D"] chchoice(s)#从列表中随机选择元素,并返回 print(ch)#例:序列中的count函数为多态函数…

ElementUI实现地址自动补全文本框

新冠疫情自我检测系统网页设计开发文档 Sylvan Ding 的第一个基于 Vue.js 的项目. 本项目所提供的信息,只供参考之用,不保证信息的准确性、有效性、及时性和完整性,更多内容请查看国家卫健委网站! Explore the docs View Demo…

孙茂松:机器能创造吗?

来源:TsinghuaNLP中国人工智能学会主办的2021全球人工智能技术大会(GAITC 2021)6月5日-6日在杭州举行。6月5日晚,中央音乐学院音乐人工智能系主任李小兵教授和清华大学人工智能研究院常务副院长孙茂松教授共同主持了《当AI与艺术相…

Nginx+Fastdfs

注: 在配置时,使用非root用户配置 fdfs/fdfs 1. 集群部署 1.1. 准备 创建目录:本文档中所有内容安装到/fdfs目录 [fdfs5861be93b5b0 /]$mkdir -p /fdfs/fastdfs/data /fdfs/nginx/nginx_temp /fdfs/soft && ln -s /fdfs/fastdf…

python-函数定义

#抽象-函数定义 #内建函数callable函数可以用来判断函数是否可用 import math x1 ymath.sqrt print(callable(x)) print(callable(y))#函数定义:使用def语句 #斐波那契数列函数定义: #为函数添加注释,并使其与函数一同存储在内存,…

6小时完成,Jeff Dean领衔AI设计芯片方案登Nature,谷歌第四代TPU已用 芯快递 今天...

来源:机器之心编辑:杜伟、陈萍将芯片的布局规划看作一个深度强化学习问题,谷歌大脑团队希望用 AI 来提升芯片设计效率。基于 AI 的最新设计方案可以在数小时内完成人类设计师耗费数月才能完成的芯片布局,这将有可能引领一场新的芯…

Dockerfile命令详解

说明&#xff1a; 当打包docker镜像时&#xff0c;docker build -t <image_name>:<tag> 时&#xff0c;该命令会自动读取当前文件夹下的Dockerfile文件里的命令行&#xff0c;来进行镜像打包。 FROM 说明&#xff1a;指定基础镜像&#xff0c;且必须是第一条指令…

python-异常

#异常&#xff1a;每个异常都是一些类的实例&#xff0c;这些实例可以被引发&#xff0c;也可以进行捕捉&#xff1b; #异常的引发&#xff1a;通过raise语句可以引发异常raise Exception raise Exception("MyException!")#通过dir函数可以得到模块的内容 import mat…

在Docker中运行Vue.js项目(开发环境/生产环境)

新冠疫情自我检测系统网页设计开发文档 Sylvan Ding 的第一个基于 Vue.js 的项目. 本项目所提供的信息&#xff0c;只供参考之用&#xff0c;不保证信息的准确性、有效性、及时性和完整性&#xff0c;更多内容请查看国家卫健委网站&#xff01; Explore the docs View Demo…