🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# 工作的程序员如何成为平均: Node.js 通过 [Ted Neward](https://msdn.microsoft.com/zh-cn/magazine/mt149362?author=Ted+Neward) | 2015 年 9 月 ![](https://box.kancloud.cn/2016-01-08_568f2a84072a2.jpg) Microsoft 已作为其添加品牌名称和"re relevancing"的一部分各软件采用的技术 它已采用的技术之一是 Node.js。这为开发人员提供了绝佳的机会在称为平均值 Node.js 平台上使用更受欢迎的完整堆栈软件分组之一: MongoDB、 Express、 AngularJS 和 Node.js。 在上一期 ([msdn.microsoft.com/magazine/mt185576](https://msdn.microsoft.com/magazine/mt185576)),我获得了基本的 Node.js 部分启动并运行。在这篇文章,我启动一个简单的节点"Hello World"Web 终结点,并将其部署到 Microsoft Azure 网站。通过下一步的几个部分,我将缓慢生成自己的平均堆栈的方式工作的基础知识。 如在上一篇文章中所述,有很多地方其中我可以交换出的平均堆栈部分处理其他事情 — MongoDB、 用于 Node.js 的 ASP.NET WebAPI 和 Express 或 BackboneJS 为 ASP.NET MVC (或任何其他 JavaScript 单个页-应用程序框架的整个主机) 的 AngularJS DocumentDB — 但无替代项喜欢平均值当前持有的普及 (至少在 JavaScript 迷们之间)。 ## Node.js Node.js 是从根本上只"使用 JavaScript 在服务器上的。" 是的尝试处理并发执行的 Node.js 到不同的编程方法。而不是调用的块,程序员将传递在函数中文字在操作完成时要调用。这样开发人员考虑将代码作为单线程,即使多个线程都在面下方的使用也是如此。总的来说,然而,Node.js 的最大区别是您使用 JavaScript 构建的服务器组件,而不是 C#、 Java 或 Ruby。在这种意义上,它是实际上只是更改风景 — 不是完全不同的世界。 最简单的 Node.js 应用程序,当然是无处不在"Hello,World,"它可以轻松编写使用内置的控制台对象: ~~~ console.log("Howdy, NodeJS!"); ~~~ 假设这进入名 hello.js 为当前目录中的文件,您将使用运行该节点实用工具在命令行使用节点 hello.js。或者可以让 Node.js 推断的文件扩展名的只是正在运行"节点 hello"。 无论哪种方式,节点当天向您问候的传统方法中。 与大多数编程平台,Node.js 在初始状态下有其自己的库和 Api 集。正如我指出了最后一次,使用 Node.js 需要用于引用已安装的库的约定。将捕获到具有相同名称的局部变量的返回的对象。因此,例如,如果我想要编写一个将有效地为我提供相同的问候语通过 HTTP 协议的简单 HTTP 服务器,我可以将以下内容放到简单 helloHTTP.js 文件: ~~~ var http = require('http'); var port = process.env.PORT || 3000; http.createServer(function(req, res) {   res.writeHead(200, { 'Content-Type': 'text/plain' });   res.end('Hello World\n'); }).listen(port); ~~~ 需要行查找 Node.js 安装过程中,在"http"库并将其存储到依赖关系注入中的 http 对象。这是标准的 Node.js 约定,并且应保留为相当 sacrosanct。第二行使用内置的进程对象来访问周围的环境。在这种情况下,它使用的进程对象中的"env"对象以确定是否将一个名为端口的环境变量设置为任何内容。如果是,我将使用,作为在其上运行服务器的端口。否则,我将使用默认端口 3000。许多 Node.js 框架更喜欢作为默认情况下,端口 3000 晦涩历史和文化的原因。 Node.js 编程的性质变得更清晰的下一步的几行中。我使用的 http 对象以创建 HTTP 服务器。唯一的参数是原义一个函数,将请求 (HTTP 请求) 对象和 res (HTTP 响应) 对象作为参数,并使用 res 将写回的 HTTP 响应。此习惯用法是无处不在整个 Node.js 堆栈的所有级别。 这是那些"您喜欢它或您不喜欢"的一类问题之一。您将看到的此文章来形成中的详细信息。因此如果这不是清除,花些时间来尝试。从 createServer 返回的对象然后绑定到使用侦听调用所需的端口。您瞧,您有一个正在运行的 HTTP 服务器您就可以轻松地运行使用"节点 helloHTTP"和浏览器指向 http://localhost:3000/。 ## Azure 命令行工具 从我的上一篇文章,您会记得 Node.js 有一个名为 Node 包管理器 (npm) 的可用于下载的依赖库的包实用工具。您可以使用它来下载然后可以使用的工具从命令行。这是 Node.js 细微,但功能强大,方面。它将充当平台无关"生存区均衡器。" 您可以有效地隐藏背后的 JavaScript 脚本墙 Windows、 Mac OS 或 Linux 任何区别。Microsoft 选取在这不久,并打包到调用 azure cli 的 Node.js 包的一组的命令行工具。将它安装是借助 npm 轻松: ~~~ npm install –g azure-cli ~~~ -G 标志告诉 npm 以"全局"安装的工具 (这意味着这些产品不依赖于在其中运行该命令的本地目录)。这样生成的包可用于整个系统内。完成后,一个新命令行实用工具,azure 之前,将可供使用。Azure cli 程序包未提供任何更高或更低的功能比使用 Azure 门户。Azure cli 工具的优点在于它可以作为一部分的自动化的脚本 azure 命令部署系统中,例如所示。 ## 将部署到 Azure 因此,如果您希望此可爱小问候供 Internet 上的世界,您需要创建 Azure 网站作为主机。使用"azure"工具,该命令相当简单。首先,您需要将该工具绑定到在 Azure 中的帐户: ~~~ azure account download ~~~ 此操作将启动系统的默认浏览器指向 Azure 登录门户。使用 Azure 帐户凭据登录。完成后,它将自动下载的 publishSettings 文件包含的凭据信息的 azure 工具需要,可以直接导入: ~~~ azure account import <filename> ~~~ 文件名通常会类似于"Visual Studio Ultimate with MSDN-4-23-2015年-credentials.publishsettings,"具体取决于 Azure 订阅详细信息和下载的 publishSettings 文件的日期。完成后,很简单,只需通过设置 Git 进行部署到站点创建新的 Azure 网站: ~~~ azure site create –git ~~~ 这将提示输入站点名称和 (假定该名称唯一的) 启动相应的 Web 站点。如果所有的工作原理,运转当前目录作为 git 初始化本地存储库。假设您仍处于保存从之前的 helloHTTP.js 文件的同一个目录,可以将其添加到 Git 存储库并将其推送到 Azure 云: ~~~ git add helloHTTP.js git commit –m "Initial commit" git push azure master ~~~ Git 将考虑一下几秒钟。然后它将经历一系列的暂时保持不透明的步骤。在完成,不过,Azure 将保存新的 Node.js 代码,并且您可以浏览到它,如中所示 图 1。 ![](https://box.kancloud.cn/2016-01-08_568f81ed6890d.png) 图 1 Hello,World 节点 这就是原因 helloHTTP 代码将使用默认端口 3000 或从周围的进程的环境变量端口。在 Azure 云,即会将端口设置为 Azure 基础结构将保留一个值。这是以便 Microsoft 可以更有效地管理各种服务终结点。 这确实是您需要执行的安装步骤的上一次。坦率地讲,花费的时间以实际运行命令,一旦您已完成初始安装阶段不会超过阅读有关它的信息。并且甚至更坦率地讲,任何 Azure 工作或浏览需要相似类型的安装程序。Azure 真实表示很多开发工作的下一步平台。换而言之,这是您需要知道如何执行最终,因此您可能也了解它现在。 在这里,几乎一切都将与平均值相关。您将需要将注意到的 Azure 详细信息的唯一时间是当您需要配置环境以指向 MongoDB 数据库服务器上,例如,或者在处理与 Node.js Azure 交互的方式时。 ## 总结 值得指出 Node.js 不只是 HTTP 管道。事实上,节点都可以通过打开正确的库运行任何类型的网络应用程序。这同样适用的 Microsoft.NET Framework。但是,如.NET Framework 中,大多数的 Node.js 应用程序会采用基于 HTTP 的本质。 在 Node.js 中的 http 库是相当低级别。结果是,Node.js 社区开发了一个更高级别的的库和组的抽象来简化基于 HTTP 的终结点处理。此库称为速成版。它允许您构建哪些的 Node.js 社区调用"中间件。" 这就是什么我需要查看下一次。 现在,试验 Node.js http 库中,但不获取太连接,因为我将会留下它非常快速一旦我进入下一次迭代。在此期间,但是... 祝您编码愉快。 * * * Ted Neward *是 itrellis 一家咨询服务公司首席技术官。他已编写的 100 多篇文章和编写或与他人合著过十几本书,包括"Professional F # 2.0 》 (Wrox,2010 年)。他是 F # MVP,经常在世界各地的会议上。他定期担任顾问和导师,如果您感兴趣,请通过 [ted@tedneward.com](mailto:ted@tedneward.com) 或 [ted@itrellis.com](mailto:ted@itrellis.com) 与他联系。*