NPM是什么?
[NPM官网](https://docs.npmjs.com/)给出解释如下:
```
Use npm to install, share, and distribute code; manage
dependencies in your projects; and share & receive feedback with
others.
```
其实说白了,就是字面意思---包管理工具,可以分享/重复利用/管理模块代码;它将某个独立的功能封装起来,用于发布、更新、依赖管理和版本控制.
NPM与包之间的关系
Node组织了自身的核心模块, 同时也使得第三方文件模块可以有序的编写和使用,在第三方的模块中, 模块与模块之间是散列的不可以直接引用, 在模块之外, 包和NPM就可以将模块联系起来的一种机制。
上面的图配上边的话, 解释的非常清楚, 但是得细细品味一下;
安装依赖包
[Express](http://www.expressjs.com.cn/) 是一个基于 Node.js 平台的极简、灵活的 web 应用开发框架,它提供一系列强大的特性,帮助你创建各种 Web 和移动设备应用。
为何先要引出这个Express?
1. 它是一个流行的node.js的框架<依赖包>;
2. Node.js官方推荐;
3. 为了演示如何安装依赖包<框架>;
[十个最适合 Web 和 APP 开发的 NodeJS 框架](http://web.jobbole.com/84607/)
第一 简洁的语法
一行代码搞定`npm install express`. 它究竟做了什么?
首先从[NPM官网](http://npmjs.org/)进行查找别人上传的代码.然后下载;
当然下载的位置还分为了**本地模式**和**全局模式**;
1 本地模式
语法---`npm install express`
安装位置---`~/ node_modules `
默认情况下我们使用 `npm install`命令就是采用`本地模式`. 即把包安装到`当前目录的 node_modules 子目录下`<~/ node_modules >。
Node.js 直接使用require('express');即可引入该包。
2 全局模式
语法---`npm install -g express`
那么为何已经可以用了, 还要用全局模式呢?
全局模式其实将包安装到一个全局可以使用的位置, 为了`减少多重副本而使用全局模式`,而是因为本地模式`不会添加PATH 环境变量`。bin 目录没有包含在 PATH 环境变量中,不可以直接使用;
步骤与实例
第一步下载express
```
$ npm install -g express
```
第二步 配置使用, 创建一个简单的服务器app.js
```
var express = require(‘express’);
var app = express();
app.get(‘/’, function (req, res) {
res.send(‘Hello World!’);
});
app.listen(3000, function () {
console.log(‘Example app listening on port 3000!’);
});
```
第三步 终端中执行`node app.js`
第四步 打开浏览器, 输入[http://127.0.0.1:3000/](http://127.0.0.1:3000/), 如下图所示
#### 小技巧
如果你有 PHP 开发经验,更改代码后直接刷新浏览器查看结果,但是运行node.js时, 却不好用, **必须重启。怎么办呢?**
第一 产生的原因
Node.js 只有在第一次引用到某部分时才去解析该文件,以后都会直接接访问内存,避免重复载入,而 PHP 则是重新读取并解析脚本(如果没有专门的优化配置)。
第二 优缺点
Node.js的这种设计有利于提高性能,却不利于开发调试;
第三 解决方法
使用supervisor来解决; 步骤
```
#下载supervisor
$ sudo npm install -g supervisor
#如果没有执行过node命令, 建议先执行
$ node hello.js
#然后再执行如下命令, 之后更改hello.js代码后直接刷新浏览器即可.
$ supervisor hello.js
```
还可以用一下hotnode pm2,
后续会给大家详解一下pm2的高大上用法
Node版本区别:
从对ES6的支持来简单的区分是
```
0.x 完全不支持ES6
4.x 部分支持ES6特性,并处在LTS阶段
5.x 部分支持ES6特性(比4.x多些),属于过渡产品,现在来说应该没有什么理由去用这个了
6.x 支持98%的ES6特性
```
程序猿还是有情怀的,你瞧! 这不:
Merry Christmas
注意:本文归作者所有,未经作者允许,不得转载