- 知识要点
- Node.js安装及使用
- 通过Node.js搭建服务器
- 模块化及自定义模块
- 内置模块fs的使用
- buffer及stream
Node.js介绍
Node.js 诞生于2009年,Node.js采用C++语言编写而成,是一个Javascript的运行环境
。Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境 ,让JavaScript的运行脱离浏览器端,可以使用JavaScript语言 书写服务器端代码。
1. 安装Node.js
Node.js官网下载稳定版本,node偶数版本为稳定版本,奇数版本为非稳定版本。
mac
直接安装 或者brew
来安装- 安装完Node.js会自动安装
NPM
(Node Package Manager):包管理工具; - 通过指令
node -v
来查看是否安装完成和查看node版本号;npm -v
来查看npm版本。
1.1 使用Node.js实现一个服务器
//引入http模块
let http = require("http");
//创建一个服务器
let serve = http.createServer((req,res)=>{
console.log("hello");
res.end("hello world");
})
//设置端口号
serve.listen(3000);
1.2 访问服务器
- 本机访问
//第一种方式
localhost:端口号
//第二种方式
127.0.0.1:端口号
- 外部访问
//首先通过命令行获取本机的ip地址
ipconfig
//通过ip地址访问
IP地址:端口号
1.3 更改服务器内容
//服务器更改内容后需要重启服务器才能刷新
//第一步:快捷键ctrl+c,重启服务器
//第二部:重新输入命令运行node.js,比如node http.js
1.4 安装nodemon
//全局安装nodemon
npm i nodemon -g
//解决系统禁止运行脚本
1.管理员身份打开powerShell
2.输入set-ExecutionPolicy RemoteSigned
选择a或者y
3.如果还是不行,根据提示
输入Set-ExecutionPolicy -Scope CurrentUser运行即可,之后输入RemoteSigned回车运行即可,再次执行nodemon,发现成功了
-
Google Chrome 默认非安全端口列表,尽量避免以下端口。
1, // tcpmux
7, // echo
9, // discard
11, // systat
13, // daytime
15, // netstat
17, // qotd
19, // chargen
20, // ftp data
21, // ftp access
22, // ssh
23, // telnet
25, // smtp
37, // time
42, // name
43, // nicname
53, // domain
77, // priv-rjs
79, // finger
87, // ttylink
95, // supdup
101, // hostriame
102, // iso-tsap
103, // gppitnp
104, // acr-nema
109, // pop2
110, // pop3
111, // sunrpc
113, // auth
115, // sftp
117, // uucp-path
119, // nntp
123, // NTP
135, // loc-srv /epmap
139, // netbios
143, // imap2
179, // BGP
389, // ldap
465, // smtp+ssl
512, // print / exec
513, // login
514, // shell
515, // printer
526, // tempo
530, // courier
531, // chat
532, // netnews
540, // uucp
556, // remotefs
563, // nntp+ssl
587, // stmp?
601, // ??
636, // ldap+ssl
993, // ldap+ssl
995, // pop3+ssl
2049, // nfs
3659, // apple-sasl / PasswordServer
4045, // lockd
6000, // X11
6665, // Alternate IRC [Apple addition]
6666, // Alternate IRC [Apple addition]
6667, // Standard IRC [Apple addition]
6668, // Alternate IRC [Apple addition]6669, // Alternate IRC [Apple addition]
2. 模块化
一、为什么会有模块化
-
在JavaScript发展初期就是为了实现简单的页面交互逻辑,寥寥数语即,如今随着前端代码日益膨胀
这时候JavaScript作为嵌入式的脚本语言的定位动摇了,JavaScript却没有为组织代码提供任何明显帮助,JavaScript极其简单的代码组织规范不足以驾驭如此庞大规模的代码;
二、Node.js中的模块化 commonjs规范
- CommonJS就是为JS的表现来制定规范,因为js没有模块的功能所以CommonJS应运而生,它希望js可以在任何地方运行,不只是浏览器中。
2.1 自定义模块
2.1.1 引入模块
-
引入——文件形式模块
home.js
执行文件//通过require来引入 require("./aModule"); //注意一定要有"./",文件后缀可加可不加。
amodule.js
文件console.log("我是被引的amodule.js模块");
-
引入——文件夹形式模块
home.js
执行文件
require("./aModuleDir"); //必须加"./"
会自动查找aModuleDir文件夹下的index.js文件执行
console.log("我是aModule模块文件夹里的index.js");
- 当然也可以配置默认启动文件,在文件夹内新建
package.json
来指定执行文件
{ "name":"aModule", "version":"1.0.0", "main":"test.js" //test.js取代index.js成为默认启动文件 }
2.1.2 导出模块
- 自定义模块的
按需导出
第一种导出方式:通过 module.exports 导出; ___dirname , __filename
module.exports = {
a:"我是a的值",
b(){
console.log("我是导出的b函数");
}
}
引入导出文件
let mymodule = require("bModule");
console.log(