走进 node.js - 起步

132 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第21天,点击查看活动详情

起步

安装 Node 环境

打开 Node.js 官网:nodejs.org/en/

image.png

xxx LTS 是最新稳定版,xxx Current 是最新特性版,建议下载稳定版。

  • 下载好以后,双击打开安装包。一路next即可

注意:某些基于 Node.js 的第三包依赖 Python、C++ 等编译工具,这里建议勾选中间的选项,安装完 Node.js 之后它会自动安装那些编译工具,勾选好以后点击 Next 下一步。

  • Node.js 安装完成以后,它会自动该窗口用来安装那些编译工具,根据提示按任意键继续...
  • 打开命令行,输入 node --version 或者 node -v。如果能看到输出安装 Node 的版本号则证明安装成功了。

REPL

类似于浏览器中的 Console ,可以做一些基本的代码测试。

- R:Read 读取
- E:Eval 执行
- P:Print 输出
- L:Loop 循环
  • 进入
    • 输入 node 回车即可
  • 使用
  • 离开
    • 按住 Ctrl 不要丢,c 两次即可退出

执行一个 JS 文件

1. 新建一个 hello.js 并写入以下示例代码

const message = "Hello Node.js!";
console.log(message);

2. 打开命令行并定位到 hello.js 文件所属目录 3. 在命令行中输入 node hello.js 回车执行

注意:

  • 文件名不要起名为 node.js
  • 文件名或者文件路径最好不要有中文
  • 文件路径或者文件名不要出现空格

文件读写

  • 文件读取:
const fs = require("fs");

fs.readFile("/etc/passwd", (err, data) => {
  if (err) throw err;
  console.log(data);
});
  • 文件写入:
const fs = require("fs");

fs.writeFile("message.txt", "Hello Node.js", err => {
  if (err) throw err;
  console.log("The file has been saved!");
});

HTTP 服务

// 接下来,我们要干一件使用 Node 很有成就感的一件事儿
// 你可以使用 Node 非常轻松的构建一个 Web 服务器
// 在 Node 中专门提供了一个核心模块:http
// http 这个模块的职责就是帮你创建编写服务器的

// 1. 加载 http 核心模块
var http = require("http");

// 2. 使用 http.createServer() 方法创建一个 Web 服务器
//    返回一个 Server 实例
var server = http.createServer();

// 3. 服务器要干嘛?
//    提供服务:对 数据的服务
//    发请求
//    接收请求
//    处理请求
//    给个反馈(发送响应)
//    注册 request 请求事件
//    当客户端请求过来,就会自动触发服务器的 request 请求事件,然后执行第二个参数:回调处理函数
server.on("request", function() {
  res.end("Hello Node.js!");
});

// 4. 绑定端口号,启动服务器
server.listen(3000, function() {
  console.log("服务器启动成功,请求访问 http://127.0.0.1:3000/");
});

到此为止,我们的node就算安装完成了,下一节我们开始使用他,来做点东西,下载我们需要的安装包,开发我们的服务器端程序。

模块化

模块化就是遵守固定的规则,把一个大文件拆成独立并互相依赖的多个小模块。 把代码进行模块化拆分的好处:

  • 提高了代码的复用性
  • 提高了代码的可维护性
  • 可以实现按需加载

Node.js 中根据模块来源的不同,将模块分为了 3 大类,分别是:

内置模块(内置模块是由 Node.js 官方提供的,例如 fs、path、http 等)  

自定义模块(用户创建的每个 .js 文件,都是自定义模块)  

第三方模块(由第三方开发出来的模块,并非官方提供的内置模块,也不是用户创建的自定义模块,使用前需要先下载)

下一节我们具体介绍模块化相关