Henry前端笔记之 Node及npm相关

NodeJs 简介:

1.Nod简介与概述:

详见:https://www.jianshu.com/p/d99e11b8e2fd ((文中涉及的DOM与BOM的区别联系传送门))

  • Node.js是基于Chrome JavaScript运行时建立的一个平台,实际上它是对Google Chrome V8引擎进行了封装,它主要用于创建快速的、可扩展的网络应用。Node.js采用事件驱动和非阻塞I/O模型,使其变得轻微和高效,非常适合构建运行在分布式设备的数据密集型实时应用。

  • 运行于浏览器的Javascript,浏览器就是Javascript代码的解析器,而Node.js则是服务器端JS的代码解析器,存于服务器端的JS代码由Node.js来解析和应用。

  • JS解析器只是JS代码运行的一种环境,浏览器是JS运行的一种环境,浏览器为JS提供了操作DOM对象和window对象等接口。Node.js也是JS的一种运行环境,node.js为JS提供操作文件、创建http服务、创建TCP、UDP服务等接口,所以Node.js可以完成其他后台语言能完成的工作。

2.交互式运行环境:PEPL

Node.js提供了一个交互式运行环境,通过这个环境,可以立即执行JS代码,使用方法类似于Chrome浏览器中Firebug插件中的Console。
在Linux环境进入终端后,属于"node"或者“nodejs”进入Node.js的交互式运行环境,Ctrl+d可以退出此环境。
查看系统中安装的Node.js版本:node -v or nodejs -v
运行JS文件,eg:node file.js or nodejs file.js

3.Node.js模块和包

- 模块
Node.js官方提供了很多模块,这些模块分别实现了一种功能,如操作文件模块fs,构建http服务模块的http等,每个模块都是一个JS文件,当然也可以自己编 写模块。
- 包
包可以将多个具有依赖关系的模块组织在一起,封装多个模块,以方便管理。Node.js采用了CommonJS规范,根据CommonJS规范规定,一个JS文件就是 一个模块,而包是一个文件夹,包内必须包含一个JSON文件,命名package.json。一般情况下,包内bin文件夹存放二进制文件,包内的lib文件夹存放JS文件,包内的doc文件夹存放文档,包内的test文件夹存放单元测试。package.json文件中需要包含的字段及包的使用。

3.npm包管理工具

npm简介详见:https://dkvirus.gitbooks.io/-npm/content/chapter1.html

  • npm是node.js的包管理工具,npm定义了包依赖关系标准,我们使用npm主要用来下载第三方包和管理本地下载的第三方包。

npm init 与 package.json

**重点摘记:

安装 package.json 中的包

package.json 文件其中一个重要功能就是记录当前项目的依赖包有哪些。

  • 这样在下载完一个项目时;
  • 查看 package.json 可以知道项目依赖哪些包;
  • 使用 npm install 指令可以安装 package.json 中记录的依赖包;
  • 安装完依赖包,才可以启动项目把项目给跑起来。
$ npm install   // 就是这么简单,当然前提是有 package.json 并且里面配置了相关包信息

- -save 的用途

save 和 -g 一样,属于参数。
在安装模块时,只有当事人知道安装了哪些模块,如果换另外一个人来看这个项目,是不会知道这个项目安装了哪些模块。
**使用 --save 可以在安装模块时,同时将安装的模块信息记录在 package.json 文件中,**这样第三个人再看这个项目时,就可以直接看 package.json 文件来了解这个项目依赖了哪些包。

$ npm install antd --save

使用 --save 可以将模块信息记录到 package.json 文件中 dependencies 属性中。
在这里插入图片描述

- -save-dev 的用途

与 --save 参数类似,–save-dev 也会将模块信息记录到 package.json 文件中,不同的是记录在文件中的 devDependencies 属性下。

问题一:dependencies 与 devDependencies 属性区别?

dependencies 指定了项目生产环境时所依赖的模块;
devDependencies 制定了项目开发环境时所依赖的模块。

问题二:开发环境和生产环境是什么?开发环境和生产环境

问题三:为什么需要生产/开发两个环境?

举个最简单的例子:
在开发阶段,我们需要对开发的模块进行单元测试,这时在开发环境 devDependencies 下就要安装单元测试模块。
在生产环境 dependencies,用户直接使用项目,此时项目的开发已全部完成。这时就不需要单元测试模块了,再加上只会影响性能。

package.json 中包版本 ~ 与 ^ 含义

https://dkvirus.gitbooks.io/-npm/content/di-wu-zhang/52-npm-ban-ben-zhi-shi-zong-jie.html
假定某个包的版本是 1.4.0
- ~1.4.0
表示:>=1.4.0 && < 1.5.0
说明:小版本不变,补丁号可以取最大值。
- ^1.4.0
表示:>=1.4.0 && < 2.0.0
说明:大版本号不变,小版本号可以取最大值。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值