chrome => v8
Firefox => OdinMonkey(奥丁猴)
safri => JSCore
IE浏览器=>Chakra(查克拉)
浏览器是JavaScript的前端运行环境,node.js是JavaScript的后端运行环境
node.js中无法调用DOM和BOM等浏览器内置API。
查看node版本号 node -v

运行js文件 node 文件名
![]()
fs是Node.js官方提供的、用来操作文件的模块
- fs.readFile(); // 读取指定文件内容
- fs.writeFile();//向指定文件中写入内容
JavaScript引入fs模块
const fs = require('fs')
(1)读取指定文件内容
- // fs.readFiles(path[,option],callback)
- // 参数1:必选参数,字符串,表示文件的路径。
- // 参数2:可选参数,表示以什么编码格式来读取文件。
- // 参数3:必选参数,文件读取完成后,通过回调函数拿到读取的结果,
- const fs = require('fs');
- fs.readFile('read.txt','utf8',function(err,dataStr){
- console.log(err);
- console.log(dataStr);
- })
-
- fs.readFile('read.txt','utf8',function(err,dataStr){
- if(err){
- return console.log(err);
- }
- console.log(dataStr);
- })

(2)向指定文件写入内容
- / fs.readFile(file,data[,option],callback)
- // 参数1:必选参数,文件的路径字符串,表示文件存放路径。
- // 参数2:必选参数,表示写入内容。
- // 参数2:可选参数,表示以什么编码格式来读取文件,默认utf8。
- // 参数3:必选参数,文件写入完成后,通过回调函数拿到读取的结果,、
-
- const fs = require('fs');
-
- fs.writeFile('read.txt','hello!',function(err){
- if(err){
- return console.log("文件写入失败:"+err);
- }else{
- console.log("文件写入成功");
- }
- })
![]()
如果成功 err==null 否则err返回一个错误对象
记事本中换行:\r\n
路径参数时, \ 要写成 \\
process、__filename、__dirname
// 当前文件位置,绝对路径
console.log('__filename', __filename);
// 当前文件目录路径
console.log('__dirname', __dirname);
// 命令行的根路径 process进程对象,唯一对象
console.log('process.cwd()', process.cwd());
// 输出环境变量
console.log(process.env);
path 模块是 Node.is 官方提供的、用来处理路径的模块。它提供了一系列的方法和属性,用来满足用户对路径的处理需求。
(1)path.join() 方法,用来将多个路径片段拼接成一个完整的路径字符串
(2)path.basename() 方法,用来从路径字符串中,将文件名解析出来
(3)path.extname() 方法,获得路径扩展名
- const path = require('path');
- let resPath = path.join('a', 'b', 'c', '../', 'def/g'); // 不校验路径的合法性
- // 相对路径获取其对应的绝对路径
- let resolvePath = path.resolve('./a/b', 'c/d', 'e', 'xxx.txt');
- // 进一步操作路径,以对象的方式解析路径
- let pathObj = path.parse(resolvePath);
-
- const fullName = path.basename('/a/b/index.html'); // index.html
- const nameWithoutExt = path.basename('/a/b/index.html','.html');
路径中 ../会抵消前面的路径
路径拼接使用 path.join(__dirname,'123.txt');,不要使用 “ + ” 。
(1)IP地址
客户端:负责消费资源的电脑
服务器:负责对外提供网络资源的电脑
http模块是node提供的,普通电脑可以通过http.createServer()方法变成服务器。
IP地址:在互联网上每台电脑唯一地址,格式--点分十进制,
ping IP地址
自身IP地址,测试 127.0.0.1
(2)域名和域名服务器
字符型地址方案-域名地址
域名服务器是提供IP地址和域名之间转换服务的服务器
127.0.0.1 ==> localhost
(3)端口号

(4)创建最基本web服务器
创建 web 服务器的基本步骤
① 导入 http 模块
const http = require('http')
② 创建 web 服务器实例
调用http.createServer()方法,即可快速创建一个web服务器实例
const server = http.createServer()
③ 为服务器实例绑定 request 事件,监听客户端的请求
- // 使用服务器实例 .on() 方法,为服务器绑定一个request事件
- server.on('request',(req, res)=>{
- // 只要有客户端来请求我们自己的服务器,就会触发request事件,从而调用这个事件处理函数
- console.log('Someone visit our web server')
- })
④ 启动服务器
调用服务器实例的 .listen()方法,即可启动当前的web服务器实例:
- server.listen(80, ()=>{
- console.log('http server running at http://127.0.0.1')
- })
(5) req请求对象
只要服务器接收到客户端得请求,就会调用通过server.on()为服务器绑定request事件处理函数
如果想在事件处理函数中访问客户端相关的数据或属性,可以用req请求对象
- server.on('request', function (req, res) {
- const url = req.url;
- const method = req.method;
- })
(6) res响应对象
访问与服务器相关得数据或属性,采用res.end
- server.on('request', function (req, res) {
- const url = req.url;
- const method = req.method;
- const str =`request is ${url},method is ${method}`
- // 调用res.end()方法,向客户端响应内容
- res.end(str);
- })

中文乱码问题
res.setHeader('Content-Type','text/html; charset=utf-8');
(7) 不同url响应不同页面
① 获取请求得url地址
② 设置默认响应内容
③ 判断用户请求得是否为/ 或/index.html首页
④ 判断用户请求得是否为 /其他页面
⑤ 设置响应头,防止乱码
⑥ 使用res.end()把内容响应给客户端
- const http = require('http')
- const server = http.createServer()
- server.on('request', function (req, res) {
- const url = req.url;
- let content = '
404 Not found!
'; - if(url==='/'|url==='/index.html'){
- content = '
首页
' - }else if(url === '/about.html'){
- content = '
about页面
' - }
- res.setHeader('Content-Type','text/html; charset=utf-8');
- // 调用res.end()方法,向客户端响应内容
- res.end(content);
- })
- server.listen(80, function () {
- console.log('server running at http://127.0.0.1:80')
- })
-