当前位置: 首页 > news >正文

寒假学习记录17:包管理器(包管理工具)

概念

        包(package)

                包含元数据的库,这些元数据包括:名称,描述,git主页,许可证协议,作者,依赖.....

        库(library,简称lib)

                以一个或多个模块组成的完整功能块,为开发中某一方面的问题提供完整的解决方案

        模块(module)

                通常以单个文件形式存在的功能片段,入口文件通常称之为入口模块主模块

                                                        

背景

        CommonJS的出现,使node环境下的JS代码可以用模块更加细粒度的划分。一个类,一个函数,一个对象,一个配置等待均可以作为模块,这种细粒度的划分,是开发大型应用的基石

        为了解决在开发过程中遇到的常见问题,比如加密,提供常见的工具方法,模拟数据等待,一时间,在前端社区涌现了大量的第三方库。这些库使用CommonJS标准书写而成,非常容易使用

        然而,在下载使用这些第三方库的时候,遇到难以处理的问题:

                1.下载过程繁琐

                2.如果该库需要依赖其他库,还需要按照要求先下载其他库

                3.开发环境中安装大量的库如何在生产环境中还原,又如何区分

                4.更新一个库极度麻烦

                5.自己开发的库,如何在下一次开发使用

        以上问题,就是包管理工具需要解决的问题

前端包管理器

        npm

                npm  -->  node package manager        (node包管理器)

                        npm之所以要运行在node环境,而不是浏览器环境,根本原因是因为浏览器环境无法提供下载,删除,读取本地文件的功能。而node属于服务器环境,没有浏览器的种种限制,理论上可以完全掌控运行node的计算机

                npm由三部分组成
                        1.registry:入口

                                可以把它想象成一个庞大的数据库

                                第三方库的开发者,将自己的库按照npm的规范,打包上传到数据库中

                                使用者通过统一的地址下载第三方包

                        2.官网

                                查询包

                                注册,登录,管理个人信息

                        3.CLI:command-line  interface    命令行接口

                                安装好npm后,通过CLI来使用npm的各种功能

                npm6之后,npm和yarn几乎就没有差距了

        yarn

                它仍然使用npm的registry,不过提供了全新CLI来对包进行管理

                        npm的问题

                                1.依赖目录嵌套层次深

                                2.下载速度慢

                                3.控制台输出繁杂

                                4.工程移植问题

                        yarn的优点

                                使用了扁平的目录结构

                                并行下载

                                使用本地缓存

                                控制台仅输出关键信息

                                使用yarn-lock文件记录确切依赖

                                增加了某些功能强大的命令

                                让既有的命令更加语义化

                                本地安装的CLI工具可以使用yarn直接启动

                                将全局安装的目录当作一个普通的工程,生成package.json文件,便于全局安装移植

        cnpm

                为解决国内用户连接npm registry缓慢的问题,淘宝搭建了自己的registry,即淘宝npm镜像源

                过去,npm没有提供修改registry的功能,因此,淘宝提供了一个CLI工具即cnpm,它支持除了npm publish以外的所有命令,只不过连接的是淘宝镜像源

                如今,npm已经支持修改registry了,可能cnpm唯一的作用就是和npm共存

                        即如果要使用官方源,则使用npm,如果使用淘宝源,则使用cnpm

        pnpm

                pnpm是一种新起的包管理器

                        pnpm优势

                                目前,安装效率高于npm和yarn

                                极其简洁的node_modules目录

                                避免了开发时使用间接依赖的问题

                                能极大的降低磁盘空间的占用

                                

                

相关文章:

寒假学习记录17:包管理器(包管理工具)

概念 包(package) 包含元数据的库,这些元数据包括:名称,描述,git主页,许可证协议,作者,依赖..... 库(library,简称lib) 以一个或多个模…...

【AIGC】Stable Diffusion的常见错误

Stable Diffusion 在使用过程中可能会遇到各种各样的错误。以下是一些常见的错误以及可能的解决方案: 模型加载错误:可能出现模型文件损坏或缺失的情况。解决方案包括重新下载模型文件,确保文件完整并放置在正确的位置。 依赖项错误&#x…...

线段树解决-----P1161 开灯 P1047 [NOIP2005 普及组] 校门外的树 python解法

# [NOIP2005 普及组] 校门外的树 ## 题目描述 某校大门外长度为 l 的马路上有一排树,每两棵相邻的树之间的间隔都是 1 米。我们可以把马路看成一个数轴,马路的一端在数轴 0 的位置,另一端在 l的位置;数轴上的每个整数点&#xf…...

学习总结16

# 【模板】最小生成树 ## 题目描述 如题,给出一个无向图,求出最小生成树,如果该图不连通,则输出 orz。 ## 输入格式 第一行包含两个整数 N,M,表示该图共有 N 个结点和 M 条无向边。 接下来 M 行每行包含三个整数 …...

问题:从完整的问题解决过程来看,( )是首要环节。A.理解问题 B.提出假设C.发现问题 D.检验假设 #学习方法#学习方法

问题:从完整的问题解决过程来看,( )是首要环节。A.理解问题 B.提出假设C.发现问题 D.检验假设 A.理解问题 B.提出假设 C.发现问题 参考答案如图所示...

服务器感染了.mallox勒索病毒,如何确保数据文件完整恢复?

导言: 在当今数字化的世界中,恶意软件已成为企业和个人数据安全的一大威胁,其中.mallox勒索病毒是最为恶劣的之一。本文91数据恢复将介绍.mallox勒索病毒的特点,以及如何恢复被其加密的数据文件以及预防措施。 如果您正在经历勒索…...

Android java基础_多态性

一.Android Java基础_多态性 向上转换:只能定义被子类覆写的方法,不能调用在子类中定义的方法。 class Father {private int money; public int getMoney() {return money; }public void setMoney(int money) {this.money money; }public void printInfo() {Syst…...

面试前的准备

目录: 面试前的准备Java程序员校招与社招的区别校招与社招的区别:Java程序员投递简的正确方式投递简历时的误区简历投递时间Java程序员如何应对面试邀约Java程序员如何对公司做背调面试前的技术准备 面试前的准备 Java程序员校招与社招的区别 校招和社招…...

前端架构: 本地调试脚手架的2种方式

一、 调试简单的脚手架方式 假定脚手架名称是 xxx 1 )方式1 在xxx脚手架项目目录的上一级,执行 npm i -g xxx这时候,就可以本地调试脚手架,在前文中已经说明软链的作用参考:https://blog.csdn.net/Tyro_java/article…...

现阶段适用于 单一架构 还是 分布式架构 ?

单体架构: 优势:简单直接,易于理解和开发,适用于小型应用或刚刚开始的项目。劣势:扩展性受限,只能通过增加服务器的数量来提高处理能力;所有模块都部署在一个单独的服务器或容器中,…...

掌握Go并发:Go语言并发编程深度解析

🏷️个人主页:鼠鼠我捏,要死了捏的主页 🏷️系列专栏:Golang全栈-专栏 🏷️个人学习笔记,若有缺误,欢迎评论区指正 前些天发现了一个巨牛的人工智能学习网站,通俗易懂&…...

创建一个多进程服务器和多线程服务器

多进程服务器 #include<myhead.h> #define PORT 8888 //端口号 #define IP "192.168.10.10" //IP地址//定义信号处理函数&#xff0c;用于回收僵尸进程 void handler(int signo) {if(signo SIGCHLD){while(waitpid(-1, NULL, WNOHAN…...

相机图像质量研究(18)常见问题总结:CMOS期间对成像的影响--CFA

系列文章目录 相机图像质量研究(1)Camera成像流程介绍 相机图像质量研究(2)ISP专用平台调优介绍 相机图像质量研究(3)图像质量测试介绍 相机图像质量研究(4)常见问题总结&#xff1a;光学结构对成像的影响--焦距 相机图像质量研究(5)常见问题总结&#xff1a;光学结构对成…...

18.谈谈你对JSON的理解

JSON 是一种基于文本的轻量级的数据交换格式。它可以被任何的编程语言读取和作为数据格式来传递。 在项目开发中&#xff0c;使用 JSON 作为前后端数据交换的方式。在前端通过将一个符合 JSON 格式的数据结构序列化为 JSON 字符串&#xff0c;然后将它传递到后端&#xff0c;后…...

绝地求生:“觉醒之旅”通行证曝光,西游主题通行证及成长型武器即将上线

随着27赛季即将结束&#xff0c;有关28.1版本的皮肤及通行证内容也被爆料出来&#xff0c;本次通行证为工坊通行证&#xff0c;和去年四圣兽通行证为同一类型&#xff0c;将于2月7日更新至正式服 除了通行证获取工坊币还是可以开箱获取并兑换一些奖励 先看通行证 四个套装应该分…...

JS如何判断普通函数与异步(async)函数

这里可以先打印一下普通函数和异步&#xff08;async&#xff09;函数的结构&#xff0c;如下图 可以看出两者原型链&#xff0c;普通函数的原型链指向的是一个函数&#xff0c;异步&#xff08;async&#xff09;函数原型链指向的是一个AsyncFunction&#xff0c;这时就会想到…...

ndk-r20b 编译 boost 1.74。

ndk-r20b 编译 boost 1.74&#xff0c;这是 ndk-r20b 支持得最大 boost 版本&#xff0c;再大就没法编译支持了&#xff0c;本文介绍方法是完整编译&#xff0c;不需要完整编译请转移到github&#xff0c;boost for android 得开源项目。 1.74 boost &#xff0c;安卓上面得版本…...

尚硅谷最新Node.js 学习笔记(四)

目录 八、express框架 8.1、express介绍 8.2、express使用 express下载 express初体验 8.3、express路由 什么是路由&#xff1f; 路由的使用 获取请求参数 获取路由参数 8.4、express响应设置 8.5、express中间件 什么是中间件&#xff1f; 中间件的作用 中间件…...

掌握XGBoost:GPU 加速与性能优化

导言 XGBoost是一种强大的机器学习算法&#xff0c;但在处理大规模数据时&#xff0c;传统的CPU计算可能会变得缓慢。为了提高性能&#xff0c;XGBoost可以利用GPU进行加速。本教程将介绍如何在Python中使用XGBoost进行GPU加速以及性能优化的方法&#xff0c;并提供相应的代码…...

【2024年毕设系列】如何使用Anaconda和Pycharm

【2024年毕设系列】如何使用Anaconda和Pycharm 视频教程地址&#xff1a;【2024毕设系列】Anaconda和Pycharm如何使用_哔哩哔哩 Hi&#xff0c;各位好久不见&#xff0c;这里是肆十二&#xff0c;首先在这里给大伙拜年了。 诸位过完年之后估计又要开始为了大作业和毕业设计头疼…...

ImageToSTL:将二维图片转化为可打印三维模型的艺术

ImageToSTL&#xff1a;将二维图片转化为可打印三维模型的艺术 【免费下载链接】ImageToSTL This tool allows you to easily convert any image into a 3D print-ready STL model. The surface of the model will display the image when illuminated from the left side. 项…...

大模型求职避坑指南:收藏这份三层准备路径,轻松拿下高薪Offer!

本文针对大模型求职者&#xff0c;揭示了常见误区并提供了清晰的三层准备路径&#xff1a;基础能力、核心竞争力、差异化优势。文章强调刷题和背概念只是入门&#xff0c;真正重要的是项目经历&#xff0c;要能深入回答五个关键问题&#xff1a;项目背景、技术选型、难点解决、…...

ARM Cortex-M微控制器与瑞萨RA系列开发实战指南

1. 项目概述&#xff1a;从“ARM”到“瑞萨RA”的认知之旅在嵌入式开发的江湖里&#xff0c;如果你还在纠结于8位、16位单片机的选型&#xff0c;或者对“ARM Cortex-M”这个名词感到既熟悉又陌生&#xff0c;那么这篇文章就是为你准备的。我接触过不少从传统8051、AVR转型过来…...

理解“变异”的奥秘——集中趋势与变异性度量详解

如果说统计学是在“用数据讲故事”&#xff0c;那么集中趋势回答的是&#xff1a;“这个故事大概讲到了哪里&#xff1f;”而变异性回答的是&#xff1a;“这个故事有多分散、多不稳定、多不一样&#xff1f;”很多初学者学统计时&#xff0c;最先记住的是“平均数”“中位数”…...

Linux音频驱动开发实战:为TLV320ADC5120编写ALSA Codec驱动

1. 项目概述&#xff1a;从一块“哑巴”音频芯片到Linux系统的“耳朵”最近在折腾一块基于TI TLV320ADC5120的音频采集板&#xff0c;想把它接到我的RK3568开发板上用。芯片手册、硬件原理图都齐了&#xff0c;但一上电&#xff0c;系统里arecord -l根本找不到设备&#xff0c;…...

DNS 与 hosts 文件:Windows 11 中的名称解析配置

诸神缄默不语-个人技术博文与视频目录 一个域名会对应多个IP地址&#xff0c;当电脑访问域名时会默认指定访问其中一个IP地址&#xff08;以下正文会介绍通过hosts文件和DNS服务器选择指定映射的IP的原理&#xff09;&#xff0c;总之有时我们可能会需要将域名对应的IP地址指定…...

基于HPM5E00的EtherCAT从站开发板全流程实战:从硬件设计到软件配置

1. 项目概述&#xff1a;为什么我们要自己动手做一块EtherCAT开发板&#xff1f;如果你是一名从事工业自动化、运动控制或者机器人开发的工程师&#xff0c;最近几年一定没少听到EtherCAT的大名。它号称“以太网控制自动化技术”&#xff0c;本质上是一种基于标准以太网的实时工…...

别再乱选预处理器了!ControlNet 1.1 全模型实战指南:从线稿到3D效果,一次讲清

ControlNet 1.1 预处理器终极选择指南&#xff1a;从草图到成片的智能决策树 当你的手绘线稿在ControlNet中生成出扭曲的五官或崩塌的透视时&#xff0c;问题往往出在预处理器与模型的错配上。本文将通过200次实测对比&#xff0c;拆解14种核心预处理器的隐藏特性&#xff0c;…...

1990-2023年 全国省市县耕地面积数据 xlsx+tif

01、数据概述 本数据集详尽记录了1990年至2023年间&#xff0c;中国各省市县的耕地面积变化情况。原始数据以Tif栅格格式存储&#xff0c;后经专业处理转化为结构化的省市县面板数据&#xff0c;直观呈现了各地区耕地面积的年度总和。1990-2023年全国省市县耕地面积数据xlsxti…...

【亲测免费】【免费下载】 探索视觉新边界:RexVision视觉框架深度解析

探索视觉新边界&#xff1a;RexVision视觉框架深度解析 【下载地址】RexVision视觉框架下载仓库 本仓库提供了一个名为“RexVision视觉框架”的资源文件下载。该框架是一个视觉处理相关的工具或库&#xff0c;用户只需将文件放置在D盘的根目录下即可进行编译和使用 项目地址:…...