nodejs入门

20 阅读4分钟

Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行时环境,它允许您使用 JavaScript 编写服务器端代码,构建高性能、可扩展的网络应用。 ‌ 1

核心特点 ‌事件驱动与非阻塞 I/O‌: Node.js 采用单线程事件循环模型,通过异步非阻塞的方式处理 I/O 操作(如文件读写、网络请求),使其能高效处理大量并发连接,特别适合 I/O 密集型应用。 ‌ 1 ‌跨平台‌: 可在 Windows、Linux、macOS 等多种操作系统上运行。 ‌ 1 ‌丰富的生态系统 (npm)‌: 拥有全球最大的软件注册表之一 npm (Node Package Manager),提供了海量的开源模块和库,可极大加速开发进程。 ‌ 1 主要应用场景 ‌Web 服务器‌: 构建快速、可扩展的网站和 Web 应用。 ‌实时应用‌: 如在线聊天、实时协作工具、直播互动等。 ‌API 服务‌: 开发 RESTful API 或 GraphQL 服务,为前端应用或移动 App 提供数据接口。 ‌命令行工具‌: 利用其易用性开发各种自动化脚本和工具。 ‌ 1 快速入门:创建第一个 Node.js 应用 ‌安装 Node.js‌: 首先,从 Node.js 官方网站 下载并安装最新版本的 LTS(长期支持版)。 ‌验证安装‌: 打开终端(命令提示符),输入 node -v,应能显示已安装的 Node.js 版本号。 ‌编写代码‌: 创建一个名为 hello.js 的文件,输入以下代码: javascript Copy Code const express = require('express'); const app = express(); const port = process.env.PORT || 3000;

app.get('/', (req, res) => { res.send('Hello World!'); });

app.listen(port, () => { console.log(服务器运行在 http://localhost:${port}); }); 此示例使用了 Express.js 框架,它能简化 Web 应用的开发。

‌初始化项目‌: 在终端中,进入 hello.js 所在目录,运行 npm init -y 生成 package.json 文件。 ‌安装依赖‌: 运行 npm install express 安装 Express.js 框架。 ‌运行应用‌: 在终端中执行 node hello.js。如果看到 "服务器运行在 http://localhost:3000" 的提示,说明启动成功。 ‌访问应用‌: 打开浏览器,访问 http://localhost:3000,您将看到 "Hello World!" 的消息。 ‌

创建 Azure 云服务项目

执行以下任务可创建一个新的 Azure 云服务项目以及基本的 Node.js 基架:

  1. 以管理员身份运行 Windows PowerShell;在“开始”菜单或“开始”屏幕中,搜索 Windows PowerShell

  2. 将 PowerShell 连接到您的订阅。

  3. 输入以下 PowerShell cmdlet 来创建项目:

    PowerShell

    New-AzureServiceProject helloworld
    

    New-AzureService helloworld 命令的结果

    New-AzureServiceProject cmdlet 将生成一个基本结构用于将 Node.js 应用程序发布到云服务。 该结构包含向 Azure 发布应用程序所需的配置文件。 该命令行工具还会将您的工作目录更改为服务的目录。

    该 cmdlet 将创建以下文件:

    • ServiceConfiguration.Cloud.cscfgServiceConfiguration.Local.cscfg 和 ServiceDefinition.csdef:发布应用程序所需的特定于 Azure 的文件。 有关详细信息,请参阅 创建 Azure 托管服务概述
    • deploymentSettings.json:存储供 Azure PowerShell 部署 cmdlet 使用的本地设置。
  4. 输入以下命令添加新的 Web 角色:

    PowerShell

    Add-AzureNodeWebRole
    

    Add-AzureNodeWebRole 命令的输出

    Add-azurenodewebrole cmdlet 将创建一个基本 Node.js 应用程序。 它还会修改  .csfg 和  .csdef 文件,以添加新角色的配置条目。

     注意

    如果不指定角色名称,将使用默认名称。 可以提供一个名称作为第一个 cmdlet 参数: Add-AzureNodeWebRole MyRole

Node.js 应用在 server.js 文件中定义,该文件位于 Web 角色(默认为 WebRole1)的目录中。 代码如下:

JavaScript

var http = require('http');
var port = process.env.port || 1337;
http.createServer(function (req, res) {
    res.writeHead(200, { 'Content-Type': 'text/plain' });
    res.end('Hello World\n');
}).listen(port);

此代码基本上与 nodejs.org 网站上的“Hello World”示例相同,但它使用云环境分配的端口号。

将应用程序部署到 Azure

 注意

若要完成本教程,需要一个 Azure 帐户。 可以激活 MSDN 订户权益注册免费帐户

下载 Azure 发布设置

要将应用程序部署到 Azure,必须先为 Azure 订阅下载发布设置。

  1. 运行以下 Azure Powershell cmdlet:

    PowerShell

    Get-AzurePublishSettingsFile
    

    此命令使用浏览器导航到发布设置下载页。 系统可能会提示你使用 Microsoft 帐户登录。 如果是这样,请使用与 Azure 订阅关联的帐户。

    将已下载的配置文件保存到易于访问的文件位置。

  2. 运行以下 cmdlet 以导入下载的发布配置文件:

    PowerShell

    Import-AzurePublishSettingsFile [path to file]
    

     注意

    导入发布设置之后,请考虑删除下载的 .publishSettings 文件,因为它包含了可供他人访问你帐户的信息。

发布应用程序

若要发布,请运行以下命令:

PowerShell

$ServiceName = "NodeHelloWorld" + $(Get-Date -Format ('ddhhmm'))
Publish-AzureServiceProject -ServiceName $ServiceName  -Location "East US" -Launch
  • -ServiceName 指定部署的名称。 此值必须是唯一名称,否则发布过程会失败。 Get-Date 命令会附加一个日期/时间字符串,以确保名称的唯一性。
  • -Location 指定托管应用程序的数据中心****。 若要查看可用数据中心的列表,请使用 Get-AzureLocation cmdlet。
  • -Launch 用于在部署完成后打开浏览器窗口并导航到托管服务****。

发布成功之后,你会看到以下屏幕截图所示的响应:

Publish-AzureService 命令的输出

 注意

部署应用程序并在首次发布该程序后使其可供使用可能需要花费几分钟时间。

部署完成后,浏览器窗口将打开并导航到云服务。

显示“hello world”页面的浏览器窗口;URL 指示该页面托管在 Azure 上。

应用程序现在正在 Azure 上运行。

Publish-AzureServiceProject cmdlet 执行以下步骤:

  1. 创建要部署的包。 该包将包含应用程序文件夹中的所有文件。
  2. 如果没有现有的存储帐户,则创建一个新的存储帐户****。 Azure 存储帐户用于存储部署期间的应用程序包。 在部署完成后,可以安全删除该存储帐户。
  3. 如果尚不存在云服务,则创建一个新的云服务****。 云服务是一个容器,将应用程序部署到 Azure 时,应用程序将托管在该容器中****。 有关详细信息,请参阅 创建 Azure 托管服务概述
  4. 将部署包发布到 Azure。

停止并删除应用程序

部署应用程序后,你可能希望禁用它,以避免产生额外费用。 Azure 将按使用的服务器小时数对 Web 角色实例计费。 应用程序部署之后就会开始使用服务器时间,即使相关实例并未运行且处于停止状态也是如此。

  1. 在 Windows PowerShell 窗口中,使用以下 cmdlet 以停止上一节中创建的服务部署:

    PowerShell

    Stop-AzureService
    

    停止服务可能需要花费几分钟时间。 在服务停止时,你会收到一条指示服务已停止的消息。

    Stop-AzureService 命令的状态

  2. 若要删除服务,请调用以下 cmdlet:

    PowerShell

    Remove-AzureService
    

    在出现提示时,输入 Y 以删除服务。

    删除服务可能需要花费几分钟时间。 删除服务后,你会收到一条指示服务已被删除的消息。

    Remove-AzureService 命令的状态

     注意

    删除服务不会删除最初发布服务时所创建的存储帐户,并且你仍需为使用的存储付费。 如果没有其他项目在使用存储,则可能需要将其删除。