我是靠谱客的博主 含蓄日记本,最近开发中收集的这篇文章主要介绍Nodejs使用前准备,基本使用、常用命令Ⅰ- 壹 - nodejsⅡ - 贰 - Nodejs模块Ⅳ - 肆 - Node的使用0 - 0 - 知识点:,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Ⅰ- 壹 - 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命令简介
1nvm version或nvm -v查看nvm版本
2nvm install 10.6.2或者nvm i XXXX安装node10.6.2版本(附带安装npm)
3nvm uninstall 10.6.2卸载node10.6.2版本
4nvm list查看node版本
5nvm use 10.6.2将node版本切换到10.6.2版本
6nvm root查看nvm安装路径
7nvm install latest下载最新的node版本和与之对应的npm版本
(2) nrm 镜像管理

安装:

yarn global add nrm
编号nrm命令简介
1nrm ls查看所有的镜像
2nrm add name url添加自定义的npm源,name 为自定义源名称 ,url为npm源链接
3nrm use name切换npm镜像 name 为自定义源名称

2 npm和yarn

npm的海量模块,使得我们开发复杂的NodeJs的程序变得更为简单。www.npmjs.com

(1) npm常用命令
编号npm命令简介
1npm install XXXX安装Node包(XXXX包名称)标注a
2npm uninstall XXXX卸载Node包(XXXX包名称)–save-dev(本地项目卸载)/-g(全局包卸载)
3npm config get prefix查看全局安装路径
4npm init初始化目录生成package.json配置文件
5npm cache clean删除安装包缓存
6npm update XXXX更新安装包
7npm ls查看本地安装包
8npm root查看当前包安装路径 npm root -g 查看全局包安装路径
9npm run XXX运行某一个命令
10npm 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命令简介
1yarn add XXXX安装Node包(XXXX包名称)标注a
2yarn remove XXXX卸载Node包(XXXX包名称)yarn global remove X(删除全局)
3yarn install或 yarn安装package.json 中的所有文件
4yarn update XXXX更新安装包 不填写则安装全部
5yarn list列出当前项目的依赖
6yarn config list显示当前配置
7yarn init初始化目录生成package.json配置文件
8yarn 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_globalD: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
  1. 首先在终端输入命令npm config get prefix 查看npm安装路径,

  2. 复制路径打开我的电脑找到该路径下=>node_modules=>可以看到所有的安装模块找到nodemon找到bin然后复制路径

  3. 在系统环境变量的path中添加刚刚复制的路径

    我的电脑右击属性=>高级系统设置=>环境变量=>系统变量中找到path把刚刚复制的路径新建添加

  4. 重启vscode

b 解决方法2 也可以解决yarn报错问题
  1. 搜索找到powerShell以管理员的身份打开

  2. 输入set-ExecutionPolicy RemoteSigned

  3. 选择 A 或者 Y,然后重启

Ⅱ - 贰 - Nodejs模块

因为node.js是基于CommonJs规范的,所以在node.js模块系统中,每个文件都被视为是一个独立的模块。

node.js模块主要分为三类:内置模块、第三方模块、自定义模块。

一 第三方模块

在 npmjs.com官网上,我们可以下载别人已经封装好的模块到自己的项目中使用,这些模块都是第三方模块

例如 jquer 安装的时候会根据后缀安装 -g全局安装会安装在本地 不填写默认安装在本项目的node_modules(没有的话会自动创建)文件目录下

二 自定义模块

自定义模块取自网络

我们可以从官网上下载别人写好的模块直接使用,也可以按照自己的项目需要,封装模块,发布到官网上,让别人来下载使用。

这里说一下npm包发布的流程:

  1. 注册npmjs官网账号,官网地址:https://www.npmjs.com/;
  2. 创建你要发布的项目,创建完成后,在终端执行npm init -y, 生成Package.json 文件,填写包的名称、版本号、入口文件等,要保证包的名称在官网上是唯一的;
  3. 执行发布,终端输入npm login回车,输入账号,密码,登录npmjs官网;然后输npm publish,就可以将包发布到官网了;
  4. 查看,打开npmjs网站 ,进入个人中心–>packages,就可以看到发布的包;
  5. 更新,修改完代码内容后,改变package.json里面版本号,再执行npm publish,就可以更新发布了,在官网上可以看到自己发布过的版本;
  6. 使用方式,终端中使用npm i 包名称安装包,然后在文件中使用require(包名称),将包导入自己的项目中,就可以使用了;
  7. 撤销已经发布的包版本,终端中输入npm unpublish 包名称@版本号

三 内置模块

(0)常用Nodejs模块
内置模块名称简介
url用于处理与解析 URL
querystring用于解析和格式化 URL 查询字符串;
httpHTTP服务;
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 - 知识点:所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(40)

评论列表共有 0 条评论

立即
投稿
返回
顶部