黑马程序员Node.js全套入门教程的学习笔记

前言

各位读者好,我正在努力学习前端中,这里是我的学习笔记分享,希望能够对大家有用。
我学习的视频链接是 黑马程序员Node.js。
此外,我还有其它前端内容的笔记,大家有需要的可以自行查找。

文章目录

  • 前言
  • 认识Node.js内置模块
    • 认识node.js
      • Node.js的运行环境
      • node.js的作用
      • 常见的终端操作命令
    • fs文件系统模块
      • .readFile()读取文件
      • .wirteFile()写入文件
      • 整理成绩案例
    • path路径模块
      • path.join()拼接路径
      • path.basename()解析文件名
      • path.extname()获取扩展名
    • http模块
      • 服务器的基础概念
      • 基本服务器创建
        • req请求对象
        • res响应服务对象
        • 解决中文乱码的问题
        • 根据不同的url响应不同的html内容
  • 模块化
    • 模块化的基本概念
    • Node.js中模块的分类
      • 加载模块
      • 模块作用域
      • 向外共享模块作用域中的成员
        • module对象
        • module.exports对象
      • CommonJS规定
    • npm与包(第三方模块)的搜索与下载
      • 注意
      • 包管理配置文件
      • 解决下包速度慢的问题
      • 包的分类
      • 规范的包结构
      • 实战——开发包
        • 需要实现的功能
        • 初始化包的结构
        • 代码
        • npm发布
    • 模块的加载机制
      • 优先从模块中缓存
      • 内置模块的加载机制
      • 自定义模块的加载机制
      • 第三方模块的加载机制
      • 目录作为模块加载机制
  • express的使用
    • 什么是Express
      • Express的安装
      • 基本使用
        • 创建基本的Web服务器
          • 监听GET请求
          • 监听POST请求
          • 把内容响应给客户端
          • 获取URL中携带的参数
          • 获取URL中的动态参数
        • 托管静态资源
        • nodemon的安装并使用
    • Express路由
        • 路由的匹配过程
        • 路由的挂载使用
        • 模块化路由
        • 为路由模块添加前缀
    • Express中间件
        • next函数的作用
        • 全局生效的中间件
        • 局部生效的中间件
        • 中间件的使用注意事项
        • 中间件的分类
    • 使用Express写接口
      • 跨域
      • CORS响应头部
      • 简单请求和预检请求
        • 简单请求
        • 预检请求
      • JSONP接口
  • MySQL与MySQL Workbench
    • MySQL
    • MySQL Workbench操作
      • 创建数据库与数据表
      • 数据类型
      • 写入数据
      • SQL语法
      • 排序
      • count(*)与as函数
    • 在项目中操控MySQL模块
      • 查询与插入
      • 更新与删除
    • 实战——Web前后端身份验证
      • web开发模式
        • 服务端渲染
        • 前后端分离
      • 身份认证
        • Session认证机制
          • Cookie
          • 在Express中使用Session认证
        • JWT认证机制
          • 在Express中使用JWT
      • 实战代码

认识Node.js内置模块

认识node.js

Node.js是一个基于Chrome V8引擎的JavaScript运行环境。

Node.js的运行环境

在这里插入图片描述

node.js的作用

在这里插入图片描述

常见的终端操作命令

在这里插入图片描述

fs文件系统模块

在这里插入图片描述

.readFile()读取文件

/* fs.readFile()的语法格式*/
fs.readFilde(path[.options],callback)

/*
调用fs.readFile()
参数1:读取文件存放的路径
参数2:读取文件时采用的编码格式
参数3:回调函数,拿到失败和成功的结果
*/

/*以utf8的编码格式,读取文件的内容,并打印err和dataStr的值*/
const fs = require('fs')
fs.readFile('./files/11.txt','utf8', fuction(err, dataStr){
/*读取成功,err为null*/
/*读取失败,err为 错误对象 , dataStr  为  undefined*/

/*打印读取失败的结果*/
console.log(err)
console.log('-------')
/*打印读取成功的结果*/
console.log(dataStr)
})

.wirteFile()写入文件

/*语法格式*/
fs.writeFile(file, data[.options], callback)

/*
参数1:必选,写入文件的存放路径
参数2:必选,写入的内容
参数3:可选,编码格式,如utf8
参数4:必选,文件写入后的回调函数
*/

const fs = require('fs')

fs.writeFile('./files/2.txt','abcd',fuction(err){
/*读取成功,err为null*/
/*读取失败,err为 错误对象*/
console.log(err)
})

整理成绩案例

const fs = require('fs')

fs.readFile('./成绩.txt','utf8',function(err,dataStr){
    if(err)
    return console.log('读取失败'+ err.message)

    // console.log('读取文件成功!'+dataStr)

    const arrOld = dataStr.split(' ')

    const arrNew = []

    arrOld.forEach(item => {
        arrNew.push(item.replace('=', ': '))
    })

    console.log(arrNew)
    
    const newStr = arrNew.join('\r\n') 
    console.log(newStr)

    fs.writeFile('./成绩-ok.txt',newStr,function(err){
        if(err){
            return console.log('写入文件失败!' + err.message)
        }

        console.log('成绩写入成功')
    })
})

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

path路径模块

在这里插入图片描述

path.join()拼接路径

/*导入path模块*/
const path = require('path')

/*注意../会抵消前面的路径*/
const pathStr = path.join('/a', '/b/c', '../', './d', 'e')
console.log(pathStr)

在这里插入图片描述

path.basename()解析文件名

/*导入path模块*/
const path = require('path')

/*定义文件的存放路径*/
const fpath = '/a/b/c/index.html'

const fullName = path.basename(fpath)
/*打印出文件名index.html*/
console.log(fullName)

const nameWithoutExit = path.basename(fpath, '.html')
/*打印出index,移除了.html*/
console.log(nameWithoutExit)

path.extname()获取扩展名

/*导入path模块*/
const path = require('path')

/*定义文件的存放路径*/
const fpath = '/a/b/c/index.html'

const fext =path.extname(fpath)
/*打印出.html, 即为文件的扩展名*/
console.log(fext)

http模块

服务器的基础概念

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

相关概念

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

基本服务器创建

分四步如下
导入http模块

const http = require('http')

创建web服务器实例

const server = http.creatServer()

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

server.on('request', function(req,res){
	console.log('Someone visit our web serevr')
})

启动服务器

server.listen(80, function(){
	console.log('server running at http://127.0.0.1:8080')
})
req请求对象

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

res响应服务对象

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

解决中文乱码的问题

在这里插入图片描述

根据不同的url响应不同的html内容
const http = require('http')

const server = http.creatServer()

server.on('request', (req, res)=>{
/*获取请求的URL地址*/
const url = req.url
/*设置默认的响应内容404 Not found*/
let content = '404 Not found!'
/*判断用户请求的是否为/或/index.html首页*/

/*判断用户请求的是否为/about.html关于页面*/
if(url === '/' || url === '/index.html'){
	content = '<h1>首页</h1>'
}else if(url === '/about.html'){
	content = '<h1>关于首页</h1>'
}

/*设置Content-Type响应头,防止中文乱码*/
res.setHeader('Content-Type', 'text/html: charset = utf-8')
/*使用res.end()把内容响应给客户端*/
res.end(content)

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

模块化

模块化的基本概念

在这里插入图片描述
编程领域中的模块化,就是遵守固定的规则,把一个大文件拆成独立并互相依赖的多个小模块。

把代码进行模块化拆分的好处:

  • 提高了代码的复用性
  • 提高了代码的可维护性
  • 可以实现按需加载

Node.js中模块的分类

Node.js 中根据模块来源的不同,将模块分为了3大类,分别是:

  • 内置模块(内置模块是由Node.js 官方提供的,例如fs、path、http等)
  • 自定义模块(用户创建的每个.js文件,都是自定义模块)
  • 第三方模块(由第三方开发出来的模块,并非官方提供的内置模块,也不是用户创建的自定义模块,使用前需要先下载)

加载模块

在这里插入图片描述

模块作用域

在这里插入图片描述

好处是防止全局变量的污染。

向外共享模块作用域中的成员

module对象

在这里插入图片描述

module.exports对象

在自定义模块中,可以使用module.exports对象,将模块内的成员共享出去,供外界使用。外界用require()方法导入自定义模块时,得到的就是module.exports所指向的对象。

/*
在外界使用require导入一个自定义模块的时候,得到的成员,就是那个模块中,通过module.exports指向的那个对象
*/
const m = require('./自定义模块.js')

console.log(m)

自定义模块

/*在一个自定义模块中,默认情况下,module.exports = {}*/
//对module.exports挂上username属性
module.exports.username = 'zs'
//挂上sayHello的方法
module.exports.sayHello = function(){
	console.log('Hello')
}

在这里插入图片描述
注意:

  • 使用require()方法导入模块时,导入的结果,永远以module.exports指向的对象为准。
  • module.exports.age = 12 和 module.exports ={ age = 21}中后者输出
  • 由于module.exports 单词写起来比较复杂,为了简化向外共享成员的代码,Node 提供了exports 对象。默认情况下,exports和module.exports 指向同一个对象。最终共享的结果,还是以 module.exports 指向的对象为准。

在这里插入图片描述

CommonJS规定

在这里插入图片描述

npm与包(第三方模块)的搜索与下载

Node.js中的第三方模块有叫做包。包由第三方团队或个人开发的免费的方便我们写代码的工具。

国外有一家IT公司,叫做npm, Inc.这家公司旗下有一个非常著名的网站: https://www.npmjs.com/,它是全球最大的包共享平台,你可以从这个网站上搜索到任何你需要的包,只要你有足够的耐心!

npm, Inc.公司提供了一个地址为 https://registry.npmjs.org/的服务器,来对外共享所有的包,我们可以从这个服务器上下载自己所需要的包。该公司也提供包的管理工具帮助我们的使用,这个工具不需要额外的下载,在我们下载node.js时就已经有了

格式化时间(不适用包的版本)
temp.js

function dateFormat(dtStr){
    const dt = new Date(dtStr)

    const y = dt.getFullYear()
    const m = padZero(dt.getMonth()+1)
    const d = padZero(dt.getDay())

    const hh = padZero(dt.getHours())
    const mm = padZero(dt.getMinutes())
    const ss = padZero(dt.getSeconds())
    y.innerHTML=y;
    m.innerHTML=m;
    d.innerHTML=d;
    hh.innerHTML=hh;
    mm.innerHTML=mm;
    ss.innerHTML=ss;

    return y+'-'+m+'-'+d+' '+hh+':'+mm+":"+ss
}

//定义补0的操作
function padZero(n){
    return n>9 ? n: '0'+n
}

module.exports = {
    dateFormat
}

temp1.js

//导入自定义的格式化时间模块
const TIME = require('./temp.js')

//请调用方法,进行时间的格式化
const dt = new Date()

const newDT=TIME.dateFormat(dt)

console.log(newDT)

使用包的版本
在这里插入图片描述
在这里插入图片描述

const moment = require('moment')

const dt = moment().format('YYYY-MM-DD HH:mm:ss')

console.log(dt)

在这里插入图片描述

注意

可以在npm的第一个链接中找到包的使用说明书

在这里插入图片描述

包管理配置文件

在这里插入图片描述

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

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

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

解决下包速度慢的问题

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
下载时,如果出现如下问题
在这里插入图片描述

可以复制这段代码解决

npm config set strict-ssl false
npm config set registry http://registry.npm.taobao.org
npm run serve

在这里插入图片描述
安装遇到问题可以看这里

包的分类

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

规范的包结构

在这里插入图片描述

实战——开发包

需要实现的功能
  1. 格式化日期
  2. 转义HTML中的特殊字符
  3. 还原HTML中的特殊字符

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

初始化包的结构

在这里插入图片描述

代码

链接:https://pan.baidu.com/s/1GkVCnCiv31U56D2JTAUCqg
提取码:h77j
在这里插入图片描述

npm发布
  1. 在npm的官网上注册账号
  2. npm账号注册完成后,可以在终端中执行npm login命令,依次输入用户名、密码、邮箱后,即可登录成功。
    在这里插入图片描述
  3. 将终端切换到包的根目录之后,运行npm publish命令,即可将包发布到npm上(注意:包名不能雷同)
  4. 运行npm unpublish 包名 --force命令,即可从npm删除已发布的包。注意,这个命令只能删除72小时以内发布的包。同时,删除的包在24小时内不容许重复发布。

模块的加载机制

优先从模块中缓存

在这里插入图片描述

内置模块的加载机制

在这里插入图片描述

自定义模块的加载机制

在这里插入图片描述

第三方模块的加载机制

在这里插入图片描述

目录作为模块加载机制

在这里插入图片描述

express的使用

这里是 express中文使用说明书
在使用学习时可以参考一下。

什么是Express

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

Express的安装

在这里插入图片描述

基本使用

创建基本的Web服务器

在这里插入图片描述

监听GET请求

在这里插入图片描述

监听POST请求

在这里插入图片描述

把内容响应给客户端

在这里插入图片描述

获取URL中携带的参数

在这里插入图片描述

获取URL中的动态参数

在这里插入图片描述

托管静态资源

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

nodemon的安装并使用

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

Express路由

路由即为映射关系。举例如下
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

路由的匹配过程

在这里插入图片描述

路由的挂载使用

在这里插入图片描述

模块化路由

在这里插入图片描述

//1.导入路由模块
const router = require('./router.js')
//2.使用app.use()注册路由模块
app.use(router)

/*注意:app.use()函数的作用,就是用来注册全局中间件*/

为路由模块添加前缀

在这里插入图片描述

Express中间件

中间件(Middleware ) ,特指业务流程的中间处理环节。

多个中间件之间,共享同一份req和res。基于这样的特性,我们可以在上游的中间件中,统一为req或res 对象添加自定义的属性或方法,供下游的中间件或路由进行使用。

在这里插入图片描述

next函数的作用

在这里插入图片描述

next函数是实现多个中间件连续调用的关键,它表示把流转关系转交给下一个中间件或路由。

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

全局生效的中间件

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

局部生效的中间件

在这里插入图片描述

中间件的使用注意事项

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

中间件的分类
  • 应用级别的中间件
    在这里插入图片描述

  • 路由级别的中间件
    在这里插入图片描述

  • 错误级别的中间件
    在这里插入图片描述

  • Express内置的中间件

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

  • 第三方的中间件
    在这里插入图片描述
    在这里插入图片描述
  • 自定义中间件

在这里插入图片描述

//导入express模块
const express = require('express')

//创建express的服务器实例
const app = express()

//导入自定义的中间件模块
const customBodyParser = require('./custom-body-parser')

//将定义的中间件函数,注册为全局可用的中间件模块
app.use(customBodyParser)

app.post('/user',( req,res)=>{
    res.send(req.body)
})

//调用app.listen方法,指定端口号并启动web服务器
app.listen(80,function(){
    console.log('express server running at http://127.0.0.1:80')
})

中间件模块


//导入Node.js内置的querystring模块
const qs = require('querystring')

const bodyParser =(req, res, next)=>{
    // this.res=res
    //定义中间件的业务逻辑
    //1.定义str字符串,用于存储客户端发送过来的请求数据
    let str = ''
    //2.监听req的data事件
    req.on('data',(chunk)=>{
        str += chunk

    })
    //3.监听req的end事件
    req.on('end',()=>{
        //str中存储了完整的请求数据
       console.log(str) 
       //TODO:把字符串格式的请求体数据解析成对象格式
       const body = qs.parse(str)

       req.body = body

       next()
    })

}

module.exports = bodyParser

使用Express写接口

使用Express写接口

//导入express模块
const express = require('express')

//创建express的服务器实例
const app = express()

//write your code here
//配置表单解析的中间件
app.use(express.urlencoded({extended:false}))

//一定要在路由之前配置跨域cors这个中间件,从而解决接口跨域的问题
const cors = require('cors')

app.use(cors())

//导入路由模块
const router =require('./apiRouter')
//把路由模块注册到app上
app.use('/api',router)

//调用app.listen方法,指定端口号并启动web服务器
app.listen(80,function(){
    console.log('express server running at http://127.0.0.1:80')
})

apiRouter.json

const express = require('express')

const router = express.Router()

//在这里挂载路由
router.get('/get',(req, res)=>{
    //通过req.query获取客户端通过查询字符串,发送到服务器的数据
    const query = req.query
    //使用res.send()方法,向客户端响应处理的结果
    res.send({
        status:0, //0为处理成功,1为处理失败
        msg:'GET 请求成功!', //状态描述
        data:query //需要响应给客户端的数据
    })
})

router.post('/post', (req, res)=>{
    //通过req.body获取请求体中包含的url-encoded的格式数据
    const body = req.body
    //调用res.send()方法,向客户端响应结束
    res.send({
        status:0, //0为处理成功,1为处理失败
        msg:'POST 请求成功!', //状态描述
        data:query //需要响应给客户端的数据
    })
})

module.exports = router

跨域

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

CORS响应头部

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

在这里插入图片描述

在这里插入图片描述

简单请求和预检请求

简单请求

在这里插入图片描述

预检请求

在这里插入图片描述

JSONP接口

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

在这里插入图片描述

MySQL与MySQL Workbench

MySQL

这里推荐大家我之前学习的一篇文章,这个文章内容是我在同类文章中个人认为是比较易读全面的。
MySQL学习文章

MySQL Workbench操作

MySQL Workbench 是MySQL可视化操作软件
下载官网,全部next就行

创建数据库与数据表

在这里插入图片描述

创建数据表

在这里插入图片描述

数据类型

设计表的字段
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

写入数据

在这里插入图片描述

SQL语法

SELECT
在这里插入图片描述
注意:多个列名称可以用英文逗号隔开

INSERT INTO
在这里插入图片描述

UPDATA

在这里插入图片描述
注意:多个列名称修改可以用英文逗号隔开

DELETE
在这里插入图片描述
WHERE子语句
在这里插入图片描述
在这里插入图片描述

AND关系

在这里插入图片描述

OR关系
在这里插入图片描述

排序

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
多重排序
在这里插入图片描述

count(*)与as函数

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

在项目中操控MySQL模块

  1. 安装操作MySQL数据库的第三方模块(mysql)
  2. 通过 mysql模块连接到MySQL 数据库
  3. 通过mysql模块执行SQL语句
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

查询与插入

在这里插入图片描述

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

更新与删除

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

实战——Web前后端身份验证

web开发模式

服务端渲染

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

前后端分离

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

身份认证

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

Session认证机制

在这里插入图片描述

Cookie

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

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

在Express中使用Session认证

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

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

JWT认证机制

在这里插入图片描述

JWT(英文全称:JSON Web Token)是目前最流行的跨域认证解决方案。

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

在Express中使用JWT

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
注意:只要配置成功了express-jwt 这个中间件,就可以把解析出来的用户信息,挂载到req.user属性上
在这里插入图片描述

实战代码

基于 项目开发文档的API的开发
这里面是关于登录验证,上传文章的API项目
链接:https://pan.baidu.com/s/1Dbbs2Qat5zj8xtCY0v3zbg
提取码:qid3

木子与金与玉
关注 关注
  • 7
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
node.js资料
02-18
黑马程序员nodejs第二天课程的资料,有需要的同学可以拿走
nodejs资料
致我那些年搬过的砖
12-19 374
1 ES6/7语法讲解 http://es6.ruanyifeng.com/#README 2 koa框架入门 http://www.jianshu.com/p/6b816c609669 https://github.com/ChenShenhai/koa2-note/ https://koa.bootcss.com/ 3 balel关于新语法项目在旧解释器上的支持 ES6项目在E
NodeJs[黑马笔记简洁版]
最新发布
qq_73270720的博客
04-27 202
黑马笔记
node.js入门教程(B站黑马程序员
m0_46403734的博客
05-22 3596
视频链接:https://www.bilibili.com/video/BV1a34y167AZ?p=1 一、初识node.js 1.浏览器中的 JavaScript 运行环境 2.Node.js 中的 JavaScript 运行环境 3.Node.js 可以做什么 Node.js 作为一个 JavaScript 的运行环境,仅仅提供了基础的功能和API。然而,基于Node.js 提供的这些基础能,很多强大 的工具和框架如雨后春笋,层出不穷,所以学会了Node.js ,可以让前端程序员胜任更多的工作和
学习笔记黑马程序员Node.js全套入门教程 | 基础篇
lonelysnowman的博客
01-29 707
最近要写一些npm命令发现文件读写和路径API忘记了,索性直接复习了一遍NodeJS,边学边忘真的痛苦。
黑马程序员node.js学习笔记
weixin_50523986的博客
04-03 766
编程领域中的模块化,就是遵守固定的规则,把一个大文件拆成独立并互相依赖的多个小模块Express 是基于 Node.js 平台,快速、开放、极简的 Web 开发框架Express 的作用和 Node.js 内置的 http 模块类似,是专门用来创建 Web 服务器的一个npm 上的第三方包,提供了快速创建 Web 服务器的便捷方法Expess是基于http 内置模块进一步封装出来的。
node.js时钟案例
04-13
定义处理CSS方法:resolveCSS(htmlStr) 定义处理JS方法:resolveJS(htmlStr) 定义处理HTML方法:resolveHTML(htmlStr)
Node.js入门教程.pdf
09-14
Node.js 入门教程 Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,允许开发者使用 JavaScript 语言来编写服务器端代码。Node.js 的出现改变了传统的 Web 开发模式,使得开发者可以使用 JavaScript ...
node.js 入门视频教程 20集(含源码).txt
09-25
node.js 入门视频教程 20集(含源码).txt 前端必备技能
Node.jsNode.js从入门到放弃学习笔记
02-03
Node.js从入门到放弃学习笔记》 持续更新中... 目录 1,Node.js开始 2,基本模块 3,Node.js安全 前言 ES6 / 7带来的转型 自ES6确定和ES7的异步/等待开始扩展之后,node.js的发展变得更加Swift,可以预见到...
node.js中文入门教程
02-28
node.js中文入门到精通教程,node.js中文入门到精通教程。
Node.js最新版黑马配套笔记
热门推荐
shenruiaaa的博客
03-17 3万+
1. 初识node.js与内置模块 1.1 回顾与思考 浏览器中的javaScript的组成部分 JS核心语法 webAPI 为什么JavaScript可以再浏览器中被执行? 待执行的JS代码 JS解析引擎 不同的浏览器使用不同的JS解析引擎 为什么JS可以操作DOM还有BOM? 每个浏览器中内置了DOM,BOM这样的API函数,因此浏览器中的javaScript才可以调用它们 浏览器中JS的运行环境 运行环境是指代码正常运行所需要的必要环境 Chrome浏览器运行环境: V8引擎和内置API函数 v
NodeJs黑马程序笔记链接
qq_45753147的博客
04-06 1034
黑马node.js笔记__小彭同学_的博客-CSDN博客_node学习路线
Node.js:万字总结黑马教程,学懂node.js看这一篇就够了
做一只猫的博客
07-24 2595
node.js笔记
Node.js学习笔记
qq_55910050的博客
12-04 1313
NODE.JS学习笔记分享
node知识点(3)
woai_mihoutao的博客
09-27 338
广义上来讲,路由就是映射关系。中间件(Middleware ),特指业务流程的中间处理环节。// mw 指向的就是一个中间件函数 const mw = function(req . res , next) {console . log('这是个简单的中间件函数') next() }console . log('这是给简单的中间件函数') next() })可以使用 app.use() 连续定义多个全局中间件。客户端请求到达服务器之后,会按照中间件定义的先后顺序依次进行。
node.js笔记(千锋kerwin老师同款)
weixin_63298816的博客
01-09 1570
node.js笔记,需要可联系我
node.js 黑马学习笔记
2301_78723800的博客
04-03 776
什么是 Node.js,有什么用,为何能独立执行 JS 代码,演示安装和执行 JS 文件内代码了解模块化概念和好处,以及 CommonJS 标准语法导出和导入把上面学的模块化语法,包的概念,常用命令进行总结了解 Webpack 的概念和作用,以及使用。
黑马node.js学习笔记
09-02
黑马Node.js学习笔记是一本关于Node.js学习资料,其中包含了关于模块化规范的内容。模块化规范是对代码进行模块化的拆分与组合时需要遵守的规则。在Node.js中,模块可以分为内置模块、自定义模块和第三方模块。...

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • Web前端html5+css3前端开发入门学习笔记 1965
  • 黑马程序员Node.js全套入门教程的学习笔记 1238
  • 尚硅谷TypeScript教程讲义文档分享和学习笔记分享 1173
  • Springboot学习笔记 1006
  • 尚硅谷2022版Webpack5入门到原理文档资料分享与学习重点强调——基础 917

分类专栏

  • 软件下载 3篇

最新评论

  • Springboot学习笔记

    声哥codeGrandMaster: jar -jar springboot_01_quickstart-0.0.1-SNAPSHOT.jar 拼写错误,应为 java -jar springboot_01_quickstart-0.0.1-SNAPSHOT.jar表情包

大家在看

  • 为什么JavaScript要书写优化? 258
  • 区块链技术:深度解析与未来展望
  • 支持向量机介绍 446
  • 重新格式化部门表(sql练习) 474
  • c++ 结构体 联合体 枚举 78

最新文章

  • DOM与BOM相关操作
  • Springboot学习笔记
  • 黑马程序员Maven学习笔记
2023年1篇
2022年20篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

木子与金与玉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或 充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值

深圳SEO优化公司南联网站排名优化平湖建网站坑梓百度seo吉祥百度seo惠州企业网站改版大芬SEO按天计费坪山网站排名优化丹竹头网站设计模板荷坳企业网站制作福田模板网站建设福田企业网站设计松岗网站优化推广西乡seo优化广州网站优化按天扣费爱联外贸网站设计光明SEO按天计费石岩百度网站优化排名横岗模板制作坪山SEO按天扣费西乡高端网站设计坂田网站搜索优化塘坑标王惠州建设网站福永阿里店铺托管深圳关键词按天扣费福永外贸网站制作永湖百度竞价包年推广南山网站建设龙岗建网站大浪网站推广方案歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化