Node.js 笔记(1)

Node.js 介绍

服务器

1.1 为什么要学Node.js

学习 node.js 主要是做服务器

font-end / back-end

基本的网站开发能力

服务端

前端

运维部署

企业需求

全栈开发工程师

1.2 Node.js 是什么

Node.js® is a JavaScript runtime built onChrome's V8 JavaScript engine.

Node.js 不是一门语言,不是库,不是框架

Node.js 是一个 JavaScript 运行时环境

Node.js 可以解析和执行 JavaScript 代码

现在的 JavaScript 可以完全脱离浏览器运行

浏览器的 JavaScript

基本语法等

ECMAScript

DOM

BOM

Node.js 里的 JavaScript

文件读写

网络服务的构建

网络通信

HTTP 服务器

没有 DOM , BOM

ECMAScript

在 Node 中为 JavaScript 提供一些服务器级别的操作 API

构建于 chrome 的 V8 引擎之上

代码只是具有特定格式的字符串而已

引擎可以认识 js ,引擎可以帮你去解析和执行

Google chrome 的 V8 引擎是目前工人的解析执行 JavaScript 代码最快的

Node.js 的作者把 Google chrome 中的 V8 引擎移植了出来,开发了一个独立的 JavaScript 运行时环境

Node.js uses an event-driven, non-blocking I/O model that makes it lightweigth and efficient.

Node.js' package ecosystem,npm, is the largest ecosystem of open source libraries in the world.

1.3 Node.js 能做什么

Web 服务器后台

命令行工具

npm(node)

git(c 语言开发的)

hexo(node)

对于前端开发工程师来说,接触 node 最多的时它的命令行工具

webpack

npm

1.4 预备知识

HTML

CSS

JavaScript

简单的命令行操作

cd

dir

ls

mkdir

rm

具有服务端开发经验更佳

安装

2.1 版本

LTS 长期支持版

Current 最新版

2.2 hello world

在相应的目录下就可以执行 js 代码

不要以命名文件,也最好不要用中文

在 node 中没有 BOM、DOM

2.3 读写文件

引入 fs 模块

读取文件

function(error, data)

读取失败 error 就是错误对象,否则是 null

读取成功 data 就是数据,否则是null

fs.readFile(url, callback)

第一个参数是读取的文件路径

第二个参数是回调函数

默认是二进制文件读取后转成十六进制,可以用 toString 方法转换

写文件

fs.writeFile(url, data, callback)

第二个参数是文件内容

2.4 http

核心模块

引入模块

http.createServer() 方法创建一个 Web 服务器,返回一个 Server 实例

服务器要做的事

处理函数里第一个参数是 request,第二个参数是 response

response 对象有一个方法: write 可以用来给客户端发送显影数据

response.write 可以用多次,但要用 response.end() 结束

直接 response.end() 也可以直接返回数据,响应内容只能是字符串

JSON.stringify() 可以将 json 转成字符串

response里的 url 都是以开头的

绑定端口号,启动服务器

Node 中的 JavaScript

ECMAScript

没有 DOM、BOM

核心模块

第三方模块

用户自定义模块

3.1 核心模块

Node 为 JavaScript 提供了很多服务器级别的 API,这些 API 绝大多数都被包装到了一个具名的核心模块中了。

例如:

varfs=require('fs')

varhttp=require('http')

3.2 模块作用域

在 Node 中,没有全局作用域,只有模块作用域,外部不能直接访问到内部,内部也直接访问外部

用 require 加载模块

用户自定义模块中的相对路径中的不能省略

每个文件模块中都提供了一个对象 exports 导出模块,默认是个空对象

端口

计算机中只有一个物理网卡,而且同一个局域网中,网卡的地址必须是唯一的

IP 地址用来定位计算机

端口号用来定位具体的应用程序

所有需要联网通信的软件都必须占用一个端口号

端口号的范围从 0 - 65536 之间

计算机中有些默认端口号,最好不要去使用,用没有意义的端口就好

响应内容

在服务端默认发送的数据,其实是 utf-8 编码的内容

浏览器在不知道服务器相应内容的编码的情况下会按照当前操作系统的默认编码去解析

中文操作系统的默认编码是 gbk

解决方法

Content-Type 在 http 协议中发送的数据类型

text/plain 是普通文本,如果要发送的是 html 字符串,则要用 text/html

图片就不需要指定编码

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180925G1DPN700?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券