说说我自己理解的dependencies和devDependencies的区别

这篇具有很好参考价值的文章主要介绍了说说我自己理解的dependencies和devDependencies的区别。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

         网上看了很多的资料,半懂半不懂的,后来略略想通了。我自己对这两个的理解有些粗暴,简单谈谈我个人的理解吧,不对之处,还请指出。

        dependencies:生产环境。这个生产环境不是对程序猿们来说,是对公司来说,产出利益的环境,我理解为用户使用环境。用户使用该环境下的代码。

        devDependencies:开发环境。开发环境是对于程序员来说的。程序猿们在该环境下进行代码的编辑。

        开发环境下,程序猿利用各种打包工具进行开发,调试。如webpack,vite等,它们功能强大,模块管理非常好,各种目录清晰。你 可以进行各种组件、路由、插件、函数等等的分块使用,清晰了然。

devdependencies dependencies,webpack,前端,node.js

         说完两者环境的理解,说说打包的过程。

        开发环境下,程序猿们一般在浏览器进行调试,执行了npm run dev,代码直接在调试器中运行。

        生产环境下,用户们使用的程序,是向服务器请求的,服务器中的程序,是在打包工具进行打包后的代码,以vite为例,执行了npm run build,打包生成的是dist文件夹

devdependencies dependencies,webpack,前端,node.js

 可以看出,dist文件夹下,有index.html,这是入口文件,入口文件中引入了.js,.css等类型的文件。

devdependencies dependencies,webpack,前端,node.js

 上图中的index.html中,link标签引入了css文件,script标签引入了js文件

        到了这里,也看到了两者环境下的差异,生产环境下,用户们只需要dist下的文件,并不关注使用了less、sass、ts还是js。打包工具只会把所有的代码,不管是less还是sass,ts还是js,统统打包为js、css、index.html文件。

        所以,生产环境下,是用户需要的东西,程序运行在用户设备上所依赖的;

        开发环境下,程序猿们需要而用户不需要的依赖的。举个例子:

devdependencies dependencies,webpack,前端,node.js

         上图中,devDependencies下,有vite,ts,  less, less-loade,各种工具,便于程序的开发,这些是用户都不需要的。less被解析为css,ts被编译为js,它们最终只是为了更好地生产js、css文件的。

        而用户需要的,dependencies下,有Vue,vueRouter, pinia,这些是会被打包进入dist文件里的。回想一下Vue,它是不是抛出了一个Vue的对象,挂载到了window下面。window使用了这些对象,生成了漂亮的页面和友好的交互性。

总结一下:

        dependencies生产环境下的文件,是用户使用时需要的,程序运行在用户设备上的依赖。

        devDependencies开发环境下的文件,用户并不依赖于它们。程序猿们可以利用开发环境下的各种工具,写出更好的代码,然后被打包工具打包进dist文件夹中。

当然,程序猿们也需要生产环境下的文件写代码的。

        下次使用npm,下载各种奇奇怪怪的文件时,不用再纠结加不加-d, -D,--save之类的。举个例子:

在npm下载时,例如下载一个sass时,命令:npm install sass

命令不加任何后缀的:npm install sass                        下载到生产环境

后加   --save  :          npm install sass --save             下载到生产环境

后加  -d   :                    npm install sass -d                    下载到生产环境

下载到开发环境时,需要加大写的-D,

npm run sass -D                 下载到开发环境下       

        

        一句话,下载到开发环境,必须加 -D一定是要大写的D。因为开发环境的英文字母devDependencies中有一个大写的D的字母。

下载到生产环境下,不可以有大写的-D

       文章来源地址https://www.toymoban.com/news/detail-771636.html

到了这里,关于说说我自己理解的dependencies和devDependencies的区别的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • css基础知识二十:说说对Css预编语言的理解?有哪些区别?

    一、是什么 Css 作为一门标记性语言,语法相对简单,对使用者的要求较低,但同时也带来一些问题 需要书写大量看似没有逻辑的代码,不方便维护及扩展,不利于复用,尤其对于非前端开发工程师来讲,往往会因为缺少 Css 编写经验而很难写出组织良好且易于维护的 Css 代码

    2024年02月16日
    浏览(42)
  • 如何理解CDN?说说实现原理?

    CDN (全称 Content Delivery Network),即内容分发网络 构建在现有网络基础之上的智能虚拟网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。 CDN  的关键技术主

    2024年03月27日
    浏览(44)
  • 说说对WebSocket的理解?应用场景?

    WebSocket,是一种网络传输协议,位于 OSI 模型的应用层。可在单个 TCP 连接上进行全双工通信,能更好的节省服务器资源和带宽并达到实时通迅 客户端和服务器只需要完成一次握手,两者之间就可以创建持久性的连接,并进行双向数据传输 从上图可见, websocket 服务器与客户

    2024年04月08日
    浏览(38)
  • 说说你对栈、队列的理解?应用场景?

    栈(stack)又名堆栈,它是一种运算受限的线性表,限定仅在表尾进行插入和删除操作的线性表 表尾这一端被称为栈顶,相反地另一端被称为栈底,向栈顶插入元素被称为进栈、入栈、压栈,从栈顶删除元素又称作出栈 所以其按照先进后出的原则存储数据,先进入的数据被压

    2024年04月11日
    浏览(49)
  • 说说常见的排序算法有哪些?区别?

    排序是程序开发中非常常见的操作,对一组任意的数据元素经过排序操作后,就可以把他们变成一组一定规则排序的有序序列 排序算法属于算法中的一种,而且是覆盖范围极小的一种,彻底掌握排序算法对程序开发是有很大的帮助的 对与排序算法的好坏衡量,主要是从时间

    2024年04月22日
    浏览(26)
  • 说说你对图的理解?相关操作有哪些?

    在计算机科学中,图是一种抽象的数据类型,在图中的数据元素通常称为结点, V 是所有顶点的集合, E 是所有边的集合 如果两个顶点 v , w ,只能由 v 向 w ,而不能由 w 向 v ,那么我们就把这种情况叫做一个从  v  到  w  的有向边。 v 也被称做初始点, w 也被称为终点。这

    2024年04月22日
    浏览(45)
  • 说说你对堆的理解?如何实现?应用场景?

    堆(Heap)是计算机科学中一类特殊的数据结构的统称 堆通常是一个可以被看做一棵完全二叉树的数组对象,如下图: 总是满足下列性质: 堆中某个结点的值总是不大于或不小于其父结点的值 堆总是一棵完全二叉树 堆又可以分成最大堆和最小堆: 最大堆:每个根结点,都有根

    2024年04月22日
    浏览(44)
  • 说说HTTP 和 HTTPS 有什么区别?

    http协议 超文本传输协议,是互联网上应用最多的协议, 基于TCP/IP 通讯协议来传递信息,用于从WWW服务器传输超文本到本地浏览器的传输协议。 https协议 我们可以将其看作是以安全为目标的http协议。在 http协议的基础 上增加了 SSL/TSL层 ,可以确保数据的传输的安全性和完整

    2024年02月10日
    浏览(52)
  • 说说你对树的理解?相关的操作有哪些?

    在计算机领域,树形数据结构是一类重要的非线性数据结构,可以表示数据之间一对多的关系。以树与二叉树最为常用,直观看来,树是以分支关系定义的层次结构 二叉树满足以下两个条件: 本身是有序树 树中包含的各个结点的不能超过 2,即只能是 0、1 或者 2 如下图,左

    2024年04月17日
    浏览(50)
  • 说说你对选择排序的理解?如何实现?应用场景?

    选择排序(Selection sort)是一种简单直观的排序算法,无论什么数据进去都是  O(n²) 的时间复杂度,所以用到它的时候,数据规模越小越好 其基本思想是:首先在未排序的数列中找到最小(or最大)元素,然后将其存放到数列的起始位置 然后再从剩余未排序的元素中继续寻找最

    2024年04月23日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包