概述
Ⅰ- 壹 - nodejs
一 什么是Nodejs
Nodejs是使用了Javascript这门语言来开发。
Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。
Node.js 使用了一个事件驱动、非阻塞式 I/O 的模型,使其轻量又高效。
Node.js 的包管理器 npm,当你安装Node的时候就自动安装了npm,是全球最大的开源库生态系统,简单的说 Node.js 就是运行在服务端的 JavaScript。
Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台。
Node.js是一个事件驱动I/O服务端JavaScript环境,基于Google的V8引擎,V8引擎执行Javascript的速度非常快,性能非常好。
Node.js中 DOM和BOM不存在所以事件不存在,使用req.on绑定事件
俗话
就是一个 “软件”, 只不过这个软件是用来执行 js 文件
环境就是配置再你电脑里面的一个程序, 不存在桌面图标, 依靠命令行
二 Nodejs和前端js有什么区别
1 前端:
有三部分组成
(1)DOM -(文档对象模型 )
是由html 给的, 因为你的 js 文件是在 html 文件里面被引入执行的
(2)BOM-(浏览器对象模型)
是由浏览器 给的, 因为你的 js 文件是在浏览器环境下运行的
(3) ECMAScript
js 的语法, 代码怎么写
2 nodejs后端:
(1) ECMAScript
使用的是js 的语法
(2)操作电脑的能力
node 给的, 因为你的 js 文件是在命令行运行, 再电脑系统里面运行
三 使用Node之前的准备
先安装nvm,下载node会自动有npm命令,然后下载yarn(以后下载尽量使用yarn)
1 NVM node版本管理器和nrm镜像管理
项目中可能遇到两个项目node版本不一样,nvm可以安装多个版本node,不同版本随意切换,切记
安装完NVM之后在进行Nodejs的安装从官网上下载node 安装包
进行安装,官网下载地址:http://nodejs.cn/download/ 按装之后会自动安装npm
NVM下载地址:https://github.com/coreybutler/nvm-windows/releases
解决 nvm 下载慢的问题 (选择性使用cnpm,正常不会有问题)
在程序安装目录下找到 settings.txt,添加下面两行。
- node_mirror: https://npm.taobao.org/mirrors/node/
- npm_mirror: https://npm.taobao.org/mirrors/npm/
(1)nvm常用指令
编号 | NVm命令 | 简介 |
---|---|---|
1 | nvm version或nvm -v | 查看nvm版本 |
2 | nvm install 10.6.2或者nvm i XXXX | 安装node10.6.2版本(附带安装npm) |
3 | nvm uninstall 10.6.2 | 卸载node10.6.2版本 |
4 | nvm list | 查看node版本 |
5 | nvm use 10.6.2 | 将node版本切换到10.6.2版本 |
6 | nvm root | 查看nvm安装路径 |
7 | nvm install latest | 下载最新的node版本和与之对应的npm版本 |
(2) nrm 镜像管理
安装:
yarn global add nrm
编号 | nrm命令 | 简介 |
---|---|---|
1 | nrm ls | 查看所有的镜像 |
2 | nrm add name url | 添加自定义的npm源,name 为自定义源名称 ,url为npm源链接 |
3 | nrm use name | 切换npm镜像 name 为自定义源名称 |
2 npm和yarn
npm的海量模块,使得我们开发复杂的NodeJs的程序变得更为简单。www.npmjs.com
(1) npm常用命令
编号 | npm命令 | 简介 |
---|---|---|
1 | npm install XXXX | 安装Node包(XXXX包名称)标注a |
2 | npm uninstall XXXX | 卸载Node包(XXXX包名称)–save-dev(本地项目卸载)/-g(全局包卸载) |
3 | npm config get prefix | 查看全局安装路径 |
4 | npm init | 初始化目录生成package.json配置文件 |
5 | npm cache clean | 删除安装包缓存 |
6 | npm update XXXX | 更新安装包 |
7 | npm ls | 查看本地安装包 |
8 | npm root | 查看当前包安装路径 npm root -g 查看全局包安装路径 |
9 | npm run XXX | 运行某一个命令 |
10 | npm install | 安装package.json 中的所有文件 |
a 标注a
npm install
(1)npm install XXXX-g 为全局安装
(2)npm install XXXX@5.1.1 安装特定版本插件
(3)npm install XXXX–save 会在package.json的dependencies属性下添加XXXX即发布依赖时候任依赖的插件
- –save是对生产环境所需依赖的声明(开发应用中使用的框架,库),会压缩到线上
(4)npm install XXXX–save-dev 会在package.json的devDependencies属性下添加XXXX依赖 即开发依赖插件
- –save-dev是对开发环境所需依赖的声明(构建工具,测试工具).正常使用npm install时,会下载dependencies和devDependencies中的模块,不会压缩到线上仅仅作为开发时候使用例如 jQuery
(2) Yarn是什么?
“Yarn是由Facebook、Google、Exponent 和 Tilde 联合推出了一个新的 JS 包管理工具 ,正如官方文档中写的,Yarn 是为了弥补 npm 的一些缺陷而出现的。”这句话让我想起了使用npm时的坑了:
npm install
的时候巨慢。特别是新的项目拉下来要等半天,删除node_modules,重新install的时候依旧如此。- 同一个项目,安装的时候无法保持一致性。由于package.json文件中版本号的特点,下面三个版本号在安装的时候代表不同的含义。
yarn安装
npm i yarn -g
(4) Yarn常用命令
和npm类似
编号 | yarn命令 | 简介 |
---|---|---|
1 | yarn add XXXX | 安装Node包(XXXX包名称)标注a |
2 | yarn remove XXXX | 卸载Node包(XXXX包名称)yarn global remove X(删除全局) |
3 | yarn install或 yarn | 安装package.json 中的所有文件 |
4 | yarn update XXXX | 更新安装包 不填写则安装全部 |
5 | yarn list | 列出当前项目的依赖 |
6 | yarn config list | 显示当前配置 |
7 | yarn init | 初始化目录生成package.json配置文件 |
8 | yarn run XXX | 运行某一个命令可简写yarn XXXX |
a 标注a
yarn install
(1)yarn global add XXXX 为全局安装
(2)yarn add XXXX @5.1.1 安装特定版本插件
(3)yarn add XXXX–save yarn默认会在package.json的dependencies属性下添加XXXX即发布依赖时候任依赖的插件
(4)yarn add XXXX–dev 会在package.json的devDependencies属性下添加XXXX依赖 即开发依赖插件 yarn 简写 -D
b yarn修改全局安装路径和环境配置
解决使用yarn安装的插件不可用的情况
在终端中
#1.改变npm 全局安装位置
npm config set prefix "你的磁盘路径"
#这里是我的路径
npm config set prefix "D:appCachenodejsnode_global"
#2. 改变 npm 缓存位置
npm config set cache "你的磁盘路径"
#这里是我的路径
npm config set cache "D:appCachenodejsnode_cache"
然后配置一下系统环境变量
将 D:appCachenodejsnode_global
和 D:appCachenodejsnode_globalnode_modules
这两个添加到你的系统环境变量中。
我们需要将 D:appCacheyarnglobalnode_modules.bin
整个目录 添加到系统环境变量中去,否则通过yarn 添加的全局包 在cmd 中是找不到的。
检查当前yarn 的 bin的 位置
yarn global bin
检查当前 yarn 的 全局安装位置
yarn global dir
3 nodemon实时监听器
用来监视node.js应用程序中的任何更改并自动重启服务,非常适合用在开发环境中。
终端输入
npm install -g nodemon
安装完 nodemon 后,就可以用 nodemon 来代替 node 来启动应用:
nodemon [node.js文件](相当于 node [node.js文件])
(1) nodemon报错解决
在使用的时候可能会遇到这种情况nodemon无法使用的情况,首先是否全局安装npm install nodemon -g
如果还是不可以那就是没有配置环境变量以步骤
a 解决方法1
-
首先在终端输入命令
npm config get prefix
查看npm安装路径, -
复制路径打开我的电脑找到该路径下=>node_modules=>可以看到所有的安装模块找到nodemon找到bin然后复制路径
-
在系统环境变量的path中添加刚刚复制的路径
我的电脑右击属性=>高级系统设置=>环境变量=>系统变量中找到path把刚刚复制的路径新建添加
-
重启vscode
b 解决方法2 也可以解决yarn报错问题
-
搜索找到powerShell以管理员的身份打开
-
输入set-ExecutionPolicy RemoteSigned
-
选择 A 或者 Y,然后重启
Ⅱ - 贰 - Nodejs模块
因为node.js是基于CommonJs规范的,所以在node.js模块系统中,每个文件都被视为是一个独立的模块。
node.js模块主要分为三类:内置模块、第三方模块、自定义模块。
一 第三方模块
在 npmjs.com官网上,我们可以下载别人已经封装好的模块到自己的项目中使用,这些模块都是第三方模块
例如 jquer 安装的时候会根据后缀安装 -g全局安装会安装在本地 不填写默认安装在本项目的node_modules(没有的话会自动创建)文件目录下
二 自定义模块
自定义模块取自网络
我们可以从官网上下载别人写好的模块直接使用,也可以按照自己的项目需要,封装模块,发布到官网上,让别人来下载使用。
这里说一下npm包发布的流程:
- 注册npmjs官网账号,官网地址:https://www.npmjs.com/;
- 创建你要发布的项目,创建完成后,在终端执行
npm init -y
, 生成Package.json 文件,填写包的名称、版本号、入口文件等,要保证包的名称在官网上是唯一的; - 执行发布,终端输入
npm login
回车,输入账号,密码,登录npmjs官网;然后输npm publish
,就可以将包发布到官网了; - 查看,打开npmjs网站 ,进入个人中心–>packages,就可以看到发布的包;
- 更新,修改完代码内容后,改变package.json里面版本号,再执行
npm publish
,就可以更新发布了,在官网上可以看到自己发布过的版本; - 使用方式,终端中使用
npm i 包名称
安装包,然后在文件中使用require(包名称)
,将包导入自己的项目中,就可以使用了; - 撤销已经发布的包版本,终端中输入
npm unpublish 包名称@版本号
;
三 内置模块
(0)常用Nodejs模块
内置模块名称 | 简介 |
---|---|
url | 用于处理与解析 URL |
querystring | 用于解析和格式化 URL 查询字符串; |
http | HTTP服务; |
path | 路径,用于处理文件路径和目录路径; |
fs | 文件系统,用于文件的读写操作; |
events | 事件触发器,用于事件的派发与监听; |
(1)url
- hostname,获取及设置 URL 的主机名部分,它和host的区别是,它不包含端口。
- pathname,获取及设置 URL 的路径部分,也就是端口号后面的所有内容。
- port,获取及设置 URL 的端口部分。http协议的默认端口号是80,https协议的默认端口号是443。ftp协议的默认端口号是21。
- search,获取及设置 URL 的序列化查询部分。也就是 ?号后面的所有内容,包含?号。
url.parse() 解析传进来的路径。
(2) querystring
-
querystring.parse()
将 URL 查询字符串 str 解析为键值对的集合。 -
querystring.stringify()
将传入的对象拼接成字符串。
(3) http
-
http.createServer
:创建server对象 -
http.get
:执行http get请求 -
http.request()
:一般用来发送POST请求。
(4) path
path.basename
:返回一个路径的最后一部分path.dirname
:返回一个路径的目录名path.extname
:返回一个路径的扩展名path.join
:用于拼接给定的路径片段path.normalize
:将一个路径正常化
标注
以上详解转至另一位大神地址:https://blog.csdn.net/Charissa2017/article/details/104951488
Ⅳ - 肆 - Node的使用
一 ES6和Nodejs导出文件和导入文件
在Nodejs中导出带有./为自定义模块 内置的不需要添加路径
//es6的模块导出
export default class Box{}
//node的模块导出
module.exports=obj;//默认导出一个对象
exports.o=o;
exports.o1=o1;
exports.abc=abc;
// node导出多个对象 */
//es6中导入模块
import Box from "./js/a.js";
//node中导入模块
var obj=require("./js/a");
obj.a();
obj.b();
二 创建一个Node服务
(1) 统配
const http = require('http')
var app = http.createServer((request, response) => {
request.method; //判断是GET请求还是POST请求
request.url; //路径端口号后面的内容
request.header; //请求头内容
request.on("data",()=>{}); //收到客户端发来的数据
request.on("end",()=>{ //数据接收完毕
response.setHeader(); //设置响应头内容
response.write(str); //发送数据给客户端
response.end(); //响应完毕
});
})
app.listen(3000, () => { //开启服务
console.log('localtion start 3000')
})
(2) 前后通信
在html中的请求数据的接口要对应请求的服务器接口,因为是本地服务器所以域名为当前计算机的域名
index.js
//载入http内置模块
var http = require("http");
//内置模块 将 URL 查询字符串 str 解析为键值对的集合。
var querystring = require("querystring");
var server = http.createServer(function (req, res) {
// req 请求对象
// res 响应对象
var data = "";
//收到客户端发过来的数据
req.on("data", function (_data) {
data += _data;
});
//数据接收完毕
req.on("end", function () {
//对数据的处理 判断数据去除空格后长度
if (data.trim().length === 0) data = req.url.split("?")[1];
else {
try {
//把数据转换为数组
data = JSON.parse(data);
} catch (error) {
}
}
if (typeof data === "string") {
try {
//将 URL 查询字符串 str 解析为键值对的集合。
data = querystring.parse(data);
} catch (error) {
res.end("错误的消息");
return;
}
}
//
if (!data) {
res.end("错误的消息");
return;
}
//200 为响应码
res.writeHead(200, {
//解决乱码问题
"content-type": "text/html;charset=utf-8",
//允许跨域请求 *代表通配符
"Access-Control-Allow-Origin": "*"
// cors跨域
});
res.write((data.user ? data.user : "你没有user") + "欢迎光临");//发送数据给客户端
res.end();//响应完毕
})
});
//监听服务器访问设置端口号4006
//listen 参数有三个分别是 端口号 IP地址 回调函数
server.listen(4006, "10.9.65.202", function () {
console.log("创建服务成功")
});
index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<form action="http://10.9.65.202:4006" method="GET">
<input type="text" name="user">
<button type="submit">提交</button>
</form>
</body>
//或者使用Ajax 请求数据
<-- <script>
var obj={
user:"xietian",
age:30,
sex:"男"
}
var xhr=new XMLHttpRequest();//XMLHTTPRequest
xhr.addEventListener("load",loadHandler);
xhr.open("GET","http://10.9.65.239:4006?user=xietian");
xhr.send();
function loadHandler(e){
console.log(xhr.response);
}
</script>-->
</html>
0 - 0 - 知识点:
一 全局变量
__dirname
:当前文件的目录
__filename
:当前文件的绝对路径
最后
以上就是含蓄日记本为你收集整理的Nodejs使用前准备,基本使用、常用命令Ⅰ- 壹 - nodejsⅡ - 贰 - Nodejs模块Ⅳ - 肆 - Node的使用0 - 0 - 知识点:的全部内容,希望文章能够帮你解决Nodejs使用前准备,基本使用、常用命令Ⅰ- 壹 - nodejsⅡ - 贰 - Nodejs模块Ⅳ - 肆 - Node的使用0 - 0 - 知识点:所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复