NodeJS 环境搭建

发布于 2025-01-06 16:41:29 字数 6203 浏览 8 评论 0

认识 Node.js

  • Node 是一个服务器端 JavaScript 解释器
  • Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境
  • Node.js 使用了一个事件驱动、非阻塞式 I/O 的模型,使其轻量又高效
  • Node.js 的包管理器 npm,是全球最大的开源库生态系统
  • Node.js 是一门动态语言,运行在服务端的 Javascript

版本介绍

  • 在命令窗口中输入 node -v 可以查看版本
  • 0.x 完全不技术 ES6
  • 4.x 部分支持 ES6 特性
  • 5.x 部分支持 ES6 特性(比 4.x 多些),属于过渡产品,现在来说应该没有什么理由去用这个了
  • 6.x 支持 98%的 ES6 特性
  • 8.x 支持 ES6 特性

环境搭建

  • 下载安装文件
  • 下载完后进行安装,建议安装到默认路径,注意不要有中文路径
  • 配置环境变量
  • 在命令窗口中输入 node -v,如果正常显示版本号则表示安装成功

NVM 管理 Node 版本

先安装一个 nvm( https://github.com/creationix/nvm

$ curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.25.2/install.sh | bash

nvm 的全称是 Node Version Manager ,之所以需要这个工具,是因为 Node.js 的各种特性都没有稳定下来,所以我们经常由于老项目或尝新的原因,需要切换各种版本。

安装完成后,你的 shell 里面应该就有个 nvm 命令了,调用它试试

$ nvm

当看到有输出时,则 nvm 安装成功。

安装 Node.js

使用 nvm 的命令安装 Node.js

$ nvm install 0.12

安装完成后,查看一下

$ nvm ls

这时候可以看到自己安装的所有 Node.js 版本,输出应如下:

(图 1)

那个绿色小箭头的意思就是现在正在使用的版本,我这里是 v0.10.29 。我还安装了 v0.11.14 ,但它并非我当前使用的版本。

如果你那里没有出现绿色小箭头的话,告诉 nvm 你要使用 0.12.x 版本

$ nvm use 0.12

然后再次查看,这时候小箭头应该出现了。

OK,我们在终端中输入

$ node

REPL(read–eval–print loop) 应该就出来了,那我们就成功了。

随便敲两行命令玩玩吧。

比如 > while (true) {} ,这时你的 CPU 应该会飚高。

完善安装

上述过程完成后,有时会出现,当开启一个新的 shell 窗口时,找不到 node 命令的情况。

这种情况一般来自两个原因

  1. shell 不知道 nvm 的存在

     

  2. nvm 已经存在,但是没有 default 的 Node.js 版本可用。

     

解决方式:

一、检查 ~/.profile 或者 ~/.bash_profile 中有没有这样两句

export NVM_DIR="/Users/YOURUSERNAME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"  # This loads nvm

没有的话,加进去。这两句会在 bash 启动的时候被调用,然后注册 nvm 命令。

二、调用 $ nvm ls

看看像不像上述图 1 中一样,有 default 的指向。

如果没有的话,执行 $ nvm alias default 0.12$ nvm ls

Node.js 模块

模块系统是 Node.js 最基本也是最常用的。一般情况模块可分为四类:

  • 原生模块
  • 文件模块
  • 第三方模块
  • 自定义模块

自定义模块

创建模块 (b.js)

//b.js
function FunA(){
    return 'Tom';
}
//暴露方法 FunA
module.exports = FunA;

加载模块 (a.js)

//a.js
var FunA = require('./b.js');//得到 b.js => FunA
var name = FunA();// 运行 FunA,name = 'Tom'
console.log(name); // 输出结果

module.exports

module.exports 就 Node.js 用于对外暴露,或者说对外开放指定访问权限的一个对象。如上面的案例,如果没有这段代码

module.exports = FunA;

那么 require('./b.js') 就会为 undefined 。 一个模块中有且仅有一个 module.exports ,如果有多个那后面的则会覆盖前面的。

exports

exportsmodule 对象的一个属性,同时它也是一个对象。在很多时候一个 js 文件有多个需要暴露的方法或是对象, module.exports 又只能暴露一个,那这个时候就要用到 exports :

function FunA(){
    return 'Tom';
}

function FunB(){
    return 'Sam';
}

exports.FunA = FunA;
exports.FunB = FunB;
//FunA = exports,exports 是一个对象
var FunA = require('./b.js');
var name1 = FunA.FunA();// 运行 FunA,name = 'Tom'
var name2 = FunA.FunB();// 运行 FunB,name = 'Sam'
console.log(name1);
console.log(name2);

当然在引入的时候也可以这样写

//FunA = exports,exports 是一个对象
var {FunA, FunB} = require('./b.js');
var name1 = FunA();// 运行 FunA,name = 'Tom'
var name2 = FunB();// 运行 FunB,name = 'Sam'
console.log(name1);
console.log(name2);

npm scripts

NPM 版本管理

npm -v

使用 nrm 管理 npm 版本

npm install -g nrm

执行命令 nrm ls 查看可选的源。

*npm ---- https://registry.npmjs.org/

cnpm --- http://r.cnpmjs.org/

taobao - http://registry.npm.taobao.org/

eu ----- http://registry.npmjs.eu/

au ----- http://registry.npmjs.org.au/

sl ----- http://npm.strongloop.com/

nj ----- https://registry.nodejitsu.com/

其中,带 * 的是当前使用的源,上面的输出表明当前源是官方源。

切换

如果要切换到 taobao 源,执行命令 nrm use taobao

增加

你可以增加定制的源,特别适用于添加企业内部的私有源,执行命令 nrm add <registry> <url> ,其中 reigstry 为源名, url 为源的路径。

nrm add registry http://registry.npm.frp.trmap.cn/

删除

执行命令 nrm del <registry> 删除对应的源。

测试速度

你还可以通过 nrm test 测试相应源的响应时间。

nrm test npm

什么是 npm 脚本

npm 允许在 package.json 文件里面,使用 scripts 字段定义脚本命令。 package.json 里面的 scripts 字段是一个对象。它的每一个属性,对应一段脚本。定义在 package.json 里面的脚本,就称为 npm 脚本。

查看当前项目的所有 npm 脚本命令,可以使用不带任何参数的 npm run 命令。

使用

  • npm run 脚本名称
  • 如果是并行执行(即同时的平行执行),可以使用&符号。 npm run script1.js & npm run script2.js
  • 如果是继发执行(即只有前一个任务成功,才执行下一个任务),可以使用&&符号。 npm run script1.js && npm run script2.js

简写形式

  • npm startnpm run start
  • npm stopnpm run stop
  • npm testnpm run test
  • npm restartnpm run stop && npm run restart && npm run start

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

文章
评论
29 人气
更多

推荐作者

櫻之舞

文章 0 评论 0

弥枳

文章 0 评论 0

m2429

文章 0 评论 0

野却迷人

文章 0 评论 0

我怀念的。

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文