node_相关知识点

Node.js采用谷歌的V8引擎,是一个服务器端的、非阻断式I/O的、事件驱动的JavaScript运行环境,可优化应用程序的传输量和规模。传统服务器多线程(一个请求一个线程)易阻塞。

一、线程、进程:

进程:进程负责为程序运行提供必备的环境,相当于工厂车间。

线程:计算机中最小计算单位,负责执行进程中的程序,相当于工人。

单线程:js和浏览器是单线程。是一个人干活。

多线程:多个人干活,性能好,缺点是多线程容易导致并发问题。

二、Node内容:

  1. Node是一个ES标准的实现,Node也是一个JS引擎。
  2. 通过Node可以使JS代码在服务器端执行。
  3. Node仅对ES标准实现,所以在Node中不包含DOM和BOM(脱离浏览器则不涉及BOM和DOM)。
  4. Node中可以使用除了BOM和DOM外的所有的内建对象(String、Number、Boolean、Math、Date、RegExp、Function、Object、Arra、Console等)。
  5. Node用来在后台编写单线程服务器,Node处理请求是单线程的,但在后台有一个I/O线程池。
  6. 解决单线程缺点:分布式(多个Node服务器,增加服务器数量)。

三、Node的用途:

  1. Web服务器API,比如REST。
  2. 实时多人游戏。
  3. 后端的Web服务,例如跨域、服务端的请求。
  4. 基于Web的应用。
  5. 多客户端的通信,如即时通信。

四、Node下载:

node官网下载最新版本icon-default.png?t=N7T8https://nodejs.org/en/

指定其他老版本

下载指定的版本,就把后缀的这个16改成指定数字,windows选择里面的64位的msi文件下载

下载老版本icon-default.png?t=N7T8https://nodejs.org/download/release/latest-v16.x/

下载并完成安装。在node 安装地址创建两个文件 【node_cache】和【node_global】

创建完后在cmd内运行命令:

//记得替换为你自己的实际文件地址npm config set prefix "D:\programfiles\nodejs\node_global"npm config set cache "D:\programfiles\nodejs\node_cache"

配置环境变量:

在 nodejs/node_global 这个文件夹里面在创建一个文件夹名为 node_modules。

右键点击 “此电脑”-> 属性->高级系统设置->环境变量->新建或编辑 “系统变量”。

记得将下面的路径换成你自己的路径。

编辑 “用户变量”的path,进行添加:

打开  cmd  ,运行 node  -v 和 npm -v 查看,返回版本则配置成功,如无效,先检查环境变量配置的路径是否有误,如多方检查无误则重启电脑。

五、Node页面组成:

node中一个js文件就是一个模块,在node中每一个js文件的js代码都是独立运行在一个函数中(一个自调用的函数)所以全局中看不到。一个模块函数和变量在其它模块无法引用。

一个node页面就是一个隐藏的函数,函数组成包括:

function(exports,require,module,_filename,_dirname){}

  1. exports 用来将变量或函数暴露到外部。
  2. require 是函数,用来引入外部模块。
  3. module 代表当前模块本身,exports就是module的属性。
  4. _filename 当前模块的完整路径,C:\usrs\module.js。
  5. _dirname 当前模块所在文件夹路径。

六、Node中模块化导入导出:

Node使用的是commonjs规范模块化。

commonjs对模块的定义:

  1. 模块引用
  2. 模块定义
  3. 模块标识

模块分为两大类:

  1. 核心模块:由node引擎提供的模块,例如fs、path、os等。var fs=require("fs");
  2. 文件模块:由用户自己创建的模块。var fs=require("./new.js")

一个模块要暴露内容其他模块引入后才能查看:

暴露方式:

        1.导出对象/变量(包括函数变量)使用:

                ①module.exports={name:"孙悟空",age:17};   

                ②module.exports.x="a";     

                ③module.exports.add="function(a,b){return a+b};

        2.导出变量(包括函数变量)使用:

                ①exports.x="a";       

                ②exports.add="function(a,b){return a+b};

最好不要同时使用module.exports和exports。

引入方式:

var fs=require("fs"),require导入的是module.exports导出的对象。

七、Node包管理器_npm

安装完node自带包管理器npm(Node Package Manager)。

npm帮助node完成了第三方模块的发布、安装、依赖等。npm下载的模块在node-modules文件夹中。

npm常用命令:
  1. npm init    //在node项目中创建一个package.json文件,用来记录下载过的包。开发时可查看package.json文件,知道当前有哪些包以及版本信息。
  2. npm -v    //查看npm版本
  3. npm      //查看帮助说明
  4. npm search 包名      //搜索模块包
  5. npm install   包名       //在当前目录安装包,将安装包放在 ./node_modules 下
  6. npm   i  包名       //作用同上,是简写,在当前目录安装包
  7. npm install   包名  -g      //在全局安装包(一般安装一些工具)
  8. npm install   包名  -S      //将软件包添加到您的package.json文件的"dependencies"部分中,用于开发环境。并使用npm install命令安装软件包时,默认情况下会安装生产依赖项。-S是--save的简写。
  9. npm install   包名  -D      //将软件包添加到您的package.json文件的"devDependencies"部分中,用于生产环境。
  10. npm remove 包名   //删除包
  11. npm remove 包名  -S    //删除包,并删除package.json文件中的记录。
  12. npm    r   包名   //作用同上,是简写,删除包
package.json的作用:

你开发项目是需要很多依赖包,这些依赖存在node-modules中,如果包多,这个文件夹就会很大,就会写在.gitignore文件中,对其忽略上传。

而其他从远程库克隆下来你的代码,没有node-modules文件夹,也就是缺了很多依赖包,项目运行就会报错。所以克隆完项目后,首先执行  npm i   命令。npm会根据package.json里面记录的依赖包版本把依赖包下载到node-modules文件夹里面,这样项目才能运行起来。

所以git上传代码到远程库时,我们会有一个.gitignore文件。.gitignore 文件是 Git 版本控制系统中的一个特殊文件,用于指定哪些文件或目录在提交到远程版本库时应该被忽略。通常情况下,开发项目中会有一些不希望被版本控制的文件,比如临时文件、编译生成的文件、日志文件等,这些文件不需要被追踪和管理,因此可以将它们列在 .gitignore 文件中,告诉 Git 忽略这些文件。node-modules就是需要忽略的。

.gitignore文件内容:

# 这是注释,下面是不需要git上传到远程库的文件,根据项目实际情况,自行添加node_modules
.env.local
unpackage/dist/dev/
淘宝镜像:

使用npm   i  包名,下载包时,特别慢,还经常下载失败。这是因为npm是外国源,国内访问国外网站的网络肯定慢,导致卡顿(这种最好解决) 解决方法:直接将npm源切换成淘宝源即可 。

淘宝镜像是淘宝团队为国内用户提供的npm镜像源,它与官方镜像源保持同步,并提供了更快的下载速度。配置淘宝镜像后,当我们使用npm安装依赖包时,npm会从淘宝镜像源下载依赖包,而不是从官方源下载。这样能够显著加快依赖包的下载速度,提高开发效率。

设置淘宝镜像:

npm config set registry https://registry.npmmirror.com

删除淘宝镜像源:

npm config rm registry

恢复为原来的国外的源:

npm config set registry https://registry.npmjs.org

查看当前下载源:

npm config get registry

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/843211.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【从零开始学习RabbitMQ | 第二篇】如何确保MQ的可靠性和消费者可靠性

目录 前言: MQ可靠性: 数据持久化: Lazy Queue: 消费者可靠性: 消费者确认机制: 消费失败处理: MQ保证幂等性: 方法一: 总结: 前言: …

如何在Java中实现单例模式

一、引言 单例模式(Singleton Pattern)是Java中最常用的设计模式之一。它的主要目的是确保一个类只有一个实例,并提供一个全局访问点。在许多场景下,如配置管理、线程池、数据库连接池等,单例模式都能发挥重要作用。 …

Debian12 安装留档@Virtual Box

在学蜜罐系统的时候,T-Pot 需要Debian,于是安装Debian12 下载安装光盘 先去中科大下载了12的安装光盘,然后在VirtualBox中创建一个新虚拟机,将安装光盘挂载上。 安装光盘下载地址:https://mirrors.ustc.edu.cn/debi…

【NumPy】全面解析NumPy的bitwise_and函数:高效按位与操作指南

🧑 博主简介:阿里巴巴嵌入式技术专家,深耕嵌入式人工智能领域,具备多年的嵌入式硬件产品研发管理经验。 📒 博客介绍:分享嵌入式开发领域的相关知识、经验、思考和感悟,欢迎关注。提供嵌入式方向…

算法训练 | 二叉树Part7 | 530.二叉搜索树的最小绝对差、501.二叉搜索树中的众数

目录 530.二叉搜索树的最小绝对差 数组法 双指针法 ⭐ 迭代法 501.二叉搜索树中的众数 双指针法 迭代法 530.二叉搜索树的最小绝对差 题目链接:530. 二叉搜索树的最小绝对差 - 力扣(LeetCode) 文章讲解:代码随想录 数组…

三生随记——毛笔之咒

在一个被群山环抱的古老村落里,村民们过着平静而安宁的生活。然而,这个村落里隐藏着一个不为人知的秘密——一支传说中的毛笔。 这支毛笔的来历已无从考证,只知它世代相传,被村里的长者小心翼翼地收藏在祠堂的密室之中。毛笔的笔杆…

抖音小程序如何生成二维码

1.页面结构 <image src{{imgUrl}}></image>2.代码结构 onLoad(options) {if (options.param) {var qrCode 13246897451257 //传入生成二维码的字符串this.generateQRCode(qrCode);}},//调起第三方库qrCodegenerateQRCode(text) {//调用了qrCode里面的apiconst api…

【算法】Angelic Jelly天使果冻

✨题目链接&#xff1a; 天使果冻 ✨题目描述 Angelic Jelly 有 n 个果冻排成一排。第 i 个果冻的美味度是 ai。 天使非常喜欢吃果冻&#xff0c;但她想把最好吃的果冻留到最后收藏。天使想知道前 x 个果冻中&#xff0c;美味度第二大的果冻有多少美味度&#xff1f; 一共有 q…

【静态分析】在springboot使用太阿(Tai-e)02

参考&#xff1a;使用太阿&#xff08;Tai-e&#xff09;进行静态代码安全分析&#xff08;spring-boot篇二&#xff09; - 先知社区 本文章使用的被分析代码为GitHub - JoyChou93/java-sec-code: Java web common vulnerabilities and security code which is base on springb…

本地部署 MiniCPM-Llama3-V 2.5

本地部署 MiniCPM-Llama3-V 2.5 0. 引言1. 性能评估2. 典型示例3. 本地部署4. 运行 WebUI Demo5. vLLM 部署 0. 引言 MiniCPM-Llama3-V 2.5 是 MiniCPM-V 系列的最新版本模型&#xff0c;基于 SigLip-400M 和 Llama3-8B-Instruct 构建&#xff0c;共 8B 参数量&#xff0c;相较…

Llama模型家族训练奖励模型Reward Model技术及代码实战(三) 使用 TRL 训练奖励模型

LlaMA 3 系列博客 基于 LlaMA 3 LangGraph 在windows本地部署大模型 &#xff08;一&#xff09; 基于 LlaMA 3 LangGraph 在windows本地部署大模型 &#xff08;二&#xff09; 基于 LlaMA 3 LangGraph 在windows本地部署大模型 &#xff08;三&#xff09; 基于 LlaMA…

闲话 .NET(3):.NET Framework 的缺点

前言 2016 年&#xff0c;微软正式推出 .NET Core 1.0&#xff0c;并在 2019 年全面停止 .NET Framework 的更新。 .NET Core 并不是 .NET Framework 的升级版&#xff0c;而是一个从头开始开发的全新平台&#xff0c;一个跟 .NET Framework 截然不同的开源技术框架。 微软为…

一文详解手机在网状态查询API

手机在网状态查询就是指客户手机号码的在营运商数据库中标注的状态&#xff0c;有正常使用、停机、销号、未启用、异常、预销户、在网但不可用等一系列状态。而手机在网状态查询接口则是指通过接入api接口的实时数据对客户的手机号码开展在网状态查询。手机号码在网状态查询主要…

2024第三届AIGC开发者大会圆桌论坛:AI Agent中国落地发展现状及多模态结合具身智能的发展展望

在2024年第三届AIGC开发者大会上&#xff0c;多位业内专家齐聚一堂&#xff0c;共同探讨了AI Agent在中国的落地发展现状以及多模态结合具身智能的发展前景。本次圆桌论坛的嘉宾包括&#xff1a; Fast JP作者于金龙Agent创始人莫西莫必胜作者秦瑞January Agent创始人李晨 多模…

Android NDK系列(一)手动搭建Native Project

使用NDK编写的本地代码具有高性能等特性&#xff0c;在游戏、图形处理等领域有广泛应用&#xff0c;下面介绍如何手动搭建一个纯C版的Android项目&#xff0c;通过该项目可以理解Android的项目结构。 一、创建settings.gradle Android项目是基于Gradle构建的&#xff0c;首先得…

数据结构之链表(高级应用)

基本的算法实践在上一篇博文&#xff0c;这篇博文向大家详细展示一下数据结构的高级应用&#xff0c;可能有些难&#xff0c;但这是重点&#xff0c;实用性很强&#xff0c;而且用的好往往事半功倍&#xff0c;想获得力量吗&#xff0c;开整&#xff1a; 我把他们分为这几块&a…

Captura完全免费的电脑录屏软件

一、简介 1、Captura 是一款免费开源的电脑录屏软件&#xff0c;允许用户捕捉电脑屏幕上的任意区域、窗口、甚至是全屏画面&#xff0c;并将这些画面录制为视频文件。这款软件具有多种功能&#xff0c;例如可以设置是否显示鼠标、记录鼠标点击、键盘按键、计时器以及声音等。此…

JVM1.8分代的理论基础和简单测试

你好&#xff0c;我是 shengjk1&#xff0c;多年大厂经验&#xff0c;努力构建 通俗易懂的、好玩的编程语言教程。 欢迎关注&#xff01;你会有如下收益&#xff1a; 了解大厂经验拥有和大厂相匹配的技术等 希望看什么&#xff0c;评论或者私信告诉我&#xff01; 文章目录 一…

用PHP封装一个强大且通用的CURL方法

用PHP封装一个强大且通用的CURL方法 支持&#xff1a;get、post、put、delete、patch、options 直接上代码&#xff1a; /*** function 强大且通用的cURL请求库* param $url string 路径* param $method string 请求方式 如&#x…

【Javascript】Promise形象比喻

我们可以把 Promise 形象地比喻为一个“外卖订单”&#xff0c;它有三种状态&#xff1a;下单中、已送达、已取消。这个比喻可以帮助你理解 Promise 的工作机制。 比喻解释 Pending&#xff08;下单中&#xff09;&#xff1a; 当你在外卖平台上创建一个订单时&#xff0c;订…