nodejs初识,npm命令
什么是node.js
- node.js是一个基于Chrome V8 引擎的 JavaScript运行环境。
- node.js使用了一个事件驱动,非阻塞式I/O的模型,使其轻量又高效。
- node.js的包管理器npm,是全球最大开源库生态系统。
- node.js是让javaScript运行在服务器端,让javascript能做一些后台语言做的事情
- node.js可以解析js代码(没有浏览器安全级别的限制,因为在服务器端),提供了很多系统级别的API,如:
- 文件的读写
- 进程的管理
- 网络通信
- ...
开发环境配置
- 找到node.js官网,下载稳定的node.js版本。
- 也可以使用nvm来安装并维护更多的node.js的版本。
> nvm项目地址
- https://github.com/creationix/nvm/blob/master/README.md
- 根据项目地址给的指令安装nvm
- 环境变量里面配置路径,这样在任何地方都可以使用nvm的路径。项目地址中也有描述。
- 配置加速镜像export NVM_NODEJS_ORG_MIRROR=https://npm.taobao.org/mirrors/node。同上一步地址一样
- 安装好以后,就可以使用nvm的命令来安装node
- nvm - 列出一些nvm的命令
- nvm ls-remote: 查看远端node的版本
- 需要安装node的哪个版本就执行,nvm install node版本号
- nvm install --lts 安装最新的lts版本
- nvm install node 安装最新的稳定版本
- nvm ls 查看所有安装的版本
- nvm use 版本号 切换当前使用版本
命令行中体验node
- 进入命令行 输入 node 回车,就可以在命令行输入并直接运行js代码。
> 在浏览器和node命令行中运行代码
```javascript
function add (x, y) {
console.log(x+y);
}
add(3, 4)
```
> 在浏览器和命令行中调用window,process两个对象。命令行可以获取process对象,不能获取window。浏览器反之。
> 在浏览器端不能操作本地文件,也不能在不处理的情况下进行跨域请求。在node环境中没有这些限制。
-
也可以在命令行进入目标文件夹,输入 node js文件名 命令。执行js代码。
-
安装nodemon,实时侦测文件的变化
> 使用 npm 安装(装好了node,就转好了npm。
> npm install nodemon -g (-g的意思就是全局安装,能够全局使用)
安装好nodemon以后就可以使用 nodemon命令代替node命令执行实时侦测js文件变化并且执行js文件。
nodemon js文件命。
> 配置npm淘宝镜像。$ npm install -g cnpm --registry=https://registry.npm.taobao.org
- 使用不同版本的node.js执行js文件
>方法一
- nvm ls
- nvm run node版本号 js文件 : nvm run v6.11.2 index.js
- nvm run node --version : 查看当前执行的是什么版本的node.js
>方法二
- 在要执行的js文件根目录创建一个.nvmrc版本文件,文件内容为:你要使用的node版本号,如 8.4.0
- cat.nvmrc
- nvm use 此时使用的node版本就是.nvmrc文件中所写的版本。
模块与包与CommonJS
- CommonJS规范(参照http://www.commonjs.org)
>node.js和commonjs是两个不同的东西,只是我们node.js实现了comminjs规范,其他后台语言也能使用commonjs
/**
* 依赖关系 -> 纠结的编程体验 定义
* 空间命命 -> 暴露接口
* 代码组织 引用
* /
- node.js模块(基于commonjs模块)
>内置的node.js模块(API, os)
可以直接使用
如何使用参考module.js文件
>第三方node.js模块 (包,packages)
需要安装引入才能使用
新建dome文件夹
进入dome文件夹
npm init
C02L64D4FFT1:node ex-$ cd dome
C02L64D4FFT1:dome ex-$ npm init
This utility will walk you through creating a package.json file.
It only covers the most common items, and tries to guess sensible defaults.
See `npm help json` for definitive documentation on these fields
and exactly what they do.
Use `npm install <pkg>` afterwards to install a package and
save it as a dependency in the package.json file.
Press ^C at any time to quit.
package name: (dome) // 默认名字
version: (1.0.0) // 默认版本
description: // 无说明
entry point: (index.js) // 默认入口
test command: // 关键字不设置
git repository: // git仓库不设置
keywords:
author:
license: (ISC)
About to write to /Users/ex-zhongbaihua001/Desktop/node/dome/package.json:
{
"name": "dome",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC"
}
Is this OK? (yes)
这样就生成了一个node项目,然后就可以在这个项目中安装我们的第三方包 --save(安装在我们配置信息package.json中的dependencies配置里。)
如何使用参考module.js文件
可以进入文件夹,使用node命令执行module.js文件
>自定义node.js模块
根据nodejs规范自定义创建模块
引入并使用
在项目根目录创建一个js,然后通过module.exports.模块名=模块名,将这个自定义模块暴露出去
在项目中通过require的形式引入并使用
/**
* 内置模块
* os 是node内置的一个操作系统相关的模块。只要安装了node,通过require引入os就可以使用他。
* os.hostname是这个模块提供的一个方法,可以获取当前设备名称。
*/
const os = require('os');
console.log(os.hostname());
/**
* 第三方模块
* request 是一个第三方模块,需要通过npm安装,使用方法和内置模块一样,通过require的方式引入。
* node首先会在内置模块查找是否有request模块,没有就会到node_modules里面去找。
*/
const request = require('request');
request({
url:'https://api.douban.com/v2/movie/top250',
json: true
}, (error, response, body) => {
console.log(JSON.stringify(body, null, 2)) // 2表示缩进
})
/**
* 自定义模块
* hello 是一个自定义的node.js模块
* 因为自定义的模块,是在我们项目目录中创建的js文件,所以虽然是通过require的方式引入。
* 但是需要写我们这个模块的文件目录.
*/
const hello = require('./src/hello')
hello.hello()
npm的基本命令
- 安装了node就安装了npm
- npm -v 查看npm版本
- npm install n -g (--global) (升级node)
- npm i forever -g 全局安装forever模块
- npm uninstall forever -g 全局卸载forever模块
- npm install forever 本地安装forever模块(当前路径)
- npm install forever@1.8.0 安装指定版本的forever模块
- npm install underscore 他会给你之后package.json文件添加一个开发依赖配置devDependencies
- npm init 生成package.json(当你安装完依赖包后,执行这个init命令会生产这个json文件。保存你的依赖名称)
- npm install xxx --save 在init之后 需要安装依赖,可以加上--save,这样你在init之后安装的依赖就会被添加到json文件中的dependencies对象中,这个是项目依赖
- npm install babel-cli --save-dev 只在开发依赖配置安装一个es6解析器
- npm uninstall babel-cli --save-dev 卸载只安装在开发依赖的依赖包
- npm install nrm -g 提供nrm命令,可以查看所有的源
- nrm ls 查看所有的源
- nrm test 测试所有的源速度
- nrm use 源名称 可以切换源
/**
npm info 查看需要安装依赖的版本
npm list | grep gulp
npm install 安装模块
npm uninstall 卸载模块
npm update 更新模块
npm outdated 检查模块是否已经过时
npm ls 查看安装的模块
npm init 在项目中引导创建一个package.json文件
npm help 查看某条命令的详细帮助
npm root 查看包的安装路径
npm config 管理npm的配置路径
npm cache 管理模块的缓存
npm start 启动模块
npm stop 停止模块
npm restart 重新启动模块
npm test 测试模块
npm version 查看模块版本
npm view 查看模块的注册信息
npm adduser 用户登录
npm publish 发布模块
npm access 在发布的包上设置访问级别
npm package.json的语法
*/