• 【node】初识node以及fs操作,path操作以及http操作(一)


    1、不同浏览器使用不同的javaScript引擎

            chrome =>  v8

            Firefox  => OdinMonkey(奥丁猴)

            safri      => JSCore

            IE浏览器=>Chakra(查克拉)

    2、node是一个基于chrome v8引擎的javaScript运行环境

    浏览器是JavaScript的前端运行环境,node.js是JavaScript的后端运行环境

    node.js中无法调用DOM和BOM等浏览器内置API。

    3、node简单操作

    查看node版本号 node -v

    运行js文件 node 文件名

    4、fs文件系统模块

    fs是Node.js官方提供的、用来操作文件的模块

    1. fs.readFile(); // 读取指定文件内容
    2. fs.writeFile();//向指定文件中写入内容

    JavaScript引入fs模块

    const fs = require('fs')

     (1)读取指定文件内容

    1. // fs.readFiles(path[,option],callback)
    2. // 参数1:必选参数,字符串,表示文件的路径。
    3. // 参数2:可选参数,表示以什么编码格式来读取文件。
    4. // 参数3:必选参数,文件读取完成后,通过回调函数拿到读取的结果,
    5. const fs = require('fs');
    6. fs.readFile('read.txt','utf8',function(err,dataStr){
    7. console.log(err);
    8. console.log(dataStr);
    9. })
    10. fs.readFile('read.txt','utf8',function(err,dataStr){
    11. if(err){
    12. return console.log(err);
    13. }
    14. console.log(dataStr);
    15. })

    (2)向指定文件写入内容

    1. / fs.readFile(file,data[,option],callback)
    2. // 参数1:必选参数,文件的路径字符串,表示文件存放路径。
    3. // 参数2:必选参数,表示写入内容。
    4. // 参数2:可选参数,表示以什么编码格式来读取文件,默认utf8。
    5. // 参数3:必选参数,文件写入完成后,通过回调函数拿到读取的结果,、
    6. const fs = require('fs');
    7. fs.writeFile('read.txt','hello!',function(err){
    8. if(err){
    9. return console.log("文件写入失败:"+err);
    10. }else{
    11. console.log("文件写入成功");
    12. }
    13. })

    如果成功 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);

    5、path模块

    path 模块是 Node.is 官方提供的、用来处理路径的模块。它提供了一系列的方法和属性,用来满足用户对路径的处理需求。

    (1)path.join() 方法,用来将多个路径片段拼接成一个完整的路径字符串

    (2)path.basename() 方法,用来从路径字符串中,将文件名解析出来

    (3)path.extname() 方法,获得路径扩展名

    1. const path = require('path');
    2. let resPath = path.join('a', 'b', 'c', '../', 'def/g'); // 不校验路径的合法性
    3. // 相对路径获取其对应的绝对路径
    4. let resolvePath = path.resolve('./a/b', 'c/d', 'e', 'xxx.txt');
    5. // 进一步操作路径,以对象的方式解析路径
    6. let pathObj = path.parse(resolvePath);
    7. const fullName = path.basename('/a/b/index.html'); // index.html
    8. const nameWithoutExt = path.basename('/a/b/index.html','.html');

    路径中 ../会抵消前面的路径

    路径拼接使用 path.join(__dirname,'123.txt');,不要使用 “ + ” 。

    6、http模块

    (1)IP地址

    客户端:负责消费资源的电脑

    服务器:负责对外提供网络资源的电脑

    http模块是node提供的,普通电脑可以通过http.createServer()方法变成服务器。

    IP地址:在互联网上每台电脑唯一地址,格式--点分十进制,

    ping IP地址

    自身IP地址,测试 127.0.0.1

     (2)域名和域名服务器

    字符型地址方案-域名地址

    域名服务器是提供IP地址和域名之间转换服务的服务器

    127.0.0.1 ==> localhost

    (3)端口号

    1. 每个端口号不能同时间被多个web服务占用
    2. URL中80端口可以省略

     (4)创建最基本web服务器

    创建 web 服务器的基本步骤

    ① 导入 http 模块

    const http = require('http')

    ② 创建 web 服务器实例

    调用http.createServer()方法,即可快速创建一个web服务器实例

    const server = http.createServer()

    ③ 为服务器实例绑定 request 事件,监听客户端的请求

    1. // 使用服务器实例 .on() 方法,为服务器绑定一个request事件
    2. server.on('request',(req, res)=>{
    3. // 只要有客户端来请求我们自己的服务器,就会触发request事件,从而调用这个事件处理函数
    4. console.log('Someone visit our web server')
    5. })

    ④ 启动服务器

    调用服务器实例的 .listen()方法,即可启动当前的web服务器实例:

    1. server.listen(80, ()=>{
    2. console.log('http server running at http://127.0.0.1')
    3. })

     (5) req请求对象

    只要服务器接收到客户端得请求,就会调用通过server.on()为服务器绑定request事件处理函数

    如果想在事件处理函数中访问客户端相关的数据或属性,可以用req请求对象

    1. server.on('request', function (req, res) {
    2. const url = req.url;
    3. const method = req.method;
    4. })

    (6) res响应对象

    访问与服务器相关得数据或属性,采用res.end

    1. server.on('request', function (req, res) {
    2. const url = req.url;
    3. const method = req.method;
    4. const str =`request is ${url},method is ${method}`
    5. // 调用res.end()方法,向客户端响应内容
    6. res.end(str);
    7. })

     

    中文乱码问题

    res.setHeader('Content-Type','text/html; charset=utf-8');

    (7) 不同url响应不同页面

    ① 获取请求得url地址

    ② 设置默认响应内容

    ③ 判断用户请求得是否为/ 或/index.html首页

    ④ 判断用户请求得是否为 /其他页面

    ⑤ 设置响应头,防止乱码

    ⑥ 使用res.end()把内容响应给客户端

    1. const http = require('http')
    2. const server = http.createServer()
    3. server.on('request', function (req, res) {
    4. const url = req.url;
    5. let content = '

      404 Not found!

      '
      ;
    6. if(url==='/'|url==='/index.html'){
    7. content = '

      首页

      '
    8. }else if(url === '/about.html'){
    9. content = '

      about页面

      '
    10. }
    11. res.setHeader('Content-Type','text/html; charset=utf-8');
    12. // 调用res.end()方法,向客户端响应内容
    13. res.end(content);
    14. })
    15. server.listen(80, function () {
    16. console.log('server running at http://127.0.0.1:80')
    17. })

  • 相关阅读:
    Java 之集合框架的详细介绍
    基于SpringBoot的大学生就业与创业管理平台
    适合您的智能手机的 7 款优秀手机数据恢复软件分享
    【matplotlib 实战】--漏斗图
    关于Python中math 和 decimal 模块的解析与实践
    外包干了10个月,技术退步明显.......
    新版Testwell CTC++带来哪些新变化?
    C#使用whisper.net实现语音识别(语音转文本)
    Metabase学习教程:权限-1
    算法人生(1):从“强化学习”看如何“战胜拖延”
  • 原文地址:https://blog.csdn.net/Whiteface_clown/article/details/135505444