我的账户
猩码学苑

专注C++开发菁英教育

亲爱的游客,欢迎!

已有账号,请

如尚未注册?

陈紫怡-20221206-Node.js1

[复制链接]
Dasmondlicht 发表于 2022-12-12 00:22:24 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
一、今日学习内容:
  • 服务器
    • 服务器可以从硬件、软(系统软件、应用软件)两个角度描述
    • 按硬件描述:
      • 服务器就是一台超级计算机(超强CPU、内存、硬盘等)
    • 按系统划分:
      • 在硬件上安装了什么操作系统,就可以称为该系统的服务器
      • eg:Linux服务器、windows服务器、Unix服务器
    • 按软件划分:
      • 在操作系统中安装了什么软件,就可以称为该软件的服务器
      • eg:Apache服务器、数据库服务器、邮件服务器等
    • web服务器
      • web服务器就是安装了web服务软件,能够提供网站服务的服务器。(淘宝、京东、新浪)
      • 常见web软件:
        • Apache、Nginx、IIS、Tomcat、Node.js
        • Apache服务器、Nginx服务器、IIS服务器、Tomcat服务器、Node.js服务器
        • PS:web服务器又叫做http/https服务器
  • Node.js
    • 概念
      • Node.js是一个基于Chrome V8引擎的 ECMAScript运行环境
        • Chrome浏览器的内核是Blink,js解析引擎V8
        • V8可以嵌入到任何C++应用程序中,无论是Chrome还是Node.js,事实上都是嵌入了V8引擎来执行JavaScript代码
        • Chrome浏览器中,还需要解析、渲染HTML、CSS等相关渲染引擎,另外还需要提供支持浏览器操作的API、浏览器自己的事件循环等
      • Node.js可以执行js文件
      • Node.js提供了大量的工具(API),能够让我们完成文件读写、web服务器创建等功能
      • API:application  program interface   应用程序接口
    • 中间层----libuv
      • js代码经过V8引擎,在通过Node.js的Bindings,将任务放到Libuv的事件循环中
      • Libuv是使用C语言编写的库
      • Libuv提供了事件循环、文件系统读写、网络IO、线程池等等内容
    • node.js特点
      • 事件驱动
      • 非阻塞IO(异步)模型
      • 单线程
      • 跨平台(window、Linux、Unix、Mac)
  • Node.js和浏览器中js的区别
    • 浏览器中的js组成:ES核心(ECMAScript核心)+DOM+BOM
    • Node.js中的js组成:ES核心+全局成员(全局对象)+模块系统(系统模块、第三方模块、自定义模块)
      • 全局成员:setTimeout、setInterval、console.log()
        • 这几个名称和功能虽然跟浏览器中的一样,但是是nodejs自己实现的,与浏览器无关
        • 模块:一个js文件,内部定义了很多属性和方法,在程序中引入该模块就能使用模块中定义的属性和方法
  • 常用命令
    • cd:切换目录
    • dir\Is:查看目录下所有文件和目录
      • Linux系统中只能使用Is(类unix:unix、Linux、Mac、Android)
    • cls\clear:清屏
      • Linux中只能使用clear
    • exit:退出
  • Node.js系统模块
    • 介绍:
      • 系统模块:
        • 随着Node.js一起安装,并由官方进行维护的模块
          • 常用系统模块:fs/http/url/path等
        • 一个模块中包含了很多方法和属性,可以帮助我们实现不同的功能
        • fs----文件系统模块(filesystem)
          • 专门用来操作文件和目录的模块,能够进行文件创建/删除,读取文件,获取文件详情等操作
      • 文件读取
        • let/var /const   fs=require('fs');
        • fs.readFile('文件路径' , '字符集选择' ,(err,data)=> { } )
          • 文件读取成功  err----null   data----文件内容
          • 文件读取失败   err----错误对象     data----undefined
      • 文件写入
        • let   fs=require('fs');
        • fs.writeFile('文件路径' ,写入文件的字符串  [,字符集 ] ,(err)=> { } )
      • 文件追加
        • let   fs=require('fs');
        • fs.appendFile('文件路径' ,写入文件的字符串  [,字符集 ] ,(err)=> { } )
  • Node创建web服务器
    • 请求-处理-响应
      • 请求:
        • 在浏览器的URL地址栏输入地址,按下回车之后,浏览器就会向对应的服务器发送请求。需要服务器的某个文件(最常见最直观的一种请求)
        • 服务器接收到请求之后,找到对应的文件,并将文件中的内容读出
        • 服务器将读出的文件内容返回给浏览器
  • HTTP模块介绍
    • http是一个系统模块,让我们能够通过简单稍微流程穿件一个web服务器
    • Apache是一个成品服务器,安装好之后就有了web服务器的所有功能,使用http模块创建服务器时,服务器能干什么取决于我们如何定义服务器的功能
  • 使用HTTP模块搭建web服务器
    • 创建web服务器步骤:
      • 1)加载/导入/引入  http模块       const  http  =require(‘http’)
      • 2)创建服务器对象        const   server = http.createServer();
      • 3)启动服务器,监听端口         server.listen(3000,( ) = >{ });
      • 4)监听浏览器请求并进行处理和响应       server.on('request' ,(req.res) = > { res.end( );  } )
  • 不同URL显示不同内容
    • 核心:
      • req(请求对象)中有URL属性,该属性中保存了当前请求的URL地址
      • URL属性中保存的地址是没有协议、IP、端口号,并且以/开头的地址
      • 用fs.readFile读取出文件内容,再用res.end响应给浏览器
  • 解决中文乱码问题
    • 核心:使用res(响应对象)中的setHeader方法
    • res.setHeader('content-type','text/html;charset=utf-8');
  • 静态资源加载(CSS、js、img等)
  • req.url----得到的是没有协议、ip/域名、端口号的地址

回复

使用道具 举报

关注0

粉丝0

帖子50

发布主题
大家都在学
课堂讨论
一周热帖排行最近7x24小时热帖
关注我们
专注C++菁英教育

客服电话:18009298968

客服时间:9:00-21:00

猩码学苑 - 专注C++开发菁英教育!( 陕ICP备2025058934号-1 )

版权所有 © 陕西菁英数字科技有限公司 2023-2026