美文网首页
关于Node.js 你真的明白了什么是包(Packages)和M

关于Node.js 你真的明白了什么是包(Packages)和M

作者: 渭小粉 | 来源:发表于2018-12-12 10:19 被阅读0次

Node.js 和 npm 对于包和模块的定义,都有非常明确的定义,然后都是非常的容易造成混淆的。下面就来慢慢解释下。

摘要(Quick Summary)

包(package):package是一个使用package.json文件描述的文件或目录。

模块(Module):模块是任何的文件或目录可以被Node.js's的require().此外,几个配置文件允许这样发生 。

什么是package?可以是如下:

a) 一个目录包含一个程序,由package.json

b) 一个gzipped tarball(打包工具)包含(a)

c) 一个url处理(b)

d) 在(c)注册的账户,被发布的包<name>@<version>

e) A <name>@<tag> 指向(d)

f) 一个 <name> 有一个最新的标签满足(e)

g) 一个git url,当克隆的时候,会生成一个如下的包

注意所有这些包的可能性,即使你从来没有发布你的包到公共注册信息当中。你仍然会从npm中得到很多好处

        - 如果你仅仅想写一个node程序

        - 如果你想要能够在打包后轻易的安装

git url 将会使下列格式之一

git://github.com/user/project.git#commit-ish

git+ssh://user@hostname:project.git#commit-ish

git+http://user@hostname/project/blah.git#commit-ish

git+https://user@hostname/project/blah.git#commit-ish

The commit-ish can be any tag, sha, or branch which can be supplied as an argument to git checkout. The default is master.

什么是一个模块?

模块是一个可以在Node.js被require()加载的程序。如下是所有的例子:

   1. 一个文件夹包含一个package.json 文件,并且package.json包含一个main字段

    2. 一个包含index.js的文件夹

    3. 一个Javascript文件

Most npm packages are modules

一般来说,npm包被用于Node.js程序当中,通过require()来加载,来使他们变成模块。可是,没有必要说一个npm package就是一个模块

一些包像:cli packages,仅仅包含可执行的命令行接口也并不包含用于Node.js程序的main字段。那么这些包就不是模块。

几乎所有的npm package都包含多个模块(因为每个通过require()加载的文件都是一个模块)

在Node程序的环境当中,模块也是可以从文件当中加载的:

var req = require( 'request' ); // req关联模块request

在Node.js中的文件和目录命令以及npm生态系统

所以,为什么是node_modules文件夹,而package.json文件呢?为什么不是node_packages或者module.json呢?

package.json文件定义package

目录node_modules文件夹是Node.js寻找模块的地方。

比如:你创建了一个node_modules/foo.js,然后有一个程序有这样一段代码:var f = require( "foo.js");, 那么它就会加载这个模块。可是,foo.js不是一个包因为它没有一个package.json的文件

另一种情况是,如果你创建一个没有index.js文件的包,或者package.json文件没有main字段,那么这就不是一个模块。即使它被安装在node_modules当中,也不能被require()加载

相关文章

  • 关于Node.js 你真的明白了什么是包(Packages)和M

    Node.js 和 npm 对于包和模块的定义,都有非常明确的定义,然后都是非常的容易造成混淆的。下面就来慢慢解释...

  • npm 应用基础

    1. 什么是 npm? npm 一开始是 node 的包管理工具,用于管理 packages (包) 或者也叫 m...

  • day20-包

    一、包 1、什么是包 1) 官网解释:Packages are a way of structuring Pyth...

  • monkey基础使用笔记

    查看手机链接状态adb devices 查看包名adb shell pm list packages (名字) m...

  • Packages 包

    Packages 源码文件以定义包开始: baz() 的全名是 foo.bar.baz,Goo 的全名是 foo....

  • packages 包

    在大型项目中,可能会有成百上千个python文件,包可以帮我们更好地组织整个项目。一个包相当于一个容器,在一个项目...

  • Install packages

    M-x packages-list-packages Navigation to targeted package...

  • PackageNotFoundError: Packages m

    1、在使用 conda 下载一些包时(例如我今天在安装一个新的低版本的pytorch=0.4.0时,出现了如下Er...

  • R包sva去除批次效应

    关于sva包 sva的用户说明:http://www.bioconductor.org/packages/rele...

  • R包的安装总结

    一、CRAN安装R包:install.packages()函数 1、单个包的安装:install.packages...

网友评论

      本文标题:关于Node.js 你真的明白了什么是包(Packages)和M

      本文链接:https://www.haomeiwen.com/subject/odhuhqtx.html