node_相关知识点

news2024/11/17 12:36:49

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.coloradmin.cn/o/1706817.html

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

相关文章

今天想看点干货?Constraintlayout等你好久啦!

大家好,我是小布丁。 从今天开始要开一个新坑啦,我会系统地把我学到的Android基础知识分享出来,我也想过这样是否有必要,毕竟分享的都是一些很基础的内容,但是很多人也和我一样正处于Android小白阶段,我能…

RedHat9 | DNS剖析-配置转发DNS服务器

一、实验环境 1、转发DNS服务器 转发服务器(Forwarding Server)接受查询请求,但不直接提供DNS解析,而是将所有查询请求发送到另外一台DNS服务器,查询到结果后保存在本地缓存中。如果没有指定转发服务器,D…

PyCharm基本配置内容

如何更换 Python 解释器 输入一段代码点击运行后,画面下方有一个路径如图中框中所示: 上面的路径为虚拟路径,可以改为我们自己设置的路径 点击设置,选择settings 选择Project:y002———》Python Interpreter&#…

MySQL 重启之后无法写入数据了?

数据库交接后因 persist_only 级别的参数设置引发的故障分析。 作者:不吃芫荽,爱可生华东交付服务部 DBA 成员,主要负责 MySQL 故障处理及相关技术支持。 爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系…

解密Prompt系列15. LLM Agent之数据库应用设计:DIN C3 SQL-Palm BIRD

上一章我们主要讲搜索引擎和LLM的应用设计,这一章我们来唠唠大模型和DB数据库之间的交互方案。有很多数据平台已经接入,可以先去玩玩再来看下面的实现方案,推荐 [sql translate]:简单,文本到SQL,SQL到文本…

【PID算法详解】

PID算法 PID算法介绍用途pid数学表达式及其含义P算法D算法I算法 PID总结数学公式转换代码设计实际运用PID代码实现 PID算法介绍 PID控制器是一种广泛应用于工业控制系统的反馈控制器,它通过比例(Proportional)、积分(Integral&am…

LeetCode199二叉树的右视图

题目描述 给定一个二叉树的 根节点 root,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。 解析 这一题的关键其实就是找到怎么去得到当前是哪一层级,可以利用队列对二叉树进行层次遍历,但…

4款让人骄傲的国产软件,功能过于强大,却被误认为是外国佬研发

说到国产软件,许多人可能会有“流氓软件、弹屏广告多、隐藏消费套路”等负面印象。 这种偏见导致一些功能强大、用户友好的国产软件被误认为是外国人开发的。 1、格式工厂 格式工厂是一个很实用的国产格式转换工具,它完全免费且没有广告,不…

Dropzone 4 for Mac:一拖即达,文件处理更高效!

在繁忙的工作中,你是否曾因频繁切换应用程序和文件夹而烦恼?Dropzone 4 for Mac,这款强大的文件拖拽操作工具,将彻底改变你的工作方式! 只需简单地将文件、文本或图片拖放到Dropzone图标上,即可快速执行各种…

一文搞定jdk8升级到jdk11

一、背景 为什么要升级JDK11 性能 JDK11的G1的GC性能高很多,对比JDK8无论是性能还是内存占比都有很大的提升,业内各项数据指标也都表明JDK11的G1在应对突发流量的下的效果惊人; 版本兼容 Spring Boot 2.7.x及以后的版本将不再支持Java 8作为…

Python开发 —— 对象type、object、class

1. "Python中一切皆为对象"的理解 在Python中,一切皆为对象的意思是指:无论是数字、字符串、函数、类、模块等任何数据类型,都可以被看做是一个对象。每个对象都具有自己的属性和方法,可以被操作和调用。 例如&#xff…

IP地址SSL证书应用场景以及如何申请?

一:IP地址SSL证书主要应用于以下几种场景: 1.API接口保护:许多云服务和企业内部系统使用IP地址直接作为服务的访问点,特别是在API接口的调用中。IP地址SSL证书可以为这些API接口提供必要的安全加密,确保数据在传输过程…

DreamPose: Fashion Image-to-Video Synthesis via Stable Diffusion

UW&UCB&Google&NVIDIA ICCV23https://github.com/johannakarras/DreamPose?tabreadme-ov-file 问题引入 输入参考图片 x 0 x_0 x0​和pose序列 { p 1 , ⋯ , p N } \{p_1,\cdots,p_N\} {p1​,⋯,pN​},输出对应视频 { x 1 ′ , ⋯ , x N ′ } \{x_1,…

停车场变综合楼,结构分析助力低碳设计

PLAXIS 和 RAM 助力确定更有效的结构设计并大幅降低施工成本 总部和周边区域 桑坦德银行位于英国的新总部将现有的四个英国办事处合并到米尔顿凯恩斯的一个中心枢纽,位于伦敦以北 50 英里。 Unity Place 将作为桑坦德银行约 5,000 名员工的办公场所。该项目总投资 …

AIGC笔记--基于PEFT库使用LoRA

1--相关讲解 LORA: LOW-RANK ADAPTATION OF LARGE LANGUAGE MODELS LoRA 在 Stable Diffusion 中的三种应用:原理讲解与代码示例 PEFT-LoRA 2--基本原理 固定原始层,通过添加和训练两个低秩矩阵,达到微调模型的效果; 3--简单代…

web自动化-下拉框操作/键鼠操作/文件上传

在我们做UI自动化测试的时候,会有一些元素需要特殊操作,比如下拉框操作/键鼠操作/文件上传。 下拉框操作 在我们很多页面里有下拉框的选择,这种元素怎么定位呢?下拉框分为两种类型:我们分别针对这两种元素进行定位和…

答应我!养猫就一定要入手的七款好物!养猫真的会开心

养猫是一件让人愉悦的事情,猫咪的陪伴能让我们感到温暖和满足。然而,想要让猫咪健康快乐地成长,除了关心它们的饮食和健康,还需要为它们准备一些必要的生活用品。今天,我将为大家推荐几个养猫必备的好物,让…

黑马头条day6总结

1、wemedian错误 一开始没加EnableFeignClients(basePackages "com.heima.apis")导致获取ischeduleClient错误,找不到bean。 我看教程的代码中没有,【ComponentScan({"com.heima.apis","com.heima.wemedia"})】&#x…

11款必备IP地址管理软件,你都用过吗?

1、LightMesh IPAM 产品描述:LightMesh IPAM 是一款功能强大的工具,可简化和自动化互联网协议网络的管理。它提供可扩展性、子网规划器、即时云发现、IP 和网络管理以及 IP 规划和可视化,以帮助您优化效率、可见性和安全性。 特征&#xff1…

强化学习——学习笔记

一、什么是强化学习? 强化学习 (Reinforcement Learning, RL) 是一种通过与环境交互来学习决策策略的机器学习方法。它的核心思想是让智能体 (Agent) 在执行动作 (Action)、观察环境 (Environment) 反馈的状态 (State) 和奖励 (Reward) 的过程中,学习到…