04_前端包管理工具模块化

注意事项:

​ 改模块代码不用重启服务器,修改config文件的时候需要重启服务器

​ nvm的安装路径和node的安装路径不能在同一路径下面

​ 有乱码问题使用管理员权限进行使用use方法

下载安装node

​ 使用命令进行安装

1.nvm list 查看已下载所有的node版本

2.nvm install 版本号 下载指定版本的node

3.nvm uninstall 版本号 卸载指定版本的node

4.nvm use 版本号 使用指定版本的node/更换指定版本

5.nvm version 查看nvm的版本

C:\Users\Administrator>nvm install 18.16.0

C:\Users\Administrator>nvm uninstall 18.16.0

C:\Users\Administrator>nvm use 14.15.3

C:\Users\Administrator>nvm list

C:\Users\Administrator>nvm version

package.json文件的作用和pom.xml一样

NPM

管理前端包的依赖

使用淘宝镜像

npm install -g cnpm --registry=https://registry.npmmirror.com

注意:

​ 报错的话就更换node的版本再进行下载

使用命令创建json

cnpm innit

后面的设置默认就直接回车
在这里插入图片描述

安装依赖

有本地安装,全局安装

1.本地添加,一般都是使用本地

npm install jquery

只能在package.json文件这个包下进行添加
在这里插入图片描述

在这里插入图片描述

开发环境(默认)

​ 开发时会用到语法检查,包大小分析

npm install -D xxx

生产环境

–production

注意:当需要下载已经配置好的依赖,直接使用使用 npm install命令进行添加依赖包

yarn包管理工具

1.并行安装:

2.离线模式:

3.版本锁定:

4.信息输出 :

模块化

传统的问题

​ 请求过多:页面复杂度高

​ 依赖模糊:依赖的文件多

​ 命名空间污染:

两个核心

​ 暴露:自己可以选择暴露哪些文件,外部文件可以选择性引入

​ 封装引入:将复杂的文件封装成几个文件,和java文件相似

好处:

​ 避免命名空间污染

​ 代码复用性高

​ 责任分离,按需加载

​ 不关心模块之间依赖问题

​ 增加代码的可维护性

commjs规范(模块化)

在服务器端,模块的加载是运⾏时同步加载的;在浏览器端,模块需要提前编译打包处理。只有在运行时才能确定

语法:使用关键字module.exports require

暴露模块

module.exports = value;   //暴露部分
exports.xxx = value;   //暴露全部

引入模块

let m1=require('./m1');//引入整个文件

ES6模块化

不需要在运行的时候才确定

导出(export)两种方式

export {name,age};//按需导出
export default {name,age,fun};//默认导出所有

导入(import)两种方式

后缀名可以不用写

import {name,age} from './m1.mjs';//按需导入
import xxx from './m1.mjs';//导入所有

五.Webpack(自动化,模块化,前端开发构建工具)

1.作用

是一个JavaScript应用程序静态模块打包工具,可以将多个文件打包到单个文件中,解决了项目模块化和代码复用问题

2.webpack初体验

2.1本地安装(必须安装)

,命令⾏中是没有 webpack 命令的,因此要使⽤的话,需要在 package.json ⽂件中加⼊ scripts 属性,并将其值设置为对象,在对象中添加 “build”: “webpack index.js -o dist/bundle.js” 属性

2.2全局安装(可选)

看自己是否需要在命令行使用webpack命令,不需要可以不用安装

2.3测试:

执行完打包,就可以打开浏览器

3.webpack.config.js

3.1通过配置文件打包

代码在课件中,复制即可

4.webpack- dev- server

以上的方式都是静态方式,每次发生变动,都要重新打包才有效果,现在借用一个插件(标题)来实现自动打包和部署,该插件会帮我们启动⼀个简易的 http 服务器,并且动态监听源⽂件的变动,每当⽂件发生变动以后,它会⾃动帮我们重新加载该⽂件,⼤⼤的提升了开发的效率。

1.安装插件 :(代码课件复制即可)

2.修改配置

在这里插入图片描述

里面属性的含义:

–open ⾃动打开浏览器

–port 服务监听的端⼝ 3000

–hot ⽂件变动后⾃动更新

3.启动:

上⾯配置修改完成后,再修改 index.html ⽂件中引⼊ bundle.js 的路径为 ./bundle.js 即

可,此时在命令⾏执⾏ yarn build 就会启动⼀个 http 服务器,并且会⾃动打开浏览器窗⼝。

然后可以通过修改 index.js ⽂件,⽐如将 red 修改为 gray ,会发现修改完成后,浏览器⾃动更

新为最新的代码。

5.html-webpack-plugin

**问题:**通过上⾯的配置,我们已经可以⽐较轻松的在 webpack 开发了,但是还存在⼀个⼩问题就是 index.html ⽂件中引⽤ bundle.js ⽂件是被我们写死的,如果哪天不叫这个名字,或者加⼊了其他依赖,无法进行使用

安装插件:(课件中复制即可)

6.css- loader

为了将 CSS 也当作是⼀个模块,当其它模块需要⽤到对应的 CSS 时,可以使⽤ impot/require 等

⽅式⽅便的导⼊,我们需要安装 style-loader 和 css-loader,并在 webpack.config.js 中添加这

些 loader

css-loader:将 index.css ⽂件解析为 webpack

能识别的模块,然后打包进 bundle.js ⾥

⾯,但是这样样式与 index.html 还没有关系,想要关联起来就得⽤到 style-loader 了。

style-loader:将打包到 bundle.js 中的样式绑定到 index.html 上,以 style 标签的形式写⼊进

去转换过程: index.css -> bundle.js -> style-loader ->

安装 css-loader 和 style-loader:课件有复制即可

7.ES6转ES5

问题:由于现在开发基本都是基于 ES6 语法进⾏的,但是市⾯上并不是所有浏览器都能够直接⽀持 ES6,因此我们可以使⽤ webpack 集成 babel 来进⾏版本的转换,在编译时⾃动将 ES6 转换为 ES5,也就可以兼容绝⼤部分浏览器了。

流程步骤课件有复制即可

注意:exclude 表示排除掉 node_modules 下载的依赖项。这样可以加速编译效率,⽽且我们也只需要对我们的项⽬ src 中的源文件进行编译即可。新增 .babelrc 配置⽂件,并加⼊以下内容

{
  "presets":["env","stage-0"],
  "plugins":["transform-runtime"]
}

bpack 集成 babel 来进⾏版本的转换,在编译时⾃动将 ES6 转换为 ES5,也就可以兼容绝⼤部分浏览器了。

流程步骤课件有复制即可

注意:exclude 表示排除掉 node_modules 下载的依赖项。这样可以加速编译效率,⽽且我们也只需要对我们的项⽬ src 中的源文件进行编译即可。新增 .babelrc 配置⽂件,并加⼊以下内容

{
  "presets":["env","stage-0"],
  "plugins":["transform-runtime"]
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

leetcode146.手撸 LRU 算法(java)

LRU 缓存 LRU 缓存题目描述LRU 介绍LRU 算法设计代码实现 单调栈算法 LRU 缓存 来源:力扣(LeetCode) 链接:https://leetcode.cn/problems/lru-cache 题目描述 请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。 实…

设计模式学习之抽象工厂模式

设计模式系列往期文章 设计模式学习之策略模式设计模式学习之策略模式在前端的应用设计模式学习之简单工厂模式设计模式学习之工厂方法模式 如果你已经理解了工厂方法模式,那你能够很快的明白抽象工厂模式。 温习:什么是工厂方法模式 我们先温习一下…

[muduo学习笔记]事件分发器(Channel、Poller)

此学习笔记参考施磊老师的muduo教学课程。 目的是搞懂 muduo 网络库的核心框架。EventLoop、channel 和 Poller 之间的关系 文章目录 1 Poller 抽象基类2 Channel3 模块的包含muduo模块梳理参考: 整体框架如下: muduo是基于 Reactor 模式的网络库&#…

【前端|HTML系列第2篇】HTML零基础入门之标签元素

大家好,欢迎来到前端入门系列的第二篇博客。在这个系列中,我们将一起学习前端开发的基础知识,从零开始构建网页和Web应用程序。本篇博客将为大家介绍HTML(超文本标记语言)常用标签元素,帮助零基础小白快速入…

基于深度学习的高精度抽烟行为检测识别系统(PyTorch+Pyside6+YOLOv5模型)

摘要:基于深度学习的高精度抽烟行为检测识别系统可用于日常生活中或野外来检测与定位抽烟行为目标,利用深度学习算法可实现图片、视频、摄像头等方式的抽烟行为目标检测识别,另外支持结果可视化与图片或视频检测结果的导出。本系统采用YOLOv5…

虚幻引擎(UE5)-大世界分区WorldPartition教程(一)

文章目录 WC与WP的区别一、如何开启WP1.默认创建WP2.手动创建WP3.转换创建WP 二、设置World Partition参数三、启动流送总结 提示:以下是本篇文章正文内容,下面案例可供参考 WC与WP的区别 WorldCompostion(WC) 是UE4中制作大世界…

Apifox|API 文档和开发闭环初体验

Apifox是一款集文档、接口定义、数据模拟、自动化测试为一体的接口协作平台。 据功能介绍,基本总结Apifox Postman Swagger Mock JMeter 既然评的文章那么多,掀起了一阵子热度,究竟哪些功能: 用下来有哪些体会:…

第7章 Scala集合

第7章 Scala集合 7.1 简介 ​ ​ scala.collection.immutable ​ scala.collection.mutable ​ 7.2 数组 ​ 不可变数组 package chapter07object Test01_ImmutableArray {def main(args: Array[String]): Unit {// 1. 创建数组val arr: Array[Int] new Array[Int](10…

多项目管理难在哪,多项目同时进行该如何做好进度管理?

最近,听到群里的项目经理吐槽,手上有10多个项目同时进行,工作起来手忙脚乱,杂乱无章,让他压力特别大。 对于项目经理来说,多项目并行推进的情况已是常态。从工作层面来说,不仅在各项目之间抢资…

SpringBoo集成MongoDB

一、集成简介 spring-data-mongodb提供了MongoTemplate与MongoRepository两种方式访问mongodb,MongoRepository操作简单,MongoTemplate操作灵活,我们在项目中可以灵活适用这两种方式操作mongodb,MongoRepository的缺点是不够灵活…

购物车业务

一、分析购物车vo (1)添加成功页 public class CartItemVo implements Serializable {/*** 商品id*/private Long skuId;/*** 是否选中*/private Boolean check true;/*** 商品标题*/private String title;/*** 商品图片*/private String image;/***…

如何优雅的将 Docker 镜像从 1.43G 瘦身到 22.4MB

Docker 镜像的大小对于系统的 CI/CD 等都有影响,尤其是云部署场景。我们在生产实践中都会做瘦身的操作,尽最大的可能使用 Size 小的镜像完成功能。下文是一个简单的 ReactJS 程序上线的瘦身体验,希望可以帮助大家找到镜像瘦身的方向和灵感。 …

C++之GNU C的__attribute__((constructor))优先级使用(一百四十九)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生…

【期末不挂科 学习数据结构】

期末不挂科 学习数据结构 第一章绪论1.1数据结构的基本概念1.1.1基本概念和术语1.数据2.数据元素3.数据对象4.数据类型5.数据结构 1.1.2数据结构三要素1.数据的逻辑结构2.数据的存储结构3.数据的运算 第一章绪论 1.1数据结构的基本概念 1.1.1基本概念和术语 1.数据 数据是信…

Flutter学习四:Flutter开发基础(四)包管理

目录 0 引言 1 包管理 1.1 简介 1.2 Pub仓库 1.3 依赖Pub仓库 1.3.1 查找包 1.3.2 添加包 1.3.3 下载包 1.3.4 引入包 1.3.5 使用包 1.4 其他依赖方式 1.4.1 依赖本地包 1.4.2 依赖git仓库 1.4.3 不常用的依赖方式 0 引言 本文是对第二版序 | 《Flutter实战第二版…

【ArcGIS】使用ArcMap进行北京1954-120E坐标转WGS84坐标系

背景 在进行青岛地市GIS数据迁移,涉及坐标转换,经过几天摸索终于找到迁移方法 投影坐标系 北京1954-120E坐标 对应为高斯-克吕格投影 300000 3000001 0 0(青岛本地坐标) 增量:-300000 -3000001(此处为示例&#xff0c…

(15)第一人称视角视频

文章目录 前言 15.1 推荐的零件 15.2 连接图示 15.3 通过任务计划器最小化OSD设置 15.4 集成式OSD 15.5 用户视频/博客 15.6 与FPV飞行特别相关的安全警告 15.7 政府/地方法规 前言 第一人称视角在飞行时为你提供了真正的飞行员视角,它将视频摄像机和发射器…

什么是信号槽机制,如何实现,有什么用?(Qt面试题)

1. 什么是信号槽机制? 信号槽机制(Signal-Slot mechanism)是一种在软件开发中常用的设计模式,用于实现对象间的通信和事件处理。该机制最初由Qt框架引入并广泛应用,后来也被其他编程框架和库所采用。 信号槽机制通过定…

Spring Boot 属性配置解析

基于Spring Boot 3.1.0 系列文章 Spring Boot 源码阅读初始化环境搭建Spring Boot 框架整体启动流程详解Spring Boot 系统初始化器详解Spring Boot 监听器详解Spring Boot banner详解 属性配置介绍 Spring Boot 3.1.0 支持的属性配置方式与2.x版本没有什么变动,按照…

C#使用XML和Treeview结合实现复杂数据采集功能

一个项目的数据表暂时没有定下来,但是有了一些确定性:   1、比较复杂,可能变化;   2、大部分是选择项目,因为输入项目都差不多;   3、应用程序是C/S的窗体应用。   对于这样的用户需求,…