大家好,今天给大家分享一下我最近学习的一些有关Node.js 的知识。如果你觉得这些知识也很有用,那就请点个赞并收藏本文吧,让更多的朋友也能受益于这些知识。如果有任何错误,请告知我。谢谢大家的支持!
Node.js是一个javascript运行环境。它让javascript可以开发后端程序,实现几乎其他后端语言实现的所有功能,可以与PHP、Java、Python、.NET、Ruby等后端语言平起平坐。
Nodejs是基于V8引擎,V8是Google发布的开源JavaScript引擎,本身就是用于Chrome浏览器的js解释部分,但是Node.js的作者Ryan Dahl,把V8引擎搬到了服务器上,用于做服务器的软件。
http://nodejs.cn/learn/how-much-javascript-do-you-need-to-know-to-use-nodejs
Node.js 可以解析JS代码(没有浏览器安全级别的限制)提供很多系统级别的API,如:
Node.js中只有JavaScript的ECMAScript部分,没有DOM和BOM!!!
node -v
,回车后查看node版本号node -v
,回车后查看node版本号Node.Js的执行
node
,回车,进入node编程状态ctrl+c
,两次.exit
,回车cd d:资料/node学习/code/day06
dir
或 ls
命令,能查看到要执行的文件为准node 文件名
,回车执行cd ../
cd 指定文件夹名
cd 学习
cd d:资料/node学习/code/day06
盘符:
d:
或c:
dir
cls
cd ../
cd 指定文件夹名
cd 学习
cd 资料/node学习/code/day06
ls
clear
http
,fs
,querystring
,url
require('模块名')
seajs.js
;AMDrequire.js
;ES6: export
/ import
require('模块名')
exports.自定义属性 = 值
module.exports = { 自定义属性:值 }
Node.js的模块分类
const 变量 = require("模块名");
变量.xxx()
fs
,url
,querystring
,http
,path
npm
下载第三方模块const 变量 = require("模块名");
变量.xxx()
exports.xxx = 功能或对象
const 变量 = require("路径+模块名");
变量.zzz()
// 处理路径
const path = require("path")
// console.log(path);
// 将以下路径名拼接成完整路径
// abc
// qwe
// asd
// xxx.txt
// windows和mac内路径的显示格式,不一样
// windows:c:\abc\qwe\asd\index.html
// mac:abc/qwe/asd/zxc/index.html
// 拼接路径,会根据不同的操作系统,自动拼接成符合要求的路径
console.log(path.join("abc", "qwe", "asd", "xxx.txt"));
// 能识别路径中的..,会抵消一层路径,表示上层路径
console.log(path.join("abc", "qwe", "asd", "..", "xxx.txt"));
console.log("abc/qwe/asd/../index.html");
// 获取当前文件所在文件夹的路径
// console.log( __dirname );
// 获取当前文件的路径
// console.log( __filename );
const http = require('http');
const server = http.createServer((request, response)=>{});
// 返回http对象req.url
地址,提取地址栏数据req.on('data|end');
提取非地址栏数据,所有的http[s]都会触发data事件和end事件res.writeHead(200,{'Content-Type':'text/html;charset=utf-8'});
res.write(字符/数据);
res.end();
结束响应server.listen(端口,[地址],[回调函数]);
nodemon
npm install nodemon -g
nodemon 文件
const fs = require('fs');
fs.readFile('路径',[配置],回调(err,data))
data.toString("utf-8")
转换格式let data = fs.readFileSync('路径',[配置])
try-catch
语句捕获同步语句的错误fs.writeFile('路径','内容',回调(err))
let data = fs.writeFileSync('路径','内容')
fs.unlink('路径',回调)
fs.rename('老文件名','新文件名',(err)=>{})
href``src``locaction.href
fs.readFile(文件名,[编码],回调(err,data));
const fs = require("fs")
// console.log(fs);
// 增(写)
// 改
// fs.writeFile("./hello.txt", "这是文件内容", err=>{
// console.log(err);
// })
// fs.writeFile("./hello.txt", "这是文件内容:hahahaha", err=>{
// console.log(err);
// })
// 改名
// fs.rename("./hello.txt", "./world.txt", err=>{
// console.log(err);
// })
// 查(读)
// fs.readFile("./world.txt", "utf-8", (err, data)=>{
// console.log(err);
// console.log(data);
// });
// 删
// fs.unlink("./world.txt", err=>{
// console.log(err);
// })
// console.log(1);
// fs.readFile("./hello.txt", "utf-8", (err, data)=>{
// console.log(data);
// });
// console.log(2);
// 以上都是异步方法
// 大文件
// 小文件
// 以下为同步方法
console.log(1);
try {
const data = fs.readFileSync("./hello.txt", "utf-8");
console.log(data);
} catch (error) {
console.log(error);
}
console.log(2);
// fs.writeFileSync()
// fs.renameSync()
// fs.unlinkSync()
const url = require("url");
const str = "http://localhost:8002/aaa?username=sdfsdf&content=234234#title4";
url.parse(str, true)
url.format(obj)
const url = require("url");
// console.log(url)
// 解析url字符
const str = "http://www.baidu.com:3000/abc/asd?kd=上海&key=1q344#top";
console.log( url.parse(str, true) );
// 解析url对象
const urlObj = {
protocol: 'http:',
slashes: true,
auth: null,
host: 'www.baidu.com:3000',
port: '3000',
hostname: 'www.baidu.com',
hash: '#top',
search: '?kd=上海&key=1q344',
query: { kd: '上海', key: '1q344' },
pathname: '/abc/asd',
path: '/abc/asd?kd=上海&key=1q344',
href: 'http://www.baidu.com:3000/abc/asd?kd=上海&key=1q344#top'
}
console.log( url.format(urlObj) )
URL.js
const str = "http://www.baidu.com:3000/abc/asd?kd=上海&key=1q344#top";
const url = new URL(str);
console.log(url);
console.log(url.searchParams);
console.log(url.searchParams.kd);
console.log(url.searchParams.key);
console.log(url.searchParams.get("kd"));
console.log(url.searchParams.get("key"));
const querystring = require("querystring");
const str = "key=value&key2=value2";
querystring.parse(str)
const obj = {a:10, b:20}
querystring.stringify(obj)
const str = 'id=3&city=北京&url=https://www.baidu.com';
querystring.escape(str);
const str = 'id%3D3%26city%3D%E5%8C%97%E4%BA%AC%26url%3Dhttps%3A%2F%2Fwww.baidu.com';
querystring.unescape(str);
const qs = require("querystring");
console.log(qs)
const str1 = "username=admin&password=123456&tel=17600901915";
console.log( qs.parse(str1) );
const str2 = "username=admin; password=123456; tel=17600901915";
console.log( qs.parse(str2, "; ") );
const obj = {
username: 'admin',
password: '123456',
tel: '17600901915'
}
console.log( qs.stringify(obj) )
// 将中文转码
console.log( qs.escape("上海") );
// 转成中文
console.log( qs.unescape("%E4%B8%8A%E6%B5%B7") );
https://registry.npmjs.org
http://registry.npmmirror.com
npm config set registry http://registry.npmmirror.com
npm init
npm init -y
全部选项默认{
"name": "myapp", // 项目名称,不要和依赖的包重名
"version": "0.0.1", // 版本
"description": "test and play", // 项目描述
"main": "index.js", // 入口文件
"dependencies": { // 生产依赖,上线也要用
"jquery": "^3.2.1",
"express": "^4.17.1"
},
"devDependencies": { // 开发依赖,上线就不用
"node-sass": "^2.0.0"
},
"scripts": { // 命令行
"test": "命令行",
},
"repository": { // 仓库信息
"type": "git",
"url": "https://gitee.com/liyangyf/hammer.git"
},
"keywords": [ // 项目关键词
"test",'xx','oo'
],
"author": "杨树林", // 作者
"license": "ISC", // 认证
"homepage": "https://gitee.com/liyangyf/hammer.git" // 主页地址
}
安装模块的环境位置
npm run 命令名
执行npm install 包名 -g
install
可简写为 i
npm uninstall 包名 -g
uninstall
可简写为 uni
npm run 命令名
执行require
函数引入即可npm i 包名 --save
简写为:npm i 包名 -S
npm i 包名 --save-dev
简写为:npm i 包名 -D
npm list -g
(不加-g,列举当前目录下的安装包)npm outdated
npm info 包名
(详细信息)npm info 包名 version
(获取最新版本)npm install
^x.x.x
约束主版本,后续找最新~x.x.x
保持前两位不变,后续找最新*
最新x.x.x
定死了一个版本npm install 包名@版本号
npm i nodemon -g
nodemon 文件名
ctrl + c
-> npm uni 包名
-> npm cache clean --force
(清除缓存) -> 换网 -> npm i 包名
配置第三方命令窗口的管理员权限
ebpack
npm list -g
(不加-g,列举当前目录下的安装包)npm outdated
npm info 包名
(详细信息)npm info 包名 version
(获取最新版本)npm install
^x.x.x
约束主版本,后续找最新~x.x.x
保持前两位不变,后续找最新*
最新x.x.x
定死了一个版本npm install 包名@版本号
npm i nodemon -g
nodemon 文件名
ctrl + c
-> npm uni 包名
-> npm cache clean --force
(清除缓存) -> 换网 -> npm i 包名
配置第三方命令窗口的管理员权限
https://blog.csdn.net/weixin_41636483/article/details/113376766?spm=1001.2014.3001.5501