首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

精通 MEAN MEAN 堆栈(1)Node.js

精通 MEAN MEAN 堆栈(1)Node.js

安装 Node.js您需要安装 Node.js,以便在本系列中的示例应用程序上工作,如果尚未安装它,那就立刻开始安装吧。
如果使用 UNIX® 风格的操作系统(Linux、Mac OS X 等),我推荐使用  。(否则,在  上单击                    Install,下载适合您操作系统的安装程序,然后接受默认选项即可。)借助 NVM,您可以轻松下载                Node.js,并从命令行切换各种版本。这可以帮助您从一个版本的 Node.js 无缝转移到下一版本,就像我从一个客户项目转到下一个客户项目一样。
NVM 安装完毕后,请输入命令 nvm ls-remote 查看哪些 Node.js 版本可用于安装,如清单 1 中所示。
清单 1. 使用 NVM 列出可用的 Node.js                版本
1
2
3
4
5
6
7
8
9
10
11
12
$ nvm ls-remote

v0.10.20

v0.10.21
v0.10.22
v0.10.23
v0.10.24
v0.10.25
v0.10.26
v0.10.27
v0.10.28




输入 nvm ls 命令可以显示本地已经安装的 Node.js 版本,以及目前正在使用中的版本。
在撰写本文之际,Node 网站推荐 v0.10.28 是最新的稳定版本。输入 nvm install v0.10.28                命令在本地安装它。
安装 Node.js 后(通过 NVM 或平台特定的安装程序均可),可以输入 node --version                命令来确认当前使用的版本:
1
2
3
$ node --version

v0.10.28




什么是 Node.js?Node.js 是一种 headless JavaScript 运行时。它与运行在 Google Chrome 内的 JavaScript                引擎(名叫 V8)是一样的,但使用 Node.js 可以从命令行(而非浏览器)运行 JavaScript。
访问浏览器的开发人员工具熟悉自己所选浏览器中的开发人员工具。我将在整个系列中通篇使用 Google Chrome,但用户可以自行选择使用 Firefox、Safari                    或者甚至是 Internet Explorer。
  • 在 Google Chrome 中,单击 Tools > JavaScript                            Console
  • 在 Firefox 中,单击 Tools > Web Developer > Browser                            Console
  • 在 Safari 中,单击 Develop > Show Error                        Console。(如果看不到 Develop 菜单,可以在 Advanced preferences 页面上单击                            Show Develop menu in menu bar。)
  • 在 Internet Explorer 中,单击 Developer Tools > Script >                            Console

我曾有些学生嘲笑过从命令行运行 JavaScript 的主意:“如果没有要控制的 HTML,那 JavaScript 还有什么好处呢?"                JavaScript 是在浏览器(Netscape Navigator 2.0)中来到这个世界的,因此那些反对者的短视和天真是可以原谅的。
事实上,JavaScript 编程语言并未针对 文档对象模型 (DOM) 操作或形成 Ajax 请求提供本地功能。该浏览器提供了 DOM API,可以方便用户使用                JavaScript 来完成这类工作,但在浏览器之外的地方,JavaScript 不具备这些功能。
下面给出了一个例子。在浏览器中打开一个 JavaScript 控制台(参见  )。输入 navigator.appName。获得响应后,请输入                navigator.appVersion。得到的结果类似于图 1 中所示。
图 1. 在 Web 浏览器中使用 JavaScript navigator                    对象
在图 1 中,Netscape 是对 navigator.appName 的响应,而对                navigator.appVersion 的响应则是经验丰富的 Web                开发人员已经熟知但爱恨不一的、神秘的开发人员代理字符串。在图 1 中(截自 OS X 上的 Chrome 浏览器),该字符串是                5.0 (Macintosh; Intel Mac OS X 10_9_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36。
现在,我们要创建一个名为 test.js 的文件。在文件中输入同样的命令,并将每个命令包含在 console.log()                调用中:
1
2
console.log(navigator.appName);
console.log(navigator.appVersion);




保存文件并输入 node test.js 来运行它,如清单 2 中所示。
清单 2. 查看 Node.js 中的                    navigator is not defined 错误               
1
2
3
4
5
6
7
8
9
10
11
12
13
14
$ node test.js

/test.js:1
ion (exports, require, module, __filename, __dirname) { console.log(navigator.
                                                                    ^
ReferenceError: navigator is not defined
    at Object.<anonymous> (/test.js:1:75)
    at Module._compile (module.js:456:26)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Function.Module.runMain (module.js:497:10)
    at startup (node.js:119:16)
    at node.js:902:3




正如您看到的那样,navigator 在浏览器中可用,但在 Node.js 中不可用。(不好意思,让您的第一个                Node.js 脚本失败了,但我想确保让您相信,在浏览器中运行 JavaScript 与在 Node.js 中运行它是不同的。)
根据堆栈跟踪的情况,正确的 Module 没有得到加载。(Modules 是在浏览器中运行 JavaScript 与在                Node.js 中运行它之间的另一主要区别。我们将立刻讲述 Modules 的更多相关内容。)为了从 Node.js 获得类似的信息,请将                test.js 的内容修改为:
1
2
3
console.log(process.versions)
console.log(process.arch)
console.log(process.platform)




再次输入 node test.js,可以看到类似于清单 3 中的输出。
清单 3. 在 Node.js                中使用过程模块
1
2
3
4
5
6
7
8
9
10
11
12
13
$ node test.js
  
{ http_parser: '1.0',
  node: '0.10.28',
  v8: '3.14.5.9',
  ares: '1.9.0-DEV',
  uv: '0.10.27',
  zlib: '1.2.3',

  modules: '11',
  openssl: '1.0.1g' }
x64
darwin




在 Node.js 中成功运行第一个脚本之后,我们将接触下一个主要概念:模块。
返回列表