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

news2024/11/27 13:50:08

概念

        包(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目录

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

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

                                

                

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

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

相关文章

从数字孪生到智慧城市:科技引领下的城市未来展望

一、引言 随着科技的飞速发展,数字孪生和智慧城市已成为当今世界城市发展的重要趋势。数字孪生通过建立物理世界的数字模型,为城市管理和规划提供了前所未有的可能性;而智慧城市则借助先进的信息通信技术,使城市运行更加高效、便…

springboot194基于springboot的医药管理系统

简介 【毕设源码推荐 javaweb 项目】基于springbootvue 的医药管理系统 适用于计算机类毕业设计,课程设计参考与学习用途。仅供学习参考。 不得用于商业或者非法用途,否则,一切后果请用户自负。 看运行截图看 第五章 第四章 获取资料方式 **…

软件实例分享,药店进销存软件医药系统进销存教程

软件实例分享,药店进销存软件医药系统进销存教程 一、前言 以下软件程序教程以 佳易王药店进销存管理系统V16.0为例说明 软件文件下载可以点击最下方官网卡片——软件下载——试用版软件下载 软件可以对药品的有效期进行管理,可以查询还有多少天到期的…

Peter算法小课堂—哈希与哈希表

额……字符串我们是第一次学,给大家铺一些基础的不能再基础的基础, 字符串比较大小 字符串大小的比较,不是以字符串的长度直接决定,而是从最左边第一个字符开始比较,大者为大,小者为小,若相等…

详解 Redis 实现数据去重

✨✨ 欢迎大家来到喔的嘛呀的博客✨✨ 🎈🎈希望这篇博客对大家能有帮助🎈🎈 目录 言 一. Redis去重原理 1. Redis Set 数据结构 2. 基于 Set 实现数据去重 3. 代码示例 4. 总结 …

SG5032EEN晶体振荡器SPXO

5G将使通信流量呈指数级增长,5G通信网络需要高速和宽带,同时将噪声水平保持在最低水平,这可以通过通信设备的高频低抖动参考时钟来实现,使用上述晶体振荡器SPXO,客户可以输入一个具有极低相位抖动和功率的高频参考时钟…

进程间通信——管道

文章目录 进程间通信的介绍进程间通信的目的进程间通信的本质 匿名管道创建管道匿名管道的特征 命名管道小结 进程间通信的介绍 进程间通信简称IPC(Interprocess communication),进程间通信就是在不同进程之间传播或交换信息。 进程间通信的…

算法刷题:和为s的两个数

和为s的两个数 .题目链接题目详情算法原理我的答案 . 题目链接 和为s的两个数 题目详情 算法原理 这里我们是利用单调性来使用双指针的对撞指针来解决问题 因为数组给的是有序递增的,因此我们设置两个指针left和right来解决问题,当nums[left]与nums[right]相加会有三种情况:…

apple iCloud photo close

关闭掉就不当心图片上传到服务器(暗地里有没有执行上传就不知道了),然后接电脑存放还要从服务器上下载很麻烦,但是你要确保自己手机内存卡足够多 关闭iCloud会提示,从服务器下载图片

混合键合(Hybrid Bonding)工艺解读

随着半导体技术的持续演进,传统的二维芯片缩放规则受到物理极限的挑战,尤其是摩尔定律在微小化方面的推进速度放缓。为了继续保持计算性能和存储密度的增长趋势,业界开始转向三维集成电路设计与封装技术的研发。混合键合技术就是在这样的背景…

算法学习——LeetCode力扣贪心篇4

算法学习——LeetCode力扣贪心篇4 763. 划分字母区间 763. 划分字母区间 - 力扣(LeetCode) 描述 给你一个字符串 s 。我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。 注意,划分结果需要满足&#xf…

第13集《佛说四十二章经》

和尚尼慈悲!诸位法师、诸位居士,阿弥陀佛! 请大家打开讲义第十八面,第三十六章、辗转获胜。 佛陀在《法华经》上,对我们的三界果报,清楚的开示说:三界无安,犹如火宅,众…

地理信息数据要素价值

文章目录 前言一、地理信息数据成为生产要素的重要内涵二、推动地理信息数据要素价值实现的重点及方式(一)公共地理信息数据(二)企业地理信息数据前言 面对数字经济发展新形势新需求,我们将统筹发展与安全,推动数据资源向数据资产转变,发挥时空数据作为新型生产要素价值…

Windows 系统盘(C盘)爆红如何清理、如何增加C盘空间

1、简介 Windows系统中,系统和保留占用太多的空间,一旦系统盘分配空间较少,使用一段时间后,备份文件、临时文件、系统更新记录等都会在占用系统盘较大空间,导致系统盘空间不够使用,会造成应用运行卡顿。如何…

uniapp 开发一个密码管理app

密码管理app 介绍 最近发现自己的账号密码真的是太多了,各种网站,系统,公司内网的,很多站点在登陆的时候都要重新设置密码或者通过短信或者邮箱重新设置密码,真的很麻烦 所以准备开发一个app用来记录这些站好和密码…

每日一题——LeetCode1436.旅行终点站

方法一 个人方法 两次遍历set 终点站不通往其他任何城市,那么终点站只会出现在[cityA,cityB]的第二位,利用set第一次遍历保存所有站点,第二次遍历去除所有在第一位出现的站点,剩下的站点就是不通往任何站点的终点站: …

Java中的String类的常用方法(对于字符串的常用操作)

目录 一、获取指定索引的字符 二、 获取指定字符或者字符串的索引位置 三、判断字符串是否以指定内容开头或结尾 四、替换指定的字符或者是字符串 五、获取字符串的子串 六、将字符串转换为字符数组 七、比较字符串的内容是否相等 八、连接字符串 九、比较两个字符串的大…

[CTF]-PWN:C++文件更换libc方法(WSL)

C文件与C文件更换libc有很多不一样的地方,我是在写buu的ciscn_2019_final_3才意识到这个问题,C文件只需要更换libc和ld就可以了,但是C文件不同,除了更换libc和ld,它还需要更换libstdc.so.6和libgcc_s.so.1 更换libc和…

指针习题回顾(C语言)

目录 数组指针和指针数组 编程题: 字符串逆序 字符串左旋 题目1概述: 代码实现: 题目2概述: 代码实现: 调整奇偶顺序 题目概述: 代码实现: 冒泡排序 二级指针 代码解读: …

力扣---通配符匹配

题目描述: 给你一个输入字符串 (s) 和一个字符模式 (p) ,请你实现一个支持 ? 和 * 匹配规则的通配符匹配: ? 可以匹配任何单个字符。 * 可以匹配任意字符序列(包括空字符序列)。 判定匹配成功的充要条件是&#xff…