nodejs初识,npm命令

什么是node.js

  1. node.js是一个基于Chrome V8 引擎的 JavaScript运行环境。
  2. node.js使用了一个事件驱动,非阻塞式I/O的模型,使其轻量又高效。
  3. node.js的包管理器npm,是全球最大开源库生态系统。
  4. node.js是让javaScript运行在服务器端,让javascript能做一些后台语言做的事情
  5. node.js可以解析js代码(没有浏览器安全级别的限制,因为在服务器端),提供了很多系统级别的API,如:
- 文件的读写
- 进程的管理
- 网络通信
- ...

开发环境配置

  1. 找到node.js官网,下载稳定的node.js版本。
  2. 也可以使用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

  1. 进入命令行 输入 node 回车,就可以在命令行输入并直接运行js代码。
> 在浏览器和node命令行中运行代码
```javascript
  function add (x, y) {
    console.log(x+y);
  }
  add(3, 4)
```
> 在浏览器和命令行中调用window,process两个对象。命令行可以获取process对象,不能获取window。浏览器反之。

> 在浏览器端不能操作本地文件,也不能在不处理的情况下进行跨域请求。在node环境中没有这些限制。
  1. 也可以在命令行进入目标文件夹,输入 node js文件名 命令。执行js代码。

  2. 安装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
  1. 使用不同版本的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

  1. CommonJS规范(参照http://www.commonjs.org
>node.js和commonjs是两个不同的东西,只是我们node.js实现了comminjs规范,其他后台语言也能使用commonjs
/**
 * 依赖关系 -> 纠结的编程体验       定义
 * 空间命命                 ->    暴露接口
 * 代码组织                       引用
 * /
  1. 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的基本命令

  1. 安装了node就安装了npm
  2. npm -v 查看npm版本
  3. npm install n -g (--global) (升级node)
  4. npm i forever -g 全局安装forever模块
  5. npm uninstall forever -g 全局卸载forever模块
  6. npm install forever 本地安装forever模块(当前路径)
  7. npm install forever@1.8.0 安装指定版本的forever模块
  8. npm install underscore 他会给你之后package.json文件添加一个开发依赖配置devDependencies
  9. npm init 生成package.json(当你安装完依赖包后,执行这个init命令会生产这个json文件。保存你的依赖名称)
  10. npm install xxx --save 在init之后 需要安装依赖,可以加上--save,这样你在init之后安装的依赖就会被添加到json文件中的dependencies对象中,这个是项目依赖
  11. npm install babel-cli --save-dev 只在开发依赖配置安装一个es6解析器
  12. npm uninstall babel-cli --save-dev 卸载只安装在开发依赖的依赖包
  13. npm install nrm -g 提供nrm命令,可以查看所有的源
  14. nrm ls 查看所有的源
  15. nrm test 测试所有的源速度
  16. 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的语法
*/
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,544评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,430评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,764评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,193评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,216评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,182评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,063评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,917评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,329评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,543评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,722评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,425评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,019评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,671评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,825评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,729评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,614评论 2 353