Node.js的学习记录
提示:根据视频学习的一些记录
文章目录
一、day3的学习内容
1.npm与包
1).下载包
https://www.npmjs.com/ 全球最大的包共享平台,可以搜索我们需要的包
https://registry.npmjs.org/ 是一个包共享的服务器,可以在这个服务器上下载我们需要的包使用 Node Package Manager (包管理工具)从https://registry.npmjs.org/下载我们做需要的包
未使用npm,代码运如下(示例):
//文件名:11.dataFomat.js
//定义格式化时间的方法
function dataFomat(dtstr){
const dt = new Date(dtstr)
const y = padZero(dt.getFullYear())
const m = padZero(dt.getMonth() + 1)
const d = padZero(dt.getDate())
const hh = padZero(dt.getHours())
const mm = padZero(dt.getMinutes())
const ss = padZero(dt.getSeconds())
return `${y}-${m}-${d} ${hh}:${mm}:${ss}`
}
//定义补全函数
function padZero(n){
return n > 9 ? n : '0' + n
}
//暴露方法
module.exports = {
dataFomat
}
//文件名:test.js
//导入自定义的格式化时间的模块
const TIME = require('./11.dataFomat')
//调用方法,进行时间的格式化
const dt = new Date()
//console.log(dt)
const newDt = TIME.dataFomat(dt)
console.log(newDt)
使用npm,代码运如下(示例):
需要先安装指定名称的包(VScode 终端运行指令)
~npm install 包的完整名称(简写:npm i 包的完整名称)
安装某一个版本的话就是 npm install 包的完整名称@版本号(如:npm install @2.22.2)
运行结果:
PS D:\自学\node.js\day2\code> npm i moment
added 1 package, and audited 2 packages in 2s
found 0 vulnerabilities
//导入需要的包
//注意:导入的名称,就是装包时候的名称
const moment = require('moment')
const dt = moment().format('YYYY-MM-DD HH:mm:ss')
console.log(dt)
在Git上面下载的代码是没有node_modules(内有项目用到的所有包)这个文件夹的,所以,在Git下载项目后,应该运行 npm install这个命令(下载所有的包)。
只需要使用命令 npm uninstall 具体的包名称 来卸载包。
//package.json文件
{
"name": "itheima-tools-xiaochen",
"version": "1.0.0",
"main": "index.js",
"description": "提供了一些格式化时间,HTMLEscape相关的功能",
"keywords": ["itheima","dataFormat","escape"],
"license": "ISC"
}
//index.js文件
//这是包的入口文件
//定义格式化时间的方法
function dataFomat(dtstr){
const dt = new Date(dtstr)
const y = dt.getFullYear()
const m = padZero(dt.getMonth() + 1)
const d = padZero(dt.getDate())
const hh = padZero(dt.getHours())
const mm = padZero(dt.getMinutes())
const ss = padZero(dt.getSeconds())
return `${y}-${m}-${d} ${hh}:${mm}:${ss}`
}
//定义补全函数
function padZero(n){
return n > 9 ? n : '0' + n
}
//定义转义 HTML 字符的函数
function htmlEscape(htmlstr){
return htmlstr.replace(/<|>|"|&/g,(match) => {
switch(match){
case '<':
return '<'
case '>':
return '>'
case '"':
return '"'
case '&':
return '&'
}
})
}
//定义还原 HTML 字符串的函数
function htmlunEscape(str){
return str.replace(/<|>|"|&/g,(match) =>{
switch(match){
case '<':
return '<'
case '>':
return '>'
case '"':
return '"'
case '&':
return "&"
}
})
}
//暴露方法
module.exports = {
dataFomat,
htmlEscape,
htmlunEscape
}
//REANDM.md文件,见D:\StudyMyself\node.js\day2\code\ithema-tools\README.md
//测试index.js中方法的文件
const itheima = require('./ithema-tools/index')
const dt = itheima.dataFomat(new Date())
console.log(dt)
const htmlstr = '<h1 title="abc">这是h1标签<span>123 </span></h1>'
const result = itheima.htmlEscape(htmlstr)
console.log(result)
const result1 = itheima.htmlunEscape(result)
console.log(result1)
//dateFormat.js
//定义格式化时间的方法
//定义格式化时间的方法
function dataFormat(dtstr){
const dt = new Date(dtstr)
const y = dt.getFullYear()
const m = padZero(dt.getMonth() + 1)
const d = padZero(dt.getDate())
const hh = padZero(dt.getHours())
const mm = padZero(dt.getMinutes())
const ss = padZero(dt.getSeconds())
return `${y}-${m}-${d} ${hh}:${mm}:${ss}`
}
//定义补全函数
function padZero(n){
return n > 9 ? n : '0' + n
}
module.exports = {
dataFormat
}
//文件名:htmlEscape.js
//定义转义 HTML 字符的函数
function htmlEscape(htmlstr){
return htmlstr.replace(/<|>|"|&/g,(match) => {
switch(match){
case '<':
return '<'
case '>':
return '>'
case '"':
return '"'
case '&':
return '&'
}
})
}
//定义还原 HTML 字符串的函数
function htmlunEscape(str){
return str.replace(/<|>|"|&/g,(match) =>{
switch(match){
case '<':
return '<'
case '>':
return '>'
case '"':
return '"'
case '&':
return "&"
}
})
}
module.exports = {
htmlEscape,
htmlunEscape
}
//文件名:index.js
//这是包的入口文件
const date = require('./src/dateFormat')
const escape = require('./src/htmlEscape')
//暴露方法
module.exports = {
...date, // ... 是es6新特性,展开运算符
...escape
}
const
2.Express
//1.导入 express
const express = require('express')
//2.创建web服务器
const app = express()
//3.调用app.listen(端口号,回调函数),启动服务器
app.listen(8080,() => {
console.log('express server running at http://127.0.0.1:8080')
})
//1.导入 express
const express = require('express')
//2.创建web服务器
const app = express()
//4.监听客户端的 GET 和 POST 请求,并向客户端相应具体的内容
app.get('/user',(req,res)=>{
//调用express提供的res.send() 方法,向客户端响应一个 JOSN 对象
res.send({ name:"zs",age:20,gender:"男"})
})
app.post('/user',(req,res)=>{
//调用express提供的res.send() 方法,向客户端响应一个 文本字符串
res.send('请求成功')
})
//3.调用app.listen(端口号,回调函数),启动服务器
app.listen(8080,() => {
console.log('express server running at http://127.0.0.1:8080')
})
app.get('/',(req,res) =>{
//通过 req.jqurey 可以获取客户端发送过来的 查询参数
//注意:默认情况下,req.query 是一个空对象
console.log(req.query)
res.send(req.query)
})
//注意:这里的 :id 是一个动态参数 其中的 : 是固定的写法
app.get('/user/:id',(req,res) => {
//req.params 是动态匹配到的 URL 参数,默认也是一个空对象
console.log(req.params)
res.send(req.params)
})
测试的接口:http://127.0.0.1:8080/user/1
测试的结果:
{
"id": "1"
}
//两个参数
app.get('/user/:id/:name',(req,res) => {
//req.params 是动态匹配到的 URL 参数,默认也是一个空对象
console.log(req.params)
res.send(req.params)
})
测试的接口:http://127.0.0.1:8080/user/1/zs
测试的结果:
{
"id": "1",
"name": "zs"
}
//在这里调用express.static()方法,快速对外提供静态资源
app.use(express.static('clock'))
//网址输入:http://127.0.0.1/index.html