1.node.js的诞生
JavaScript 的一生伴随着浏览器大战。JavaScript 由 Netscape(网景)浏览器发布,但是 Netscape 在和 IE 的竞争中落败,早已不复存在;后来谷歌公司的 Chrome 浏览器异军突起,凭借强悍的性能把 IE 按在地上摩擦。
谷歌公司在 Chrome 浏览器中集成了一种名为“V8”的 JavaScript 引擎(也即 JavaScript 解释器),它能够非常快速地解析和执行 JavaScript 代码。
V8 引擎使用 C++ 语言编写,可以独立运行,也可以嵌入到任何其它 C++ 程序中。谷歌公司将 V8 引擎甚至整个 Chrome 浏览器都开源了,任何人都可以免费地将 V8 应用到自己的项目中。
V8 引擎的强大,以及当年 JavaScript 的火爆,使得一名叫 Ryan Dahl 的程序员动起了“歪心思”,他希望在浏览器之外再为 JavaScript 构建一个运行时,让 JavaScript 能够直接在计算机上运行,这样 JavaScript 就能像 Python、Ruby、PHP 等其它脚本语言一样大展宏图,不必再受限于浏览器,只能做一些小事情。
Ryan Dahl 和他的团队真的做到了,并且做得很好,他们将这套独立的 JavaScript 运行时命名为 Node.js;为了避免被误认为是 JavaScript 框架,现在也经常简称为 Node。
什么是node.js?
node.js 是一个基于 Chorme V8 引擎 运行环境的 JavaScript程序 Chorme 是 谷歌浏览器中 加载执行的 浏览器引擎 前端代码,必须要有浏览器中的引擎,只能执行,在浏览器中,才有效果 node.js 将浏览器中定义的引擎程序,单独的剥离出来,形成一个独立的运行环境让JavaScript代码,不再依赖浏览器,可以脱离浏览器,独立运行node.js 实际上,就是脱离了浏览器,独立运行的JavaScript程序,也就是外部js文件,可以编写后端。
什么是 NPM?
NPM 是 Node.js 中的包管理器。允许我们为 Node.js 安装各种模块,这个包管理器为我们提供了安装、删除等其它命令来管理模块。这里有一点我们需要注意,我们必须要有一个 package.json 文件或 node_modules 目录安装模块到本地,NPM 最好的一点是它会在本地存储我们所安装的依赖项。
什么时候需要 NPM 包?
当我们在开发一些 Node.js 项目时,可能会遇到一些地方需要 NPM,例如链接 Redis、MongoDB 或者发送请求 Request 等,有了这些现有模块可以使我们更专注于业务开发,当然有时你会有些特别的需求,这时可能需要自己去封装一个 NPM 模块,实现模块复用、资源共享。
NPM 安装
NPM 不需要单独安装,在我们安装 Node.js 环境时,NPM 也就安装了,Node.js 环境还没搭建的同学可参考 “3N 兄弟” 助您完成 Node.js 环境搭建 一节。
终端执行 npm -v 命令查看当前 npm 版本
切换为淘宝镜像源
$ npm -v
5.6.0
NPM 源设置
在国内有时候受限于网络因素的影响,通常在安装一个包管理器之前可以切换为 taobao 源,使得速度可以更快,但是要注意如果是私有模块在 NPM 官方的,则必须切换为官方源,否则会出现 404 错误。
查看当前 npm 源
npm config get registry
# http://registry.npmjs.org/
npm config set registry=https://registry.npm.taobao.org
初始化项目 的指令?
在项目文件夹启动cmd命令窗口,输入npm init,填入你的项目信息。
此时项目文件夹中就会有一个package.json文件,里面保存着我们初始化时填写的配置信息。在项目文件夹内新建一个test.js文件,写入console.log('你好,工具人'),打开命令窗口执行 node test.js就会输出结果了。
一般在我们拿到一个项目时,需要先去查看它的package.json配置文件。
全局安装与 普通安装的区别?
1、安装位置不同:
普通安装:
npm install moduleName ,则是将模块下载到当前命令行所在目录。
全局安装:
npm install moduleName -g ,模块将被下载安装到全局目录中,即Node的安装目录下的node_modules下
2、调用方式不同:
在代码中,本地安装可以直接通过require()的方式引入;var moduleName = require('moduleName');
全局的安装是供命令行(command line)使用的,比如grunt,全局安装的方式是没有办法用require调用包的;
备注:
可以通过使用npm set global=true/false来设定安装模式,npm get global可以查看当前使用的安装模式。