前端进阶之旅前端进阶之旅
基础篇
进阶篇
高频篇
精选篇
手写篇
原理篇
面经篇
自检篇
每日一题
  • 综合
    • 综合题型
    • 其他问题
    • 设计模式
    • 思维导图
    • 学习路线
  • 前端基础
    • HTTP
    • 浏览器
    • 计算机基础
  • 进阶学习
    • NPM工作流
    • Docker
    • Canvas
    • Node学习指南
    • 前端综合文章
  • 其他
    • Handbook
    • 职场话题
    • CSS可视化
小程序题库
公众号动态
博客动态
开发者导航
基础篇
进阶篇
高频篇
精选篇
手写篇
原理篇
面经篇
自检篇
每日一题
  • 综合
    • 综合题型
    • 其他问题
    • 设计模式
    • 思维导图
    • 学习路线
  • 前端基础
    • HTTP
    • 浏览器
    • 计算机基础
  • 进阶学习
    • NPM工作流
    • Docker
    • Canvas
    • Node学习指南
    • 前端综合文章
  • 其他
    • Handbook
    • 职场话题
    • CSS可视化
小程序题库
公众号动态
博客动态
开发者导航
完整面试题地址:
作者:程序员poetry
扫码关注作者公众号:「前端进阶之旅」 每天分享技术干货
前端进阶之旅公众号二维码

凡是可以用 JavaScript 来写的应用,终将都会用 JavaScript 来写。—— Atwood 定律

Node.js 简称"服务端 JavaScript ",是基于谷歌 v8 引擎的 js 运行环境,可以让 JavaScript 在服务器端执行。相比于后端人员,JavaScript 对于前端来说再熟悉不过了,入门还是相对简单的。这章包含的内容如下:

  • 安装 Node.js 及相关配置
  • 常用的应用模块
  • 简易 HTTP 服务器和自定义模块
  • 事件驱动
  • 常见的状态码

# 安装 Node.js 及相关配置

可从 Node.js 官网,下载对应平台的 Node 版本进行安装,一路完成即可。

完成后在命令行界面输入以下两个命令,检验是否安装成功:

# node -v //查看node版本
# npm -v  //查看npm版本
@前端进阶之旅: 代码已经复制到剪贴板

使用 npm 命令安装模块

npm install <Module Name>
@前端进阶之旅: 代码已经复制到剪贴板

你也可以使用 yarn 命令安装模块

yarn add <Module Name>
@前端进阶之旅: 代码已经复制到剪贴板

关于如何安装 Node.js,这里就不赘述了,如果打印报错,请自行百度谷歌。

# 常用的应用模块

Node.js 提供了各种丰富的 JavaScript 模块库(自带的+第三方),极大简化了使用 Node.js 来扩展Web应用程序的开发。

Node Package Manager,简称 npm,是一个基于 Node.js 的包管理器,也是整个 Node.js 社区最流行、支持的第三方模块最多的包管理器。通过 npm,方便直接下载引用第三方发布模块,提高开发效率。

常用内置模块有:

  • http
  • path
  • url
  • events
  • fs
  • crypto加密
  • os
  • process

# 简易HTTP服务器和自定义模块

Node.js 基于 CommonJS 规范,主要分为模块定义、模块引用和模块标识,但 Node.js 在实现中并非完全按照 CommonJS 规范实现,而是对模块规范进行了一定的取舍。简单记住就是:引入模块用 require,输出模块用 module.exports。

网上有很多教程都会教你把所有的逻辑都放进一个用 Node.js 写的基础 HTTP 服务器里。但是如果我想加入更多的内容,同时还想保持代码的可读性呢?

实际上,只要把不同功能的代码放入不同的模块中,保持代码分离还是相当简单的。

让我们先从服务器模块开始。在项目的根目录下创建一个叫 app.js 的文件,并写入以下代码(记得动手敲起来哦):

const http = require('http');
const url = require('url'); //引用内置模块url
http.createServer(function(req, res) {
	res.writeHead(200, {
   'Content-Type': 'text/plain'
	}); //设置头信息
	let pathname = url.parse(req.url).pathname; //把请求网址交给url 对象处理
	let bodyStr = ""; //定义一个变量,用来存储要输出的内容
	if (pathname === "/") { //如果是首页
		bodyStr = 'Hello Uniapp\n';
	} else {
		bodyStr = 'Happy Uniapp\n'; //如果是其他路径
	}
	res.end(bodyStr); //输出内容
}).listen(3000); //绑定端口
console.log('Server running at http://localhost:3000/'); //控制台输出提示
fe
基础篇
进阶篇
高频篇
精选篇
手写篇
原理篇
面经篇
自检篇
每日一题
  • 综合
    • 综合题型
    • 其他问题
    • 设计模式
    • 思维导图
    • 学习路线
  • 前端基础
    • HTTP
    • 浏览器
    • 计算机基础
  • 进阶学习
    • NPM工作流
    • Docker
    • Canvas
    • Node学习指南
    • 前端综合文章
  • 其他
    • Handbook
    • 职场话题
    • CSS可视化
小程序题库
公众号动态
博客动态
开发者导航