倘我能够比别人看得重复远,那是因我立在巨人之肩上。

                    ——艾萨克·牛顿

 

当代前端开发已经偏离不起Node了。大家还懂当安Node时见面附赠一个命令行工具Node
Package Manager,即npm。或许你都按照在教程输入了无数百分之百”npm install
xxx”,并且你发现npm的吩咐林林总总几十漫漫,package.json的安排起令人乱,但不知你闹没有产生认真想了,我们为什么要npm?如果没有她,世界会怎么样?

本人之知,npm所开的一切都是为了缓解软件工程界一个直以来的追求:代码复用。抓住这基本,也不怕掀起了正确理解和使用npm的钥匙。

怎要复用代码呢?因为根据已有些成熟代码快速支付新的利用,可以极大地提高开发效率,正所谓“站在巨人肩膀上”“不要再次过去轮子”。

So,在Node环境下如复用JS代码,我们来怎么样方案为? 

1. 刀耕火种——copy&paste
复制粘贴代码的思绪十分直接,但本还在的这样折腾的同窗应该是由原有社会通过来之吧。。这个方案最老的短点倒还未是代码冗余,而是只要所复制的原始代码发生了变更,那就算务须手动修改每一样处在复本,在微有规模的类里从来不可行。 

2. 耕牛犁地——CommonJS

Node实现了一个模块系统CommonJS,实在是JSer的一样不胜福音。借助它们,我们不必还复制粘贴代码了:假如一个作者开发了一个叫做吧lib1的堆栈,他单待代码写以一个叫lib1.js的文书里,用module.export语句导出;而使用者只需要将lib1.js产卵充斥及祥和工程目录,require一下即使只是径直用啦!(此时lib1也深受称作一个“依赖”)

然此还是存在个别单可怜题目:

相同,如果lib1.js本人也复用了别的代码,比如lib2.js、lib3.js…那尔当下载lib1.js之时,必须手动把它们所因的这些模块文件呢一致并下载;可要是lib2.js还依赖lib5.js、lib6.js….呢?一株大之、深不见底的靠树生麻烦手工管理。

第二、lib1.js的撰稿人修复了几个bug,但没一个体制能够被他通你升官旧的模块文件。

当同样曰工作素养良好的程序员,看到这些题材之首先感应是不是“写单本子”?哈哈,不用麻烦了,因为已有人替我们形容好了,这个剧本工具就是是npm。 

3. 机械化耕作——npm
有矣上面“自力更生”的原来体验,再省npm提供的依赖安装、卸载、升级、发布等一条龙服务,是休是雅爽?

Npm制定了一个担保规范,所谓规范就是是片格式和预约,比如约定由package.json文件里读取这个包之享有信息,包括它的名字json、版本号、它借助让安别的包等;又以约定node_modules目录专门用来存放第三正在依,Node为这提供的支持是放的require方法默认会到是目录下来检索模块,而随便需手动指定路线。有矣这些专业,一个确保的开支、依赖安装、发布等都步骤都极了,省心省时。

可以说,JavaScript从平派系“玩具”语言,到今得以胜任大型项目开发,模块化和npm是该提高路上的要紧一步。

后记

世家都理解前端有“三板斧”,但方本身直接当谈JS,完全没涉及另外两板斧。这是以npm只是“Node模块管理器”,Node上以没HTML和CSS,npm自然管不至。那么除了可一直支持Node端的支付外,npm又如何呢浏览器端开发提供支持为?

答案是:npm生态圈提供了累累强劲的前端开发工具,比如Webpack、Babel、ESLint等。特别是Webpack、Browserify、rollup这类似构建工具,可以接手浏览器端的负管理重任,以及无数外的附加功能。这些情节,且要下回分解。。

相关文章

网站地图xml地图