nodejs基础

在这里插入图片描述

什么是nodejs

在这里插入图片描述

  1. node.js是一个基于Chorme V8引擎的javaScript运行环境

  2. 如何再node中执行js代码
    1)打开终端
    2)node + js文件名称 回车

node内置api——fs

1)读取文件 fs.readFile()

在js代码中使用fs,需要将其导入:const fs = require(‘fs’)

const fs = require('fs');
// fs.readFile(path, [options], callback); path必选参数,options编码格式
// callback回调函数
fs.readFile('hello word.md' ,'utf8', function (err, data) {
    // 判断文件是否读取成果
    if (err) {
       return console.log('读取失败');

    }
    console.log(data);
})
  1. 写如内容 fs.writeFile()
// fs.writeFile(file, data[option], callback)
// file: 路径
// data:数据【option】编码格式
// callback:回调
fs.writeFile('hello word.md', '你好集美', 'utf8', (err) => {
    console.log(err);  //文件写如成果,err的值为null
    if (err) {
        console.log('失败了');
    } 
     console.log('成功了');
})

node内置api ——path

注意:先导入path模块

const path = require('path')
1) path.join() 实现路径片段的拼接
const path = require('path');
// 1 path.join([...paths])  返回值为拼接好的字符串
const pathstr = path.join('/a', '/b/c', '../', './d');
console.log(pathstr);//\a\b\d  注意../具有消除前面的路径的作用

2)path.basename() 从路径字符串中,将文件域名拿出来

//path.basename(path[,ext])
//path:路径
//ext:扩展名
// 
const ym = path.basename('http://baidu.com');
console.log(ym); //baidu.com
const ym2 = path.basename('http://baidu.com','.com');
console.log(ym2); //baidu 去除掉扩展名

内置api——http

1)概念:http模块是node官方提供,专门用来创建web服务器的模块。通过http提供的http.createServer()方法,就能将一台普通的电脑,变成一台web服务器,从而对外提供web资源。
2)先导入:const http = require(‘http’)
3)功能:服务器与普通电脑的区别在于,服务器上安装了web服务器软件,如IIS、Apache
在nodejs中不需要安装第三方的web服务器软件,基于http模块,就可以写一个服务器软件,对外提供web服务。
4)IP地址:每台计算机的唯一地址,通过ip地址实现电脑间的通信,每台服务器也有自己的ip地址。在开发其简,自己的电脑即使服务器也是客户端,为了方便测试,在浏览器中输入127.0.0.1,就可以把自己的电脑当作服务器访问。
5)域名和域名服务器
在这里插入图片描述

DNS将域名转换成IP进行访问
6) 端口号
在这里插入图片描述

7) 创建基本的web服务器
A)导入http模块
B)创建web服务实例
C)为服务器绑定request事件,监听客户端请求
D)启动服务器

//1.导入http模块
const http = require('http');
//2.创建web服务实例
const server = http.createServer()
// 3.服务器绑定request事件,监听客户端请求
// 使用.on()方法,绑定request事件
server.on('request', (req, res) => {
    console.log('someone visit our server');
})
// 4启动服务器
// server.listen(端口号,cb回调,)
server.listen(80, () => {
    console.log('http server running at http://127.0.0.1');
})

分析:
req:请求对象,只要服务器接收到客户端的请求,就会调用server.on()为服务器绑定request处理函数。如果访问到与客户端相关的数据和属性,就可以用req.url:获得url地址,req.method:获取请求类型
res:响应对象,可以获得访问的服务器的相关数据和属性,并且res.end()向客户端发送内容,结束此次请求
8)根据不同的url,响应不同的html内容

模块化

  1. 概念
    解决一个复杂问题是,自上向下逐层将系统划分为若干个模块的过程。对于整个系统来说,模块是可组合、分解和更换的单元。
  2. 编程里面的模块化
    遵循固定的规则,八大文件拆分成独立并相互依赖的多个小模块。
  3. 代码拆分的好处
    1)提高代码的复用性
    2)提高代码的可维护性
    3)可实现按需加载
  4. 模块化规范
    模块化所要遵循的规范,如使用什么样的语法格式引用
  5. nodejs的模块分类
    内置模块,nodejs官方提供的,如js path、http
    自定义模块 用户创建的每个js都是自定义模块
    第三方模块,由第三方提供的,非广发提供的内置模块,需要先下载后使用
    5.1 模块加载
    内置模块——使用require(模块名)
    自定义模块——require(js文件路径)
    第三方模块——require(模块名)
    5.2 模块作用域
    与函数作用域相同,在自定义模块中定义的遍历、方法等成员,只能在当前模块内被访问,这种模块级别的访问限制,叫做模块作用域
    好处:防止全局变量污染
    5.2.1 向外共享作用域的成员
    1) module对象:每个自定义模块中都有一个module对象,它里面存储了和当前模块有关的信息。
    在这里插入图片描述

5.2.2 module.exports 默认等于空对象{}
通过module.exports 就可向外共享数据。
外界通过require()方法导入自定义模块时,得到的就是module.exports所指的对象。
5.2.3 export对象
为了简化对外共享成员的代码,Node提供了exports对象,默认情况下,exports和module.exports指向同一个对象,共享结果。
5.2.4 两个命令export/import的使用
(1) export用于规定模块的对外接口
(2)import命令用于输入其他模块的内容
在这里插入图片描述

js文件中的暴露
分别暴露 ——上图
统一暴露 ——下图
默认暴露——下下图
在这里插入图片描述
在这里插入图片描述

  1. 引入方式
    1) 通用导入方式
    三种暴露方式均可使用
import * as m1(自己起的名称) from './js/m1.js';

2)解构赋值的方式
三种暴露方式均可使用

//m1文件为分别暴露
import {school,teach} form './js/m1.js'
//m2文件为统一暴露
import {school as sc,findJob} form './js/m2.js'   //使用别名避免重名
//m3文件为默认暴露
import {default as d} form './js/m3.js'   //默认暴露必须起别名 

3)简单引入
只适用于默认暴露

import m3 form './js/m3.js'  

express

  1. 概念:基于nodejs的快速、开放、极简的web开发框架
  2. 作用:和内置http模块类似,专门用来创建web服务器的
  3. 本质: npm上的第三方报,提供快速创建web服务器的方法
  4. express功能:对于前端,最常见的两种服务器web服务器:专门对外提供web网页资源的服务器;API接口服务器:专门对外提供API接口的服务器;对于express,这两种服务器均可创建
    5 express的使用
    5.1 安装——npm -i express @4.17.1
    5.2 创建web服务器
    在这里插入图片描述
    在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

笔记跟随

https://www.bilibili.com/video/BV1a34y167AZ?p=39

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值