node.js学习P3-P10

P3 npm package.json(package解读+npm工具+换镜像源)

一个package.json文件可以的作用

  • 作为一个描述文件,描述了你的项目依赖哪些包 ,用来干什么的
  • 允许我们使用“语义版本规则”,指明你项目依赖的版本
  • 让你的构建更好的与其他人共享

version三段式(1.0.0)

1-主版本重大更新
0-次版本号,功能的更新,编译宏
0-修订号,修个bug

npm init 创建一个package,json输入,初始化一个新的npm项目
在这里插入图片描述

main是入口文件,用包时main会去找入口
这四个和模块化有关系

scripts可以执行命令(用npm run 里面的参数)
repository资料显示到官网

npm install 包(简写npm i 包)安装一个或一组想要的包,并在当前目录存放一个node-modules

npm安装详细版本在后面加一个@(npm install vue@2.2.6)

dependences生产环境需要的依赖,显示你下载的版本

  1. npm install vue --save老版本5.4之前放入dependences(现在高版本自动加)

  2. npm install vue --save-dev或者简写npm install vue-D
    增加devDependences(开发的依赖)

  3. 还有一个peerDependences,不能凭空运行

npm -s和-d区别

"dependencies"表示开发和上线都需要的第三方包,用-S
"devdependencies"表示仅在开发阶段需要的第三方包,用-D
npm config list 查错很好用用于列出所有的 npm 配置信息。执行该命令可以查看当前系统和用户级别的所有 npm 配置信息,以及当前项目的配置信息(如果在项目目录下执行该命令)

npm get registry 用于获取当前 npm 配置中的 registry 配置项的值。registry 配置项用于指定 npm 包的下载地址,如果未指定,则默认使用 npm 官方的包注册表地址

npm set registrynpm config set registry 命令,将 registry 配置项的值修改为指定的 地址
在这里插入图片描述
npm i xmzs -g方便切换源写的工具包(好方便啊)
在这里插入图片描述

我不是很懂,先记着吧
原文地址http://t.csdnimg.cn/ExHnr
(nodejs第三章)

P4 npm install(install原理:找npmrc+索引记录)

有复用模块的是非理想状态

在这里插入图片描述
config找好多层npmrc

package-lock.json 的作用

这个可以锁定版本记录依赖树详细信息

  • version 该参数指定了当前包的版本号

  • resolved 该参数指定了当前包的下载地址

  • integrity 用于验证包的完整性

  • dev 该参数指定了当前包是一个开发依赖包

  • bin 该参数指定了当前包中可执行文件的路径和名称

  • engines 该参数指定了当前包所依赖的Node.js版本范围

    这个通过 name + version + integrity 信息生成一个唯一的key,
    这个key能找到对应的index-v5 下的缓存记录 也就是npm cache 文件夹下的

原文http://t.csdnimg.cn/taQnX
(nodejs第四章)

P4 npm run原理(查找vite+npm生命周期)

在这里插入图片描述
查找规则是:

  • 先从当前项目的node_modules/.bin去查找可执行命令vite
  • 如果没找到就去全局的node_modules 去找可执行命令vite(全局环境配置)
  • 如果还没找到就去环境变量查找
  • 再找不到就进行报错

产生三个vite命令兼容各个平台

在app下面新建一个index.js的文件并保存–> cmd /app: node index.js

npm 生命周期

在这里插入图片描述
执行 npm run dev 命令的时候
predev 会自动执行 他的生命周期是在dev之前执行,
然后执行dev命令,
再然后执行postdev,
也就是dev之后执行

原文http://t.csdnimg.cn/VmXhB
(nodejs第五章)

P6 npx(查找全局安装+)

npx 是命令行工具,允许用户在不安装全局包的情况下,运行已安装在本地项目中的包或者远程仓库中的包。

npm ls -g查找全局安装了哪些可执行文件,不加-g就是当前项目

npx

  1. 避免全局安装:npx允许你执行npm package,而不需要你先全局安装它。
  2. 总是使用最新版本:如果你没有在本地安装相应的npm package,npx会从npm的package仓库中下载并使用最新版
  3. 执行任意npm包:npx不仅可以执行在package.json的scripts部分定义的命令,还可以执行任何npm package。
  4. 执行GitHub gist:npx甚至可以执行GitHub gist或者其他公开的JavaScript文件。

原文http://t.csdnimg.cn/nrJCn
(nodejs第六章)

P7 如何发布npm包(登录官网+发布)

  1. 准备npm adduser
    去npm账号注册或者点跳出的网址

要用npm官方的源,如果不是就mmp use切换一下
更改配置package.json内容
发包name不能一样的

  1. 发布npm publish

原文http://t.csdnimg.cn/H4zsF
(nodejs第七章)

P8 搭建npm私服!?

防止别人把包删了你用不了,放私服可以不同步删除而是保留版本

好处

  • 离线使用,你可以将npm私服部署到内网集群,这样离线也可以访问私有的包。
  • 提高包的安全性,使用私有的npm仓库可以更好的管理你的包,避免在使用公共的npm包的时候出现漏洞。
  • 提高包的下载速度,使用私有 npm 仓库,你可以将经常使用的 npm 包缓存到本地,从而显著提高包的下载速度

https://verdaccio.org/zh-CN/

安装npm install verdaccio -g在cmd上(?)
直接运行verdaccio就行

在这里插入图片描述
第二个可以自定义端口号5000改
第三个指定配文件

更改端口号后打开网址
在这里插入图片描述
把上面的输入vscode终端
npm adduser --registry http://localhost:9999/创建或
npm login --registry http://localhost:9999/登陆或
npm publish --registry http://localhost:9999/发布

密码打不上创建不来账号,很牛逼,我不会搞,先放着吧,反正也不发包

原文http://t.csdnimg.cn/sBQlV
(nodejs第八章)

P9 引入导出模块化!(CommonJS/esm+解构+起别名+源码解析)

Nodejs 模块化规范遵循两套一 套CommonJS规范另一套esm规范

CommonJS规范

通过npm init -y生成package.json
在这里插入图片描述
有type把type指定为commonjs

commonjs的引入是require

require引入(5种方法)
  1. 引入自己编写的模块 ./ …/ 等
    require(‘./test.js’)

  2. 支持引入第三方模块express md5 koa 等
    require('md5’)
    // md5是加密,正常情况下,它的结果是一个 长度为 32位 的 16进制 的 字符串。

    在app下面新建一个index.js的文件并保存 node index.js

  3. 支持引入nodejs自带内置模块例如 http os fs child_process 等nodejs内置模块

    const fs = require(‘node:fs’);
    // 导入核心模块,高版本需要写’node:fs’(但没有强制要求,方便区分),低版本直接fs

  4. 支持引入addon C++扩展模块 .node文件

  5. 支持引入json文件

导出模块exports 和 module.exports
module.exports = {hello: function() {console.log('Hello, world!');}
};

//const { name, age } = node;(es6的结构赋值)

如果不想导出对象直接导出值

module.exports = 123

ES module规范

把type改成module

esm的引入是import

import fs from 'node:fs'

如果要引入json文件需要特殊处理 需要增加断言并且指定类型json node低版本不支持

import data from './data.json' assert { type: "json" };
console.log(data);

加载模块的整体对象(预览模式)

import * as all from 'xxx.js'

在这里插入图片描述
重名的时候可以起别名
在这里插入图片描述
esm不支持引入json文件
虽然可以强行支持(node18版本以上)
在这里插入图片描述

Cjs 和 ESM 的区别(面试题)

  1. Cjs是基于运行时的同步加载(放里面),esm是基于编译时的异步加载(import一般只能放最上面)
    //import非要参杂在逻辑里面使用import函数模式
    在这里插入图片描述

  2. Cjs是可以修改值的,esm值并且不可修改(可读的)

  3. Cjs不可以tree shaking,esm支持tree shaking

  4. commonjs中顶层的this指向这个模块本身,而ES6中顶层this指向undefined

    源码解析懒得看了嘻嘻
    原文链接http://t.csdnimg.cn/vyQds
    (nodejs第九章)

P10 全局变量(global全局+api绝对路径)

global+globalThis

  1. node中没有window DOM和BOM
    在nodejs中使用global定义全局变量,定义的变量,可以在引入的文件中也可以访问到该变量
    (要注意先后顺序)

  2. globalThis全局变量,
    在nodejs环境会自动切换成global ,
    浏览器环境自动切换window非常方便

ECMAscriptAPI

ECMAscriptAPI里的api基本都可以用

nodejs内置全局api

  1. __dirname
    当前模块的所在目录的绝对路径
  2. __filename
    当前模块文件的绝对路径,包括文件名和文件扩展名
  3. process(处理进程)
  • process.argv: 这是一个包含命令行参数的数组。第一个元素是Node.js的执行路径,第二个元素是当前执行的JavaScript文件的路径,之后的元素是传递给脚本的命令行参数。

  • process.env: 这是一个包含当前环境变量的对象。您可以通过process.env访问并操作环境变量。

  • process.cwd(): 这个方法返回当前工作目录的路径。

  • process.on(event, listener): 用于注册事件监听器。您可以使用process.on监听诸如exit、uncaughtException等事件,并在事件发生时执行相应的回调函数。
    在这里插入图片描述

  • process.exit([code]): 用于退出当前的Node.js进程。您可以提供一个可选的退出码作为参数。

  • 在这里插入图片描述

  • process.pid: 这个属性返回当前进程的PID(进程ID)。

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

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

相关文章

Web安全:SQL注入之时间盲注原理+步骤+实战操作

「作者简介」:2022年北京冬奥会网络安全中国代表队,CSDN Top100,就职奇安信多年,以实战工作为基础对安全知识体系进行总结与归纳,著作适用于快速入门的 《网络安全自学教程》,内容涵盖系统安全、信息收集等…

系统安全扫描扫出了:可能存在 CSRF 攻击怎么办

公司的H5在软件安全测试中被检查出可能存在 CSRF 攻击,网上找了一堆解决方法,最后用这种方式解决了。 1、问题描述 CSRF 是 Cross Site Request Forgery的缩写(也缩写为也就是在用户会话下对某个 CGI 做一些 GET/POST 的事,RIVTSTCNNARGO一这…

esp8266的rtos和nonos区别

https://bbs.espressif.com/viewtopic.php?t75242#p100294 https://blog.csdn.net/ydogg/article/details/72598752

存储方式 - 前端学习

1. cookie是什么?你了解cookie吗? 在计算机领域中,特指一种由服务器发送到用户浏览器并保存在用户计算机上的小型文本文件。这个文件可以被服务器用来识别用户身份、跟踪用户活动、保存用户设置等。它通常由名称、值、域名、路径、过期时间等…

【pm2 - sdk 集成到程序中,典型用法】

pm2作为一款进程管理神器,除了命令行的启动方式外,其还对应有sdk,集成到程序中,我们可以连接到已有或创建pm2的守护进程,与其进行交互,动态,编程式地控制程序的启停等。以下为示例: …

酷开科技大屏营销,多元需求唤醒“客厅经济”

随着科技的发展和消费者习惯的变化,OTT大屏营销正逐渐成为客厅经济的新风向。OTT不仅改变了人们获取信息和娱乐的方式,也为品牌营销提供了新的机遇和挑战,OTT大屏营销已经成为客厅经济的重要组成部分。酷开科技通过其自主研发的智能电视操作系…

PHP框架 Laravel

现在因为公司需求,需要新开一个Laravel框架的项目,毫无疑问,我又被借调过去了,最近老是被借调,有点阴郁,不过反观来看,这也是好事,又可以复习和巩固一下自己的知识点,接下…

数组基础-笔记

数组是非常基础的数据结构,实现运用和理解是两回事 数组是存放在连续内存空间上的相同类型的数据的集合 可以方便的通过下表索引的方式获取到下标下对应的数据。 举一个字符数组的例子: 注意两点: 数组下标从0开始 数组内存空间的地址是连…

yarn dev启动项目时遇到的问题

用yarn dev启动项目的时候,遇到了如下问题: 这个时候,我们可以这样解决:用nvm list 看下已安装的node版本,用nvm use切换一下node版本,当然前提是你已经安装了nvm。

C++: 二叉搜索树及实现

目录 一、二叉搜索树的概念 二、二叉搜索树的操作 2.1插入 2.2删除 1.有左子树,无右子树 2.有右子树,无左子树 3.有左子树和右子树 三、二叉搜索树的实现 要点 前言:为了学习map和set,需要先学二叉搜索树作为铺垫。 一、…

[论文笔记]Chain-of-Thought Prompting Elicits Reasoning in Large Language Models

引言 今天带来思维链论文 Chain-of-Thought Prompting Elicits Reasoning in Large Language Models的笔记。 作者探索了如何通过生成一系列中间推理步骤的思维链,显著提升大型语言模型在进行复杂推理时的能力。 1 总体介绍 语言模型的规模扩大已被证明能够带来…

[数据集][目标检测]伤口检测数据集VOC+YOLO格式2760张1类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):2760 标注数量(xml文件个数):2760 标注数量(txt文件个数):2760 标注…

课时138:变量进阶_变量实践_综合案例

2.1.3 综合案例 学习目标 这一节,我们从 免密认证、脚本实践、小结 三个方面来学习 免密认证 案例需求 A 以主机免密码认证 连接到 远程主机B我们要做主机间免密码认证需要做三个动作1、本机生成密钥对2、对端机器使用公钥文件认证3、验证手工演示 本地主机生成…

调整GIF图大小的方法是什么?分享4个

调整GIF图大小的方法是什么?在数字化时代,GIF以其独特的动图魅力,成为了网络交流中不可或缺的一部分。无论是社交媒体、博客文章还是工作汇报,一个恰到好处的GIF图往往能有效吸引观众的注意,传递信息,但过大…

YOLOv8+PyQt5面部表情检测系统完整资源集合(yolov8模型,从图像、视频和摄像头三种路径识别检测,包含登陆页面、注册页面和检测页面)

1.资源包含可视化的面部表情检测系统,基于最新的YOLOv8训练的面部表情检测模型,和基于PyQt5制作的可视化面部表情检测系统,包含登陆页面、注册页面和检测页面,该系统可自动检测和识别图片或视频当中出现的八类面部表情&#xff1a…

3D开发工具HOOPS在BIM系统中的应用

建筑信息模型是一种革命性的建筑设计、施工和管理方法。它通过创建和利用数字信息来优化建筑项目的设计、施工和运营过程。在这个过程中,3D开发工具HOOPS扮演着至关重要的角色,为BIM系统提供了强大的技术支持和丰富的功能。HOOPS中文网http://techsoft3d…

ThreadLocal简介

Thread类中,有个ThreadLocal.ThreadLocalMap 的成员变量。 ThreadLocalMap内部维护了Entry数组,每个Entry代表一个完整的对象,key是ThreadLocal本身,value是ThreadLocal的泛型对象值 public void set(T value) {Thread t Thread…

前端开发之xlsx的使用和实例,并导出多个sheet

前端开发之xlsx的使用和实例 前言效果图1、安装2、在页面中引用3、封装工具类(excel.js)4、在vue中使用 前言 在实现业务功能中导出是必不可少的功能,接下来为大家演示在导出xlsx的时候的操作 效果图 1、安装 npm install xlsx -S npm inst…

Android HAL到Framework

一、为什么需要Framwork? Framework实际上是⼀个应⽤程序的框架,提供了很多服务: 1、丰富⽽⼜可扩展的视图(Views), 可以⽤来构建应⽤程序,它包括列表(lists),⽹格&am…

代码随想录算法训练营第20天 |● 654.最大二叉树 ● 617.合并二叉树 ● 700.二叉搜索树中的搜索 ● 98.验证二叉搜索树

文章目录 前言654.最大二叉树思路方法一 递归法方法一2 老师的优化递归法 617.合并二叉树思路方法一 递归法方法二 迭代法 700.二叉搜索树中的搜索思路方法一 递归法方法二 迭代法 98.验证二叉搜索树思路方法一 使用数组方法二 不使用数组代码注意点: 方法二 使用双…