NPM就是一个下载器,通过它可以下载到几乎所有你需要的代码资源。它的成功,包括如下几个方面:

  1. 海量资源:NPM背后有数以万计的开源免费模块。
  2. 高效利用:作为开发者,只需要敲几个简单的命令就可以将这些开源模块引入到自己的项目中来。虽然这些模块大部分都可以在github上找到,但当模块数量巨大的时候,一个个去github上下载还是非常困难的。再考虑到版本依赖问题,就更加复杂。但有了NPM,一个命令搞定。
  3. 鼓励共享:通过NPM提供的npm addusernpm publish两个简单的命令,就能把自己写的模块贡献到NPM社区。超低的发布成本无疑为NPM的发扬光大带来了无疑估量的贡献。

NPM管理的是Node模块。理解一个Node模块(my_module),最核心的是要理解下面三大部分:

  1. 模块本身的代码逻辑

    • 模块本身的代码逻辑,自然是通过代码来体现的;
  2. 模块依赖的第三方组件 
    • 模块依赖的第三方组件,通过模块的package.json配置文件中dependences字段指定,模块的使用者在安装模块时会根据package.json文件自动下载这些组件(他们其实也是一个个的模块)
  3. 模块依赖的文档测试工具 
    • 模块依赖的文档测试工具也是通过package.json配置文件来指定,对应的字段是devDependencies,对于这一部分,模块的使用者有两种选择:不准备了解模块细节,没必要安装这些工具,此时使用者可以通过npm install my_module --save命令来安装模块;准备对模块进行一些定制,定制后还需要利用模块的测试工具进行系统的测试,此时使用者可以通过npm install my_module --save-dev命令来安装模块,npm会自动将devDependencies指定的工具一起下载下来。

由此可见,模块 = 代码 + 依赖 = 代码 + package.json。我们只需要通过npm把代码和package.json文件下载下来,就能获得使用这个模块所需的一切。 

npm理解的更多相关文章

  1. 01 node.js,npm,es6入门

    Node.js安装 1.下载对应你系统的Node.js版本: https://nodejs.org/en/download/ 命令提示符下输入命令 node -v 会显示当前node的版本 快速入门 ...

  2. NPM一Node包管理和分发工具

    NPM 全称 Node Package Manager Node包管理和分发工具,可以把NPM理解为前端的Maven 我们通过npm可以很方便地下载js库,管理前端工程 最近版本的node.js已经集 ...

  3. NPM 包管理工具详解,使用教程

    NPM 包管理工具 1.1 定义:什么是 NPM NPM 全称 Node Package Manager,它是 JavaScript 的包管理工具, 并且是 Node.js 平台的默认包管理工具.通过 ...

  4. npm的下载与安装

    1.Node (1)什么是Node.js Node.js 就是运行在服务端的 JavaScript.Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台. (2)Node ...

  5. Appium安卓真机环境搭建

    说明 步骤可能比较简洁,因为手头上有安卓测试机,所以需要配置虚拟机的童鞋请去虫师博客园,因为我也是从那儿学的,哈哈.点我飞到虫师那儿 但是如果你要搭建真机测试环境的话,本教程将是最简单实用的. 1. ...

  6. Angular2入门学习

    最近项目使用angular2,1和2版本变化大变样.下面总结一些学习网址及安装步骤. 中文官网(必看): https://angular.cn 懒人学习: http://www.imooc.com/l ...

  7. npm的理解

    一 概念方面 npm的全称是node package manger ,是一个nodejs包管理工具,已经成为非官方的发布node模块包的标准.有了npm可以很快速的找到特定服务器要使用的包,进行下载, ...

  8. 从npm 角度理解 mvn 的 pom.xml

    从npm 角度理解 mvn 的 pom.xml pom -- project object model. 用于描述项目的配置: 基础说明 依赖 如何构建运行 类似 node.js 的 package. ...

  9. 从Java角度理解Angular之入门篇:npm, yarn, Angular CLI

    本系列从Java程序员的角度,带大家理解前端Angular框架. 本文重点介绍Angular的开发.编译工具:npm, yarn, Angular CLI,它们就像Java在中的Maven,同时顺便介 ...

随机推荐

  1. JavaWeb-拦截器,过滤器,监听器的区别和执行顺序

    一:拦截器 :是在面向切面编程的就是在你的service或者一个方法,前调用一个方法,或者在方法后调用一个方法比如动态代理就是拦截器的简单实现,springmvc的aop中的前置通知和后置通知. 二: ...

  2. C#后台动态添加Grid表格

    前面页面: <ScrollViewer x:Name=" BorderBrush="#25A0DA" VerticalScrollBarVisibility=&qu ...

  3. Oracle口令文件管理

    Oracle的口令文件目录 $ORACLE_HOME/dbs/orapw$ORACLE_SID 建立口令文件 orapwd file=$ORACLE_HOME/dba/orapw$ORACLE_SID ...

  4. VS2013使用自带的数据库 Microsoft SQL Server 2012 Express LocalDB

    注:DeptLocalDB:自己取的数据库实例名称 DeptSharedLocalDB:自己取的实例共享名称np:\\.\pipe\LOCALDB#SH7C6ED5\tsql\query:命名管道名称 ...

  5. GNU汇编 存储器访问指令

    .text .global  _start _start: mov r0,#0xff str r0,[r1] ldr r2,[r1]

  6. MySQL字段属性介绍

    引言 这次Qi号分享MySQL字段属性简介.下面资料是Qi号搜集大量资料与个人理解的整理. MySQL提供了一组可以赋给表中各个列的数据类型,每个类型都强制数据满足为该数据类型预先确定的一组规则,例如 ...

  7. 腾讯首页分辨手机端与pc端代码

    腾讯首页分辨手机端与pc端代码 自己在做网页的时候在腾讯网首页借鉴的代码. 代码: <!-- 移动适配JS脚本 --> <script type="text/javascr ...

  8. Jongmah CodeForces - 1110D

    传送门 题意:你有n个数字,范围[1, m],你可以选择其中的三个数字构成一个三元组,但是这三个数字必须是连续的或者相同的,每个数字只能用一次,问这n个数字最多构成多少个三元组? 题解:三个一模一样的 ...

  9. [CodeForces950C]Zebras

    Description 题目地址: Codeforces 题意:给你一串只含01的字符串,判断能否将字符串分为k个子序列,使得子序列满足以下条件: 开头和结尾都是0 相邻的2个数是01或者10 如0, ...

  10. 适合pc端的移动拖拽,分享一下。

    h5新加的特性拖拽事件,但是只适合PC端哦.不多说了上代码 <!DOCTYPE html> <html> <head> <title></titl ...