一旦本人能比外人看得更远,那是因为小编站在巨人的肩上。

                    ——艾萨克·牛顿

 

当代前端开发已经离不开Node了。我们都掌握在安装Node时会附赠2个命令行工具Node
Package Manager,即npm。大概你曾经照着教程输入过许多遍”npm install
xxx”,并且你发觉npm的吩咐林林总总几十条,package.json的配备项令人眼花缭乱,但不知你有没有认真想过,大家为啥要求npm?若是没有它,世界会怎么?

小编的知晓,npm所做的一切都以为了化解软件工程界2个直接以来的追求:代码复用。抓住那么些基本,也就抓住了正确精晓和行使npm的钥匙。

何以要复用代码呢?因为依照已部分成熟代码火速开发新的利用,能够相当大地提升开发功效,正所谓“站在巨人肩膀上”“不要再一次造轮子”。

So,在Node环境下要复用JS代码,我们有如何方案吧? 

1. 刀耕火种——copy&paste
复制粘贴代码的思绪很直接,但明天还在的如此搞的同班应该是从原始社会通过来的吗。。那几个方案最大的缺点倒还不是代码冗余,而是只要所复制的原始代码发生了扭转,那就务须手动修改每一处复本,在稍有规模的连串里常有不可行。 

2. 耕牛犁地——CommonJS

Node完结了三个模块系统CommonJS,实在是JSer的一大福音。借助它,大家不用再复制粘贴代码了:假使3个小编开发了二个名为lib1的库,他只需代码写在1个称作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制定了2个包规范,所谓规范正是局地格式和预定,比如约定从package.json文件里读取那些包的装有消息,包涵它的名字、版本号、它凭借于怎么着其他包等;又例如约定node_modules目录专门用来存放在第③方注重,Node为此提供的支持是放置的require方法暗许会到这么些目录下来检索模块,而无需手动钦命路线。有了这么些专业,一个包的付出、重视安装、公布等都步骤都标准化了,省心省时。

能够说,JavaScript从一门“玩具”语言,到后天能够胜任大型项目开发,模块化和npm是其长进路上的最主要一步。

后记

世家都晓得前端有“三板斧”,但刚才自笔者一向在谈JS,完全没涉及其它两板斧。那是因为npm只是“Node模块管理器”,Node上又从不HTML和CSS,npm自然管不到。那么除了能够直接扶助Node端的支出以外,npm又怎么着为浏览器端开发提供援救吧?

答案是:npm生态圈提供了不少无敌的前端开发工具,比如Webpack、贝布el、ESLint等。尤其是Webpack、Browserify、rollup那类创设筑工程具,能够接手浏览器端的借助管理重任,以及无数任何的增大成效。这个剧情,且待下回分解。。

相关文章

网站地图xml地图