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

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

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

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

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

1、npm的地位

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

2、什么是npm?

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

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

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

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

官网。

3、npm安装

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

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

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

4、npm的基本使用

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

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

成功后,下载起飞咯。

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

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

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

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

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

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

5、package.json文件属性讲解

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

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

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

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

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

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

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

接下来说下package-lock.json。

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

6、NPM安装的包使用

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

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

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

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

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

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

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

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

确认下。

写配置文件。

把插件也装上。

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

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

保存后,使用npm build下。

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

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

不过npm5以后就修复了bug啦

使用起来,轻轻松松。

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

相关推荐
_一条咸鱼_33 分钟前
深入解析 Vue API 模块原理:从基础到源码的全方位探究(八)
前端·javascript·面试
患得患失9491 小时前
【前端】【难点】前端富文本开发的核心难点总结与思路优化
前端·富文本
执键行天涯1 小时前
在vue项目中package.json中的scripts 中 dev:“xxx“中的xxx什么概念
前端·vue.js·json
雯0609~1 小时前
html:文件上传-一次性可上传多个文件,将文件展示到页面(可删除
前端·html
涵信1 小时前
2024年React最新高频面试题及核心考点解析,涵盖基础、进阶和新特性,助你高效备战
前端·react.js·前端框架
mmm.c1 小时前
应对多版本vue,nvm,node,npm,yarn的使用
前端·vue.js·npm
混血哲谈1 小时前
全新电脑如何快速安装nvm,npm,pnpm
前端·npm·node.js
天天扭码1 小时前
项目登录注册页面太丑?试试我“仿制”的丝滑页面(全源码可复制)
前端·css·html
桂月二二2 小时前
Vue3服务端渲染深度实战:SSR架构优化与企业级应用
前端·vue.js·架构
萌萌哒草头将军2 小时前
🚀🚀🚀 这六个事半功倍的 Pinia 库,你一定要知道!
前端·javascript·vue.js