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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

go webview/wails学习记录

文章目录 webview安装基础代码错误情况wails安装初始化一个项目错误信息使用arco-design(在初始化项目上修改代码)修改窗口图标多页面展示添加自定义图标-iconfont制作伸缩侧边栏侧边栏菜单在form中使用select且select联动选择使用go读取本地excel文件在转json_str使用go将json…

js之图片上传

话不多说&#xff0c;直接上干货&#xff0c;注释在代码里面 下面是效果图和代码 <!DOCTYPE html> <html lang"zh"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-sca…

FJSP:蛇优化算法SO求解柔性作业车间调度问题(FJSP),提供MATLAB代码

一、柔性作业车间调度问题 柔性作业车间调度问题&#xff08;Flexible Job Shop Scheduling Problem&#xff0c;FJSP&#xff09;&#xff0c;是一种经典的组合优化问题。在FJSP问题中&#xff0c;有多个作业需要在多个机器上进行加工&#xff0c;每个作业由一系列工序组成&a…

iOS--工厂设计模式

iOS--工厂设计模式 设计模式的概念和意义类族模式UIButton作为类族模式的例子总结 三种工厂设计模式简单工厂模式&#xff08;Simple Factory Pattern&#xff09;&#xff1a;代码实例 工厂方法模式&#xff08;Factory Method Pattern&#xff09;&#xff1a;代码实例 抽象工…

exe4j --实现把jar包打成exe可执行文件

工具准备 1.Java编辑器&#xff0c;如&#xff1a;idea、eclipse等&#xff0c;下载地址&#xff1a; IntelliJ IDEA: The Capable & Ergonomic Java IDE by JetBrains https://www.jetbrains.com/idea/ 2.exe4j&#xff0c;下载地址&#xff1a; ej-technologies - Java A…

对北京新发地当时菜品三十天内价格分布式爬取(1)---(获取当时菜品数据并构建请求数据推入redis)

本次项目网页url 北京新发地: http://www.xinfadi.com.cn/priceDetail.html 我们首先创建一个爬虫用于收集url与请求的data然后b,c,d使用RedisCrawlSpider来对数据进行分布式爬取 在此篇中我们仅介绍爬虫a 一.获取当天所有菜品数据 这是一条请求的负载我们只需要对pubDateSta…

ubuntu22.04安装调节显示器亮度工具

1 介绍 软件名叫 DDC/CI control&#xff0c;官网 2 安装方法 sudo apt install intltool i2c-tools libxml2-dev libpci-dev libgtk2.0-dev liblzma-dev3 效果 进入软件&#xff0c;忽略告警信息

家政保洁服务小程序怎么做?家政公司快速搭建专属小程序

在数字化时代背景下&#xff0c;家政保洁服务行业也迎来了线上转型的新机遇。家政保洁服务小程序&#xff0c;作为一种新型的线上服务平台&#xff0c;不仅能够提升家政公司的服务效率&#xff0c;还能为顾客提供更加便捷的预约上门服务体验。那么家政保洁服务小程序怎么做呢&a…

电脑无法远程桌面连接,关于电脑无法建立远程桌面连接的问题分析与解决方案

在信息化快速发展的今天&#xff0c;远程桌面连接已成为许多企业和个人用户进行远程办公、技术支持以及数据管理的必备工具。然而&#xff0c;当电脑无法建立远程桌面连接时&#xff0c;可能会对用户的工作和日常生活造成极大的不便。本文将深入分析电脑无法远程桌面连接的原因…

来自学术界的知识库 RAG 调优方案实践(一)

背景介绍 在之前的文章详细梳理过工业界的 RAG 方案 QAnything 和 RagFlow&#xff0c;这次主要整理下来自学术界的一系列 RAG 优化方案。 主要关注优化方案对应的设计思想以及相关的实现&#xff0c;希望可以对大家的 RAG 服务效果提升有所帮助。 基础介绍 在综述论文 Ret…

双指针法和链表练习题(2024/5/28)

1面试题 02.07. 链表相交 给你两个单链表的头节点 headA 和 headB &#xff0c;请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点&#xff0c;返回 null 。 图示两个链表在节点 c1 开始相交&#xff1a; 题目数据 保证 整个链式结构中不存在环。 注意&#xf…

【MySQL】MySQL在 Linux下环境安装

MySQL的安装 1.卸载不要的环境2.获取mysql官方yum源3.安装mysql yum源4.安装mysql服务5.登录问题5.配置my.cnf6.设置开机启动(可以不设) 说明&#xff1a; 安装与卸载中&#xff0c;用户全部切换成为root&#xff0c;一旦安装&#xff0c;普通用户也能使用的 1.卸载不要的环境…

IS-IS开销值和协议优先级

原理概述 IS-IS 协议为路由器的每个 IS-IS 接口定义并维护了一个 Level-1开销值和一个 Level-2开销值。开销值可以在接口上或者全局上手动配置&#xff0c;也可以使用 Auto-Cost 自动计算确定。开销值的优先顺序为&#xff1a;接口上手动配置的开销值&#xff0c;全局上手动配置…

# 分布式链路追踪_skywalking_学习(2)

分布式链路追踪_skywalking_学习&#xff08;2&#xff09; 一、分布式链路追踪_skywalking &#xff1a;Rpc 调用监控 1、Skywalking(6.5.0) 支持的 Rpc 框架有以下几种&#xff1a; Dubbo 2.5.4 -> 2.6.0Dubbox 2.8.4Apache Dubbo 2.7.0Motan 0.2.x -> 1.1.0gRPC 1.…

数据分析必备:一步步教你如何用Pandas做数据分析(10)

1、Pandas 文本处理 Pandas 文本处理操作实例 在本章中&#xff0c;我们将使用基本的Series / Index讨论字符串操作。在随后的章节中&#xff0c;我们将学习如何在DataFrame上应用这些字符串函数。 Pandas提供了一组字符串函数&#xff0c;可以轻松地对字符串数据进行操作。最…

OpenHarmony 实战开发——内核对象队列之算法详解

前言 OpenAtom OpenHarmony&#xff08;以下简称“OpenHarmony”&#xff09; LiteOS-M 内核是面向 IoT 领域构建的轻量级物联网操作系统内核&#xff0c;具有小体积、低功耗、高性能的特点。在嵌入式领域的开发工作中&#xff0c;无论是自研还是移植系统&#xff0c;均绕不开…

超越中心化:Web3的去中心化应用探索

随着区块链技术的迅速发展&#xff0c;Web3作为其最前沿的应用之一&#xff0c;正引领着互联网进入了一个新的时代。Web3不仅仅是技术的进步&#xff0c;更是一种全新的思维方式和社会模式&#xff0c;其核心理念是去中心化、自治和透明&#xff0c;这与传统的中心化互联网模式…

视创云展「VR直播」是什么?有哪些功能和应用场景?

视创云展「VR直播」通过“3D沉浸式展厅直播高互动感”的创新玩法&#xff0c;使企业随时随地举办一场低成本、高互动、能获客的元宇宙直播活动成为可能。「VR直播」能实现3D展厅内VR场景漫游&#xff0c;更结合音视频交互、同屏互动等新功能&#xff0c;为用户带来更沉浸的虚拟…

.NET周刊【5月第4期 2024-05-26】

国内文章 开源低代码框架 ReZero API 正式版本发布 &#xff0c;界面操作直接生成API https://www.cnblogs.com/sunkaixuan/p/18201175 ReZero是一款.NET6的中间件&#xff0c;采用MIT许可证开源&#xff0c;目的是降低.NET Core开发的门槛。它提供界面操作生成API的功能&am…

nacos安装与使用

1.nacos简介与安装 什么是注册中心&#xff08;服务治理&#xff09; 服务注册&#xff1a;服务提供者provider&#xff0c;启动的时候向注册中心上报自己的网络信息 服务发现&#xff1a;服务消费者consumer&#xff0c;启动的时候向注册中心上报自己的网络信息&#xff0c;拉…