最新要闻
- 速递!撑伞也是雨中人什么意思_撑伞也是雨中人这句话什么意思
- Intel或将开发“视频DLSS”同款超分辨率技术:最低仅需10代酷睿
- 天天看点:侠盗猎车手圣安地列斯攻略
- 每日热议!稳了!索尼PS4/PS5之父操刀新一代PS6主机:发布时间及首发大作曝光
- 当前消息!三星Galaxy S23 Ultra又出问题:S Pen被指出现随机断连
- 数码相机卖不动:2023年1月销量大跌36%!单反惨烈
- 世界今日讯!长安深蓝全新中型SUV S7亮相:仪表盘“消失”
- 传大超转职普莱斯上尉
- 环球快播:美国一架飞机在飞行中突然强烈颠簸 竟致1人死亡
- 一口气58首歌 主办方因为周杰伦多唱被罚钱!周董回应:哥无所谓
- 环球热消息:抖店个体和企业开店费用_开店费用
- 世界关注:成都皮肤科医院排名第一_成都皮肤科医院qq
- 每日看点!硬挺不厚 穿着不热!放克纯棉T恤大促:20.1元包邮
- 售价13.99万元起 本田型格HATCHBACK正式上市
- 辣眼睛?网红“安福路小公主”首度回应质疑:给自己外貌打90分 对恶评不在意
- 超百Gbps容量!中星26号卫星成功定点:我国自研卫星平台
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
【全球播资讯】node.js学习技巧
--save
=== 生产环境 dependenciednpm install xxxnpm install xxx --savenpm install xxx -Snpm i xxx -S=== 开发环境 devDependencies在 devDependencies 添加包npm install --save-devnpm install -D
package.json~^区别
~version
大约相当于版本,将更新到所有未来的补丁版本,而不会增加次要版本~1.2.3
将使用从1.2.3
到<1.3.0
~1.2.*
就是修复的版本~version
向后兼容的新功能^2.3.4
到<3.0.0
的版本^2.*.*
这个形式
关闭端口
npm install -g kill-port关闭一个端口kill-port 3208关闭多个端口kill-port 4208 3200
更强大的功能fkil-cli
【资料图】
package-lock.json
对于npm修改node_modules
树或者package.json
它描述了生成的确切树,以便后续安装能够生成相同的树,而不管中间依赖项更新如何
忽略整个存储库的差异,你可以添加到.gitattributes
package-lock.json binanyyarn.lock binary
node.js 退出
process.exit(code)代码结束进程code = 0成功的退出code = 1失败的条件退出命令行退出node //回车.exit
把package.json
所有依赖都更新到最新版本
npm instatl -g npa-check-updatesncu -Unpm install
process.argv
处理命令行的数组第一个参数 node的位置信息
第二个参数当前执行文件的位置信息
第三个到n输入的多个参数用逗号分割
process.argy.slice(2)
node写入文件
const fs = require("fs")
fs.writeFile("./test","我是一个文件",err =>{ if (err) { console.log("报错啦"); }})// 或者fs.writeFileSync("./test.text","我是一个文件",err=>{ if (erm) { console.log("又报错啦") }})const stream = fs.createwriteStream("my_file.txt");stream.once("open",()=>{ stream.write("我是一个小文件123 \n") stream.write("我是一个小文件12333 \n") stream.end();})
node 获取文件夹下的文件名
const fs = require("fs");fs.readdir("./",(err,files)=>{ //})fs.readdinSync("./")
获取文件夹下所有的目录
fse.readdir("./", {withFileTypes:true},(err,files)=>{ const vals = files.filter(val => val.isDirectory()).map(dirent => dirent.name); console.log(vals);})// 同步const vals = fse,readdirSync("./", {withFileTypes: true}).filter(val => val.isDirectory()).map(dirent=>dirent.name);
glob
使用shell
使用的模式匹配文件,比如星号和其他东西
const glob = require("glob");glob("./test1/*.js",{},(er, files) => { console.log(er,files);})
*
0到多?
匹配1个[]
匹配一系列字符,跟正则类似!(aaa|bbb)
module.exports
作为require
调用结果实际返回的对象
test6.js
const myFunc1 = () => { console.log(1);}const myFunc2 = () => { Console.log(2);}exports.myFunc1=myFunc1;exports.myFunc2=myFunc2;
xx.js
const m = require("./test6");m.myFunc1();const {myFunc1}=require("./test6");myFunc1();
如果你想公开一个函数或者一个变量
test6.js
const myFunc1 = () => { console.log(1);}module.exports = myFunc1
使用
express
const express = require("express");const app = express();app.get("/user/:id",(req, res,next) => { console.log(reg.url); // {id:111} console.Log(req.params); // ?id=2 console.log(req.query.id); res.send("Hello World") next();})app.listen(3000)
node 请求接口
const axios=require("axios")axios.get("http://127.0.0.1:3000/user/2").then(res=>{ console.log(res.data);})// http://172.30.75.144:3800/usen/2
process.env
设置环境变量
prgcess.env.PORT || 3200"scripts":{ "start": "PORT=3000 node server.js"}
判断文件是否存在
const isdtfe = path => { try { if (fs.existsSync(path)) { return true } }catch (_) { } return false}console.log(isdtfe("./package.json"));
目录不存在,创建目录
const fs = pequire("fs");const dir ="./tmp";if (!fs.existsSync(dir)) { fs.mkdirSync(dir)}// mkdir
查看文件执行文件
eval(fs.readFileSync("./test6.js")+"")
__filename
和dirname
filename
- 当前模块的文件名,解析的是当前模块的绝对路径` (D:\caogao\express01.js)
__dirname
- 当前模块的目录名(D:\caogao)
process.cwd()
- 返回当前目录
拿到文件的地址,上级或者上上级
const path=require("path");path.join(__dirname,"../../")path.resolve(__dirname,"..")
拿到当前文件名
const path = require("path");path.basename(__filename)
import
异步延迟加载
const fn =async()=>{ const a = await import("./test6.js");}
web 服务器
const express = require("express");const app = express();app.get("/",express.static(--dinname+"/public"))app.listen(3000,()=>{ console.log("启动了");})
插件库http-server
live-server
Buffer缓冲区
buffer是一个全局对象,不需要require
,
Buffer.from("Hello World").toString("base64")Buffer.from("SGVsbG8gV29ybG0=","base64").toString("ascii")
下载文件
app.get("/download",(req, res) => { res.download(`${__dirname}/test1/1.js`)})
请求的文件下载到本地
axios.get("http://127.0.0.1:3000/download").then(res => { const fileName = res.headers["content-disposition"].split("filename="")[1].slice(0, -1) fs.writeFile("./" + fileName, res.data,err=>{ console.log(err); })})
获取完整的url路径
req.protocol +"://" + req.get("host")+ reg.originalUrl
打印报错位置的信息
console.trace("测试1")
监听文件方法变化
npm install nodemonnodemon app.js
用到package.json
{ "scpipts":{ "start":"nodemon test8.js" }}
ts-node运行ts文件
{ "scripts":{ "start-ts": "ts-node 100.ts" }}
复制文件
fs.copyFile("test2.js","test2.js02",err => { console.log(err);})
fs-extra
文件系统的方法,用于替代fs
,fs
模块的所有方法都附加到fs-extra
上
文件操作
copy文件夹(异步的)
const fse = pequire("fs-extra");// 同步fse.copy("./test1","./testCopy1",err=>{ console.log(err);}// promisefse.copy("./test1","./testCopy2").then(() => { console.log("成功"); }).catch(err => { console.log(err); }) try{ fse.copy("./test1","./testCopy2") } catch(e){ console.log(e); }
copySync(src,dest[,options]) 同步
添加过滤
fse.copy("./test1","./testCopy5", { filter: function (src, dest) { // 复制的位置,复制后的所在位置 console.log(src, dest); // 去复制的文件中有1.js if(src.includes("1.js")){ return false } return true }},err =>{console.log(err);})
空目录(异步)
确保目录为空,如果不为空,则删除目录为空,如果该目录不存在,则会创建它,目录本身不会被删除
fse.emptyDir("./testCopy5",err=>{ console.log(err);});.then().catch()try{}catch{}
emptyDirSync
确保文件存在(异步)
别名createFile
如果不存在,则创建这些目录和文件,如果存在则不做改变
fse.ensureFile("./testCopy4/test3/1.Js",err=>{ console.log(err);}
ensureFileSync(同步)
确保目录存在(异步)
别名: mkdirs()
,mkdirp()
确保目录存在,如果不存在,则创建它
fse.ensureDir("./testCopy4/test5",err=>{ console.log(err,"xxx");})
ensureDirSync(同步)
确保链接存在(异步),类似复制黏贴
如果目录不存在则创建它,存在就报错,本质类似于复制黏贴别名:createLink()
fse.ensureLink("./testCopy4/test3/1.js","./testCopy12/test3/2.js",err=>{ console.log(err);})
ensureLinkSync(同步)
移动(异步)
移动文件或者目录
fse.move("./testCopy4/1.js", "./testCopy4/test108/2.js").then(() => { console.Loe("成功");}).catch(err =>{ console.log(err,"失败");})
{overwrite:true}
默认为false,就是不覆盖
fse.move("./1.js","./testCopy4/test100/2.js", {overwrite: true})
moveSync(同步)
输出文件(异步)
跟writeFile
类似,只是父目录不存在,则创建它,有的话,则覆盖
const file ="./testCopy4/test100/110.js";fse.outputFile(file,"我是一个内容",err =>{ console.log(err); fse.readFile(file,"utf8",(err,data)=>{ console.log(err, data); })})==========fse.outputFile(file,"我是一个内容").then(()=>fse.readFile(file,"utf8")).then(data=>{ console.log(data);})
outputFileSync(同步)
输出json文件(异步)
跟writeJson
一样,不存在,则创建它
fse.outputJson(file, {name: "xxx"}).then(()=> fse.readJson(file)).then(data =>{ console.log(data);}).catch(err=>{console.log(err);})
readJsonthrows
设置为false,当json无效不会抛出
fse.readIson(file, {throws: false}, (err, obj) => { console.log(err,obj);})
writeJsonSync(同步)
readJsonSync(同步)
outputJsonSync(同步)
检测路径是否存在
fse.pathExists(file,(err,exists)=>{ if (err) { return; } console.log(exists);// true 存在,false 不存在})
pathExistsSync(同步)
删除
删除文件或者目录,如果路径不存在,则静默不执行
fse.remove("./testCopy4/test100",err=>{ if (err) { console.log(err); }})
removeSync(同步)
node内存不足
node --max-lod-spance-size=4096 xxx.js1GB 10242GB 20483GB 30724GB 40965GB 51206GB 61447GB 71688GB 8192
获取IP
const {networkInterfaces} = require("os");const getIp = () => { const ipObj = {}; const nets = networkInterfaces(); for (let name of Object.keys(nets)) { const item = nets[name]; for (let item of nets[name]) { const familyV4Value = typeof item.family === "string" ? "IPv4" : 4;if (item.family === familyV4Value && !item.internal) { if (!ipObj[name]) { ipObj[name] = []; } ipObj[name].push(item,address); } } } return ipObj}console.log(getIp());
使用库npm install ip
const ip = require("ip");ip.address();
哈希字符串
node内置模块
const crypto = require("crypto");const hash = crypto.createHash("md5").update("我是谁").digest("hex");console.log(hash);
流
const Readable = require("stream").Readable;const s = new Readable();s.push("我是一个Liud1123")//流的结尾s.push(null);// 查春流s.on("data",(data)=>{ console.log(data);}
逐行读取
fse.readFile(" ./test11.js", "utf8",(err,files)=>{ console.log(files.split("\r\n"));})
在原有数据中新添加数据
fse.appendFile("./test11.js", "\r\n 我是一个新添加的一行")
设置 {flag:"a"}
也可以在尾部添加
fse.writeFile("./test11.js", "hello node", {flag: "a"}, err =>{ console.log(err);})
拿到当前操作系统
process.platform// 也可以使用os模块const os = require("os");os.platform()返回值darwin // MacOswin32 win64 // Windonslinex/// Linux
文件扩展名
const path = require("path");path.extname(__filename)_filename.split(".").pop()
特定包是否已全局安装
npm List -g xxx如果没有全局安装输出返回为D:\Program Files\nodejs`-- (empty)
检查脚本是否在node.js 下运行
window 在node.js 中是没有对象的,所以我们可以判断他是在node环境下if(typeof window === "undefined"){ exports.foo = {};}else{ window.foo = {};}
nwjs
基于Chromium
和Node.js,让你直接从DOM/webWorker 调用所有Node.js模块
解压文件
archiver
对tar
和zip
开箱即可支持
glob
工具
npm install glob
通配符查找
const glob = require("glob");// 异步glob("**/*.js",{},(err,files)=>{ console.log(files);})const a=glob.sync("./test1/**/*.js",{})
-
【全球播资讯】node.js学习技巧
--save生产环境dependenciednpminstallxxxnpminstallxxx--savenpminstallxxx-Snpmixxx-S开发环境
来源: -
天天信息:MASA Framework源码解读-01 MASAFacotry工厂设计(一个接口多个实现的最佳姿势)
序言闲来无聊,前段时间发现一个 net开源框架:masaframework。经过一些小型项目使用,发现确实挺不错...
来源: 【全球播资讯】node.js学习技巧
速递!撑伞也是雨中人什么意思_撑伞也是雨中人这句话什么意思
Intel或将开发“视频DLSS”同款超分辨率技术:最低仅需10代酷睿
天天信息:MASA Framework源码解读-01 MASAFacotry工厂设计(一个接口多个实现的最佳姿势)
环球通讯!(数据库系统概论|王珊)第九章关系查询与关系优化:习题
天天看点:侠盗猎车手圣安地列斯攻略
每日热议!稳了!索尼PS4/PS5之父操刀新一代PS6主机:发布时间及首发大作曝光
当前消息!三星Galaxy S23 Ultra又出问题:S Pen被指出现随机断连
全球短讯!Codeforces 1785 E Infinite Game 题解 (图论,自动机,dp)
数字信号处理流程
播报:P8大佬的 62条SQL优化策略,太牛X了!! 收藏起来有大用!!!
学会了Java 8 Lambda表达式,简单而实用
天天最资讯丨修复 Ubuntu 中的 “Key is stored in legacy trusted.gpg keyring” 问题
数码相机卖不动:2023年1月销量大跌36%!单反惨烈
世界今日讯!长安深蓝全新中型SUV S7亮相:仪表盘“消失”
传大超转职普莱斯上尉
环球快播:美国一架飞机在飞行中突然强烈颠簸 竟致1人死亡
一口气58首歌 主办方因为周杰伦多唱被罚钱!周董回应:哥无所谓
环球热消息:抖店个体和企业开店费用_开店费用
世界关注:成都皮肤科医院排名第一_成都皮肤科医院qq
每日看点!硬挺不厚 穿着不热!放克纯棉T恤大促:20.1元包邮
售价13.99万元起 本田型格HATCHBACK正式上市
辣眼睛?网红“安福路小公主”首度回应质疑:给自己外貌打90分 对恶评不在意
【环球播资讯】(数据库系统概论|王珊)第九章关系查询处理和关系优化-第四节:查询优化之物理优化
直播电商名词解释
超百Gbps容量!中星26号卫星成功定点:我国自研卫星平台
全球微动态丨防缩水可机洗 GXG男士针织衫:89元手慢无
Java实战(第二版)读后总结与感想
201球!姆巴佩加冕队史射手王 24岁就成第一人 2.2亿投皇马?
日系车走下神坛?本田中国2月销量大跌三成 已连跌6月
世界看点:国家老年大学正式揭牌!超40万门课程 50周岁以上可以报名
全球自动驾驶公司排名公布 特斯拉再次垫底
环球看点!大熊猫走姿神似《狂飙》高启盛 动物园回应:走路“带风”性格豪放
人脸识别还要蹲车外看摄像头?小鹏致歉:已下架第三方应用
环球观速讯丨上汽奥迪员工内购价最高优惠16万 客服:若倒卖一查到底
当前消息!谈谈 WMTS 中的 TileMatrix 与 ScaleDenominator
当前滚动:《街霸6》嘉米伸懒腰 又一次引发网友二创热潮
全球今日讯!day01-项目介绍+SSM环境搭建
快讯:送你5款免费好玩的小游戏-搜嗖工具箱
世界热文:男子微波炉加热蛋白吃饭时爆炸 家属:很后怕 幸好还没吃进嘴里
焦点观察:95后考研落榜父母上岸疑似是营销旧文:当事人已删帖清号
今日精选:《狂飙》反派戏九成是香港导演拍摄 代表作《无间道》:网友惊叹
特斯拉召回3470辆汽车:广东又现失控连撞多车冲毁店门 潮州事故争议还在
天天观速讯丨资深教师称有学校已开始裁减英语老师:有专家称不支持取消英语主科地位建议
天天实时:黑曼巴科比还在吗_黑曼巴科比
当前头条:Paper Reading: How good are query optimizers, really?
全球实时:使用ELRepo升级CentOS内核
天天热点!使用招商银行云直连服务提现
新动态:TCP通信聊天服务端和客户端(C/C++语言开发)附完整源码
焦点信息:“学雷锋” 护平安
绝了!民间大神将手机魔改成30000mAh电池:续航BT、可两周一充
【环球报资讯】可算盼到!苹果一大波春季新品要来了:黄色款iPhone 14在列
全球观热点:二叉树遍历的操作与实现
神速!Android 15全球首曝:代号“香草冰淇淋”相当甜美
正直播:感动中国2022年度人物盛典!名单揭晓:满满正能量
全球热资讯!代表谈中传硕士在火锅店当保洁:建议大学生先就业再择业
简讯:库存多到爆!今年才两个月 SSD价格就跌超3成:还会更便宜?
环球热点!男子高速公路狂飙120km/h看《狂飙》:不碰方向盘、不看正前方
小米平板6系列来了:外形、CPU配置大曝光!确认新增NFC
焦点速读:真心恐怖!南极洲深海拍到罕见冥河水母:触手约10米长
【世界热闻】无/低代码开发平台(产品)
跳过中考、高考、研考!15岁女生被西交大少年班录取:8年本硕连读
单踏板模式害死人?广东一特斯拉疑失控连撞多车冲毁店门 两人受伤现场惨
The Missing Semester - 第五讲 学习笔记
记录--在Vue3这样子写页面更快更高效
全球今日讯!打开MASA Blazor的正确姿势5:插槽
全球焦点!弯道超车成功!中国新能源汽车产销量全世界第一
每日关注!“准点下班被辞”女子申请赔偿一个月工资 公司回应:等仲裁结果
定位解析一个因脚本劫持导致webpack动态加载异常的问题
全球热文:python名称空间和作用域
天天实时:定位Dll加载异常的方法
环球热资讯!《进击的巨人》最终季完结篇开播 前篇拿下豆瓣9.7分:改编超越原作
核心部件100%国产!东风新一代商乘通用氢燃料电池产品完成
世界热文:同档网络无敌!一加Ace 2V搭载自研的游戏云专网技术
第五章 运输层
代表建议试行十二年义务教育:中考定终身太早 拒绝小学初中内卷
一男子和峨眉山猴子练搏击互殴 当事人回应:条件反射、请勿模仿
【全球新要闻】(数据库系统概论|王珊)第九章关系查询处理和关系优化-第二节:查询优化
轻松玩转Makefile | 企业项目级Makefile实例
精选! 《狂飙》“大嫂”高叶上手小米13:徕卡人像实拍样张美呆
天天时讯:3端通用!腾讯视频VIP会员年卡148元到手
当前快讯:董明珠称格力不看文凭只看能力:研究生到一线生产线非人才
济南动物园网红小黑猩猩“柒仔”去世:初步研判系突发疾病死亡
每日热议!奔驰4S店展车充新车 女子上门维权:被骗了、将走法律程序
天天快资讯丨突发!蔚来前实习生称遭同事强奸未遂 反被拒绝留用!公司:已成立调查组
“清籁”琴
环球观点:5-Nacos注册中心
灭蟑螂小窍门厨房_灭蟑螂小窍门
关于目录问题的总结-Python
天天即时看!实现js继承的几种方式以及他们的优缺点
今热点:AI修复图片画质和视频画质的方法
【热闻】数学建模(一):LP 问题
【新要闻】如何去除新家的甲醛_如何去除新家的甲醛
2023年2月随笔-难产的“学系列”
关注:乘风破浪,遇见最佳跨平台跨终端框架.Net Core/.Net生态 - 深入OpenAI与马斯克、微软的秘密,通过API轻松接入ChatGPT
天天热推荐:git clone的时候出现出现 fatal: unable to access 'https://github.com/...':OpenSSL
第125篇: 期约Promise基本特性
环球速递!kong和konga的安装部署
视焦点讯!腾讯云短信的使用方法
06while循环