1、准备工作
(1)浏览器中的JS:JS核心语法(ECMAScript)+WebAPI
(2)为什么JS可以在浏览器中执行?
浏览器中有JS解析引擎:每个浏览器的解析引擎都不一样,Chrome浏览器中的V8解析引擎最好。
(3)为什么JS可以操作DOM和BOM?
每个浏览器内置了BOM和DOM函数,浏览器中的JS才可以调用。
(4)浏览器中的JS运行环境
运行环境:代码正常运行所需的必要条件。浏览器也是一个运行环境,执行JS:V8引擎+内置API
内置API:由运行环境提供的特殊的接口,只能在所属的运行环境中被调用;包括DOM+BOM+Canvas+XMLHttpRequest+JS内置对象+……
(5)JS可以做后端开发,需要借助Node.js
2、初识Node.js
(1)Node.js中的JavaScript运行环境
- 浏览器是JavaScript的前端运行环境
- Node.js是JavaScript的后端运行环境
- Node.js中无法调用DOM和BOM等浏览器内置API,因为Node.js是一个单独的运行环境
(2)学习路径:JS基础语法+Node.js内置模块(fs,path,http)+第三方API模块(express, mysql)
3、在Node.js环境中执行JS代码
4、终端中的快捷键
5、fs文件系统模块(操作文件)
(1)读取文件内容 fs.readFile(path[,options], callback)
// 导入fs模块
const fs = require('fs')
fs.readFile('./files/1.txt', 'utf8', (err, str) => {
console.log(err);
console.log(str);
})
/**
* 如果文件读取成功,err=null,str=文件内容
* 如果文件读取失败,err=错误对象,str=undefined
*/
(2)写入文件内容 fs.writeFile(file, data[,options], callback)
const fs = require('fs')
fs.writeFile('./files/2.txt', '0987654321', function(err) {
console.log(err);
})
/**
* 1、默认写入格式为utf8
* 2、如果文件不存在,会创建新的文件并写入
* 3、如果之前文件已存在,会使用新内容覆盖旧的内容
* 4、写入成功:err=null
* 写入失败:err=错误对象
*/
(3)fs路径动态拼接
const fs = require('fs')
// 使用__dirname拼接的路径是绝对路径,文件在哪里运行都可以正确读取到文件
fs.readFile(__dirname + '/files/1.txt', 'utf8', function(err, res) {
if (err) {
return console.log(err.message)
}
console.log(res);
})
6、path路径模块
(1)path.join([...paths])
(2)path.basename(path[,ext])
(3)path.extname(path)
7、http模块:创建web服务器
(1)服务器相关概念
-
IP地址:互联网上每台计算机的唯一地址,每台电脑都有自己的IP地址
-
域名和域名服务器
-
端口号:每个Web服务都对应一个唯一的端口号,客户端发送的网络请求,通过端口号,可以准确交给对应的Web服务进行处理
(2)创建Web服务器
// 1、导入http模块
const http = require('http')
// 2、创建Web服务器:http.createServer()
const server = http.createServer()
// 3、为服务器实例绑定request事件,监听客户端发送的请求:实例.on()
server.on('request', (req, res) => {
console.log('Someone visit our web server');
})
// 4、启动服务器:实例.listen()
server.listen(80, function() {
console.log('Server running at http://127.0.0.1');
})
(3)req请求对象:可以访问到与客户端相关的数据和属性
(4)res响应对象:可以访问与服务器相关的数据或属性,使用res.end()进行响应
const http = require('http')
const server = http.createServer()
server.on('request', (req, res) => {
const str = `Your request url is ${req.url}, and request method is ${req.method}`
res.end(str)
})
server.listen(80, () => {
console.log('server running at http://127.0.0.1');
})
(5)解决中文乱码问题
(6)根据请求的URL地址,请求不同的内容
const http = require('http')
const server = http.createServer()
server.on('request', (req, res) => {
// 1、获取请求的URL地址
const url = req.url
// 2、设置默认的响应内容
let content = '<h1>404 Not Found</h1>'
// 3、判断用户请求的是哪一个地址
if (url == '/' || url == '/index.html') {
content = '<h1>首页</h1>'
} else if (url == '/about.html') {
content = '<h1>关于</h1>'
}
// 4、设置响应头,防止中文乱码
res.setHeader('Content-Type', 'text/html;charset=utf-8')
// 5、使用res.end()把内容响应给客户端
res.end(content)
})
server.listen(80, () => {
console.log('server running at http://127.0.0.1');
})