• node.js part1


    Node.js
    Node.js 是一个跨平台JavaScript 运行环境,使开发者可以搭建服务器端的 JavaScript 应用程序。作用:使用Node.js编写服务器端程序
    编写数据接口,提供网页资源浏览功能等等
    前端工程化:为后续学习Vue和React等框架做铺垫.

     node.js
    建议大家装nvm来控制node版本

    1. Node.js 是什么?
    基于Chrome 的 V8 引擎封装,独立执行JavaScript 代码的环境
    2. Node.js 与浏览器环境的JS最大区别?
    Node.js 环境中没有 BOM 和 DOM
    3. Node.js 有什么用?
    编写后端程序:提供数据和网页资源等
    前端工程化:集成各种开发中使用的工具和技术
    4. Node.js 如何执行代码?
    VSCode 终端中输入: node xxx.js 回车即可执行(注意路径)

    fs模块-读写文件

    模块:类似插件,封装了方法/属性
    fs模块:封装了与本机文件系统进行交互的,方法/属性语法:
    1.加载fs模块对象
    const fs=require('fs')/fs是模块标识符:模块的名字

    2.写入文件内容                                                                                                                    fs.writeFile('文件路径','写入内容',err=>{ //写入后的回调函数})

    3.读取文件内容
    fs.readFile('文件路径',(err,data)=>{                                                                                                //读取后的回调函数
    //data 是文件内容的Buffer 数据流 })

    1. /**目标:基于 fs 模块读写文件内容
    2. 1. 加载 fs 模块对象
    3. 2,写入文件内容
    4. 3. 读取文件内容
    5. */
    6. // 1. 加载 fs 模块对象
    7. const fs = require('fs')
    8. //2. 写入文件内容
    9. fs.writeFile('./test.txt', 'hello, Node.js', (err) => {
    10. if (err) console.log(err)
    11. else console.log('写入成功')
    12. })
    13. 然后就会出现一个txt文件,里面写的hello node.js
    14. //3.读取文件内容
    15. fs.readFile('./test.txt',(err,data)=>{
    16. if(err) console.log(err)
    17. else console.log(data)//68 65 6c 6f........是一个buffer 16进制数据流
    18. else console.log(data.toString())读出来为空是因为读写是异步的,把读那段嵌套在写的else就可以了
    19. })
    20. 默认会覆盖,除非设置成追加模式

    老师就是想告诉我们:用path模块实现路径处理,可以解决默认路径非调试文件路径的问题

     找不到就会弹出-4058,一个绝对路径和相对路径闹麻了

    注意,注意,注意:html中的js的每一句需要分号,不然压缩后会报错,js需要规范书写格式

    resultStr是写入内容的参数,又不是回调函数的参数

    1. /* 目标1:压缩 html 代码
    2. * 需求:把回车符 \r,换行符 \n 去掉,写入到新 html 文件中
    3. *1.1读取源 html 文件内容
    4. *1.2正则替换字符串
    5. * 1.3 写入到新的 html 文件中
    6. */
    7. // 1.1 读取源 html 文件内容
    8. const fs = require('fs')
    9. const path = require('path')
    10. fs.readFile(path.join(_dirname, 'public/index.html'),(err, data)=>{
    11. if(err) console.log(err)
    12. else {
    13. const htmlStr = data.toString()
    14. //1.2正则替换字符串
    15. const resultStr = htmlStr.replace(/[\r\n]/g,'')
    16. console.log(resultStr)
    17. // 1.3 写入到新的 html 文件中
    18. fs.writeFile(path.join(_dirname, 'dist/index.html'), resultStr, err =>{
    19. if (err) console.log(err)
    20. else console.log'写入成功')
    21. })
    22. }
    23. })

    url端口号

    URL:统一资源定位符,简称网址,用于访问服务器里的资源
    端口号:标记服务器里不同功能的服务程序
    端口号范围:0-65535之间的任意整数
    http://hmajax.itheima.net:80/api/province
    协议  域名 端口号 资源路径
    注意:http协议,默认访问80端口

    web服务

    1. const http=require('http')
    2. const server=http.createServer()
    3. // 1.2监听request请求事件,设置响应头和响应体
    4. server.on('request', (req, res) => {
    5. //设置响应头—内容类型—普通文本以及中文编码格式
    6. res.setHeader('Content-Type', 'text/plain; charset=utf-8')
    7. // 设置响应体内容,结束本次请求与响应
    8. res.end('欢迎使用 Node.js 和 http 模块创建的Web服务')
    9. })
    10. // 1.3配置端口号并启动Web服务
    11. server.listen(3000, () => {
    12. console.log('Web服务启动成功了')
    13. })

    防火墙也出来了,就会出现网络服务,想要终止,只要ctrl+c即可

    在浏览器打开localhost:3000即可打开

    浏览时钟例子

    req是你向服务器请求的数据对象,res则是服务器对客户端发出的响应内容,以及相应格式对象

    1. const fs = require('fs')
    2. const path = require('http')
    3. // 1,基于http模块,创建Web服务
    4. const http = require('http')
    5. const server = http.createServer()
    6. server.on('request', (req, res) => {
    7. // 2. 使用 req.url 获取请求资源路径,并读取 index.html 里字符申内容返回给请求方
    8. if (req.url === '/index.html') {
    9. fs.readFile(path.join(__dirname, 'dist/index.html'), (err, data) => {
    10. if (err) console.log(err)
    11. else {
    12. // 设置响应内容类型—html超文本字符串,让浏览器解析成标签网页等
    13. res.setHeader('Content—Type', 'text/html;charset=utf—8')
    14. res.end(data.toString())
    15. }
    16. })
    17. } else {
    18. // 3.其他路径,暂时返回不存在提示
    19. res.setHeader('Content—Type', 'text/plain;charset=utf—8')
    20. res.end('你要访问的资源不存在')
    21. }
    22. })
    23. server.listen(8080, () => {
    24. console.log('Web 服务启动成功了')
    25. })

    模块化

    什么是模块化?
    定义:
    CommonJS 模块是为Nodejs打包JavaScript代码的原始方式。Nodejs还支持浏览器和其他JavaScript 运行时使用的 ECMAScript模块标准。 在Node.js中,每个文件都被视为一个单独的模块。
    概念:项目是由很多个模块文件组成的
    好处:提高代码复用性,按需加载,独立作用域使用:需要标准语法导出和导入进行使用

     commonjs标准

    需求:定义utils.js模块,封装基地址和求数组总和的函数
    使用:
    1 . 导出:modiule.exports = {}
    2 .导入:require('模块名或路径‘)

    1. const baseURL = 'http://hmajax.itheima.net'
    2. const getArraySum = arr => arr.reduce((sum, val) => sum += val, 0)
    3. module.exports = {
    4. 对外属件名1: baseURL,
    5. 时外属性名2: getArraySum
    6. }

    模块名或路径:
    /内置模块:直接写名字(例如:fs, path, http)
    /自定义模块:写模块文件路径(例如:./utils.js)

    不带大括号,是简写,如果带了大括号,记得return值

    ECMAscript标准,命名导出导入

    1.Node.js支持哪2种模块化标准?                                                                                  >CommonJS标准语法(默认)
    >ECMAScript 标准法

    2.ECMAScript 标准,命名导出和导入的语法?                                                                                >导出:export 修饰定义的语句
    >导入:import{同名变量}from'模块名或路径'

    3.ECMAScript 标准,默认导出和导入的语法?                                                                                  >导出: export default {}
    >导入:import变量名from'模块名或路径

    软件包管理npm

    1 .初始化清单文件:npm init -y (得到  package json文件,有则略过此命令)
    2 .下载软件包 :npmi软件包名称
    3 .使用软件包 

    在空白文件夹,终端npm init -y,然后npm i dayjs即可

    1,报错 idealTree:05: sill idealTree buildDeps看2

    2.在终端打npm cache verify清一下npm内存再重新下载dayjs

     

    1. /**
    2. * 目标:使用 npm 下载 dayjs 软件包来格式化日期时间
    3. *1.(可选)初始化项目清单文件,命令:npm init -y
    4. *2.下载软件包到当前项目,命令:npmi软件包名称
    5. *3.使用软件包
    6. */
    7. //3,使用软件包
    8. const dayjs = require('dayjs')
    9. const nowDateStr = dayjs().format('YYYY-MM-DD')
    10. console.log(nowDateStr)

    安装所有依赖

    传输时,就是因为这些包的积极太大上传下载太浪费时间,软件包会舍弃

    输入npm i,下载package.json的所有软件包

    npm -全局软件包nodemon

    软件包区别:
     本地软件包:当前项目内使用,封装属性和方法,存在于node_modules
     全局软件包:本机所有项目使用,封装命令和工具,存在于系统设置的位置

    nodemon作用:替代node命令,检测代码更改,自动重启程序
    使用:
    1 .安装:npm i nodemon - g ( -g代表安装到全局环境中)
    2 .运行:nodemon待执行的目标js文件
    需求:启动准备好的项目,修改代码保存后,观察自动重启应用程序

    输入server.js,打开服务,会显示nodemon的状态

    Node.js与Webpack-14.npm全局软件包-nodemon_哔哩哔哩_bilibili,大量的弹幕可以帮助你

  • 相关阅读:
    【矩阵论】2. 矩阵分解——高低分解
    【Linux】2022 安装jdk教程,超级详细
    整理了25个Python文本处理案例,收藏!
    VMwareCentOS7Ping 指令报错:Nameorservicenotknown
    2023感恩节倒计时:跨境卖家如何借势风潮,成功脱颖而出?
    解决docker容器: bash: ping: command not found, 并制作镜像
    【Android性能】【流畅度】概念初识
    freemarker+yml介绍 以及freemarker与JSP的区别
    重定向和请求转发
    React学习--- 组件
  • 原文地址:https://blog.csdn.net/E___V___E/article/details/141095650