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

【重构谷粒商城12】npm快速入门

重构谷粒商城12:npm快速入门

前言:这个系列将使用最前沿的cursor作为辅助编程工具,来快速开发一些基础的编程项目。目的是为了在真实项目中,帮助初级程序员快速进阶,以最快的速度,效率,快速进阶到中高阶程序员。

本项目将基于谷粒商城项目,并且对谷粒商城项目进行二次重构,使其满足最新的主流技术栈要求。包括若依脚手架、大模型、知识库等的嵌入。

上篇文章介绍了node,这篇文章作为加餐,给不熟悉npm的后端程序员扫扫盲,快速入门npm。不至于太懵。下篇文章将介绍webpack。敬请期待。

1、npm的地位

先看下前端的技术栈,了解下npm的地位。

image-20250408153257595

2、什么是npm?

image-20250408160059238

image-20250408160949487

简而言之,类似后端的maven。

这是不用npm下载jquery的方式。

image-20250408161809287

下bootstrap,还要再找。版本更新,要重新找。比较麻烦。

npm简化了一切,不用自己下载了。后面你会慢慢感受到。

官网。

image-20250408162145965

3、npm安装

和node.js相辅相成,node内置了npm。

这里下载node我们前面文章已经讲好多次了。没有装的同学自行安装下。

image-20250408162532515

验证下。可以看到下面版本信息,就是安装成功喽。

image-20250408162618429

4、npm的基本使用

使用npm在项目中安装jquery,很简单、清爽。

image-20250408163908347

不过,现在安装有点慢,我们需要搞个国内镜像先。

image-20250408164158168

成功后,下载起飞咯。

下图总结了npm常用的命令。

image-20250408165558831

注意上面-save参数,是运行时依赖,在开发、运行时都需要有这个依赖,默认参数就是它,打包时会带上这个依赖。-save-dev则是开发时依赖,在运行环境不需要该依赖。打包时不会打这个包。上面的控制是通过配置文件package完成实现的。

真的很简单,我就不演示了。

补充下通过npm卸载包、升级包。

image-20250408170207066

这里补充下,你怎么知道通过npm安装软件指定哪个版本呢?

可以去npm官网搜,看看有啥版本,再选型。

image-20250408170012731

5、package.json文件属性讲解

执行npm init就会自动在项目路径生成package.json配置文件。

image-20250408171352461

可以在package.json中定义脚本。

image-20250408172226965

生成package.json后,执行npm install xx ,会生成package-lock.json,这是基于package.json生成的。这个文件我们后面再做讲解。

image-20250408172605575

同时,package.json文件也会增加以下内容。

image-20250408172928921

这样,别的开发者,拿到代码,执行npm install,就会自动下载对应版本的依赖了。

上面^符号是什么意思,简单来说,^3.5.1,就会自动下载最新的3.x.x。大版本固定,小版本下最新的。

如果是~3.5.1,就是只更新最后一个小版本,更新为最新的3.5.x.

接下来说下package-lock.json。

image-20250409094612630

image-20250409094639361

总而言之,官方就是这么设计的。你觉得不合理也好。了解区别,可以手动更新package.json,不能更新package-lock.json。提交代码时必须提交package-lock.json,否则无法保证一致性。

6、NPM安装的包使用

image-20250409100113503

所以,下篇文章我肯定还是需要给大家介绍下webpack打包工具的。虽然我这顺序我自己也觉得有点乱,但总之不影响读者阅读、学习。而且会把技术栈全都介绍到位,没有到位的也可以给我评论区留言。接受合理建议。

好了,言归正传,讲讲没有webpack时咱怎么用npm安装的包。

第一种方法。手动在代码中导入。在html中定位路径引用包中文件,这么用和没有npm前也没有啥区别,太麻烦了。

image-20250409100456510

方法二,稍微简单一点。这是node的语法,只需要写下模块名字。

image-20250409101753495

7、练习:通过NPM安装包来解决ES6语法兼容性问题

image-20250409103948736

实际demo下,将babel引入代码中,在客户端渲染解决浏览器兼容问题。

image-20250409104533142

但是这样会加大页面渲染时间,我们可以在服务端渲染,解决这个问题。这就需要npm了。

image-20250409105311580

如果我们的镜像中没有这个包,可以在npm install时指定镜像。

image-20250409105526135

确认下。

image-20250409105546666

写配置文件。

image-20250409105746565

把插件也装上。

image-20250409105908459

项目根目录下新建src和渲染目录lib,在src下新建index.js文件。

image-20250409110127633

环境都准备好了。接下来在package.json中,将后台渲染过程直接写到脚本里。

image-20250409110618913

保存后,使用npm build下。

image-20250409110651861

在lib下就会自动生成浏览器兼容的代码了。

image-20250409110844445

8、npm竞品:yarn的安装和使用

image-20250409111144937

不过npm5以后就修复了bug啦

image-20250409111831781

使用起来,轻轻松松。

image-20250409112144886

image-20250409112524117

下篇文章将介绍webpack。敬请期待。

http://www.dtcms.com/a/122765.html

相关文章:

  • Python第八章:数据可视化——Json数据
  • Android 开发中compileSdkVersion 和 targetSdkVersion
  • Vue2下载二进制文件
  • 【动手学深度学习】LeNet:卷积神经网络的开山之作
  • 【面试】封装、继承、多态的具象示例 模板编程的理解与应用场景 链表适用的场景
  • 【vue】slot插槽:灵活内容分发的艺术
  • R语言——散点图
  • 第九章:可靠通信_《凤凰架构:构建可靠的大型分布式系统》
  • WHAT - React useId vs uuid
  • Pascal VOC 2012 数据集格式与文件结构
  • 前端性能优化的全方位方案【待进一步结合项目】
  • Redis 持久化+性能管理+缓存
  • XSS靶场闯关小游戏
  • 10A 大电流 DCDC 降流芯片 WD5030
  • 2025年AI开发学习路线
  • springboot集成大华人脸机
  • js实现跨域下载,展示下载进度以及自定义下载名称功能
  • Docker新型容器镜像构建技术,如何正确高效的编写Dockerfile
  • 前端三件套—CSS入门
  • 13_pandas可视化_seaborn
  • 青少年编程与数学 02-016 Python数据结构与算法 10课题、搜索
  • Webstorm 使用搜不到node_modules下的JS内容 TS项目按Ctrl无法跳转到函数实现
  • leetcode刷题日记——验证回文串
  • 算法比赛中常用的数学知识
  • C# Winform 入门(15)之制作二维码和拼接(QR)
  • miniconda安装R语言图文教程(详细步骤)
  • 13. git clone
  • Mysql | 主从复制的工作机制
  • 西电服务器环境配置问题汇总(一)
  • 【同步教程】基于Apache SeaTunnel从MySQL同步到MySQL——Demo方舟计划