搭建Bootstrap5+Webpack项目

我是个前端菜鸡,最近准备学习一点前端知识,先从Bootstrap5开始,毕竟早期Bootstrap还是比较火的。推出的Bootstrap5不再和jQery强制绑定,这里直接按照官方文档上来操作,打包工具我们选择Webpack。

一 前期准备
前期准备就是一个准备好软件包管理器,我这里选择的是npm。npm是JavaScript的包管理器,是node的默认的包管理器,我们可以通过命令行工具安装和管理项目所需的第三方包。所以在使用npm这工具之前,你先要安装好nodeJS。

使用npm是后面我们下载Bootstrap和用Webpack下载打包用得到。npm不仅是一个工具,他还维护了一个软件包注册中心,这里很多的开源项目,作为后台开发者你还可以把它理解为前端额maven,管理和更新自己的项目中的依赖。

这里我介绍一个工具解释nvm,这是一个管理node版本的工具,对于我们可能遇到不同项目会用到不同版本的node,可以方便我们切换。

二 下载Bootstrap
我们这里的是npm来安装下载Bootstrap,当人你也可以使用别的工具yarn,RubyGems等其他的工具来下载,这里是用npm命令行输入命令的形式下载Bootstrap

npm install bootstrap@5.3.0-alpha1

三 构建一个Bootstrap和Webpack项目
这里直接构建一个简单的可以启动的Bootstrap的Webpack项目。

你可能会问Webpack是什么,这是一个打包工具,提供了一种方式,打包JavaScript应用程序的资源,JavaScript,CSS,图片这些。和Maven也有一点像,Maven构建项目后,可以把项目打包来给我们使用,Webpack这方面也是,把这个项目达成包,真正提供出去给人家用的包。

(1)创建项目和安装Webpack
先创建一个文件夹,这里我们用vscode来打开。
比如我这里创建一个文件夹,Bootstrap51,打开这个文件夹,我们先初始化npm,避免后面询问我们交互(会生成一个package.json)。

npm init -y

然后我们下载webpack几个工具

npm i --save-dev webpack webpack-cli webpack-dev-server

npm i 就是npm install的安装命令的缩写
webpack webpack-cli webpack-dev-server,这三个是我们安装的Webpack工具:
webpack是Webpack的核心,用于模块打包。
webpack-cil是命令行工具,我们可以通过命令行来使用Webpack。
webpack-dev-server 是一个小型的服务器,Webpack编译资源,可以实施加载实时预览。

(2)安装Bootstrap和一些额外的依赖
安装 Bootstrap。我们还将安装 Popper,因为我们的下拉菜单、弹出框和工具提示依赖它来定位。如果你不打算使用这些组件,你可以在这里省略 Popper。

npm i --save bootstrap @popperjs/core

这里安装的是两个,bootstrap和 @popperjs/core是Popper核心包,定位工具提示和弹出框。

后面我们要加入一些额外的依赖,比如css的加载器,sass加载器,style加载器,,postcss加载器,以及autoprefixer支持不同浏览器CSS代码。

npm i --save-dev autoprefixer css-loader postcss-loader sass sass-loader style-loader

(3)工程结构
我们在这些该安装的安装好的情况下,我们要整理一下工程的目录结构,要按照规范创建目录,大改结构如下,这里的文件我们创建一个空文件就可以,后面我们会填写这些文件:

my-project/
├── dist/
│   └── index.html
├── src/
│   ├── js/
│   │   └── main.js
│   └── scss/
│       └── styles.scss
├── package-lock.json
├── package.json
└── webpack.config.js

(4)配置Webpack
补充webpack.config.js

const path = require('path')module.exports = {entry: './src/js/main.js',output: {filename: 'main.js',path: path.resolve(__dirname, 'dist')},devServer: {static: path.resolve(__dirname, 'dist'),port: 8080,hot: true}
}

补充dist/index.html

<!doctype html>
<html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><title>Bootstrap w/ Webpack</title></head><body><div class="container py-4 px-3 mx-auto"><h1>Hello, Bootstrap and Webpack!</h1><button class="btn btn-primary">Primary button</button></div><script src="./main.js"></script></body>
</html>

npm脚本运行Webpack
改写package.json,让npm命令来运行webpack服务器,方便我们本地测试。

打开我们项目中的package.json,找到对应的script,填写后如下

 "scripts": {"start": "webpack serve --mode development","test": "echo \"Error: no test specified\" && exit 1"}

测试npm脚本启动
在终端输入

npm start

终端不报错的话,可以看一下页面对应端口,locahost:xxx,看一下页面
(5)导入Bootstrap
将 Bootstrap 导入到 Webpack 需要我们在第一部分中安装的加载器。我们已经通过 npm 安装了这些加载器,但现在需要配置 Webpack 来使用它们(实际添加module就部分完事)。

在webpack.config.js设置加载器,最后内容如下:

const path = require('path')module.exports = {entry: './src/js/main.js',output: {filename: 'main.js',path: path.resolve(__dirname, 'dist')},devServer: {static: path.resolve(__dirname, 'dist'),port: 8080,hot: true},module: {rules: [{test: /\.(scss)$/,use: [{loader: 'style-loader'},{loader: 'css-loader'},{loader: 'postcss-loader',options: {postcssOptions: {plugins: () => [require('autoprefixer')]}}},{loader: 'sass-loader'}]}]}
}

导入Bootstrap的CSS
导入 Bootstrap 的 CSS。在 src/scss/styles.scss 中添加以下内容以导入所有 Bootstrap 的源 Sass。

// Import all of Bootstrap's CSS
@import "~bootstrap/scss/bootstrap";

将加载 CSS 并导入 Bootstrap 的 JavaScript

src/js/main.js 中添加以下内容,以加载 CSS 并导入所有 Bootstrap 的 JS。Popper 将通过 Bootstrap 自动导入。

// Import our custom CSS
import '../scss/styles.scss'// Import all of Bootstrap's JS
import * as bootstrap from 'bootstrap'

项目位置:
https://github.com/stubborn123/StudyCode/tree/master/JS/Bootstrap5/Bootstrap51

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

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

相关文章

[MySQL数据库] 索引与事务

1. 索引 1.1 概念 索引是一种特殊的文件&#xff0c;包含着对数据表里所有记录的引用指针.可以对表中的一列或多列创建索引,并指定索引的类型&#xff0c;各类索引有各自的数据结构实现. 1.2 作用 数据库中的表、数据、索引之间的关系&#xff0c;类似于书架上的图书、书籍…

【力扣】148. 排序链表

148. 排序链表 题目描述 给你链表的头结点 head &#xff0c;请将其按 升序 排列并返回 排序后的链表 。 示例 1&#xff1a; 输入&#xff1a;head [4,2,1,3] 输出&#xff1a;[1,2,3,4] 示例 2&#xff1a; 输入&#xff1a;head [-1,5,3,4,0] 输出&#xff1a;[-1,0,…

深度学习架构(CNN、RNN、GAN、Transformers、编码器-解码器架构)的友好介绍。

一、说明 本博客旨在对涉及卷积神经网络 &#xff08;CNN&#xff09;、递归神经网络 &#xff08;RNN&#xff09;、生成对抗网络 &#xff08;GAN&#xff09;、转换器和编码器-解码器架构的深度学习架构进行友好介绍。让我们开始吧&#xff01;&#xff01; 二、卷积神经网络…

【观察】容器化部署“再简化”,云原生体验“再升级”

自2013年云原生概念被提出以来&#xff0c;云原生技术和架构在过去十多年得到了迅速的发展&#xff0c;并对数字基础设施、应用架构和应用构建模式带来了深刻的变革。根据IDC预测&#xff0c;到2024年&#xff0c;新增的生产级云原生应用在新应用的占比将从2020年的10%增加到60…

Java学习-详述main方法、可变参数、数组的工具类、二维数组

详述main方法 【1】main方法&#xff1a;程序的入口&#xff0c;在同一个类中&#xff0c;如果有多个方法&#xff0c;那么虚拟机就会识别main方法&#xff0c;从这个方法作为程序的入口 【2】main方法格式严格要求&#xff1a; public static void main(String[] args){} p…

线性代数---行列式的性质

1. 行列式的行与列(按原顺序)互换

SpringCloud +UniApp技术开发saas模式的智慧工地云平台源码,支持可视化大屏端、手机端、平板端、PC端

基于微服务架构JavaSpring Cloud UniApp MySql技术开发saas模式的一套智慧工地云平台源码&#xff0c;支持多端展示&#xff1a;可视化大屏端、手机端、平板端、PC端。 智慧工地平台支持项目级、公司级、集团级多级权限划分&#xff0c;可根据企业的组织架构进行项目权限、功能…

编程入门(四)【计算机网络基础(由一根网线连接两个电脑开始)】

读者大大们好呀&#xff01;&#xff01;!☀️☀️☀️ &#x1f525; 欢迎来到我的博客 &#x1f440;期待大大的关注哦❗️❗️❗️ &#x1f680;欢迎收看我的主页文章➡️寻至善的主页 文章目录 前言两个电脑如何互连呢&#xff1f;集线器、交换机与路由器总结 前言 当你有…

【opencv】dnn示例-speech_recognition.cpp 使用DNN模块结合音频信号处理技术实现的英文语音识别...

模型下载地址&#xff1a; https://drive.google.com/drive/folders/1wLtxyao4ItAg8tt4Sb63zt6qXzhcQoR6 终端输出&#xff1a;&#xff08;audio6.mp3 、audio10.mp3&#xff09; [ERROR:00.002] global cap_ffmpeg_impl.hpp:1112 open VIDEOIO/FFMPEG: unsupported parameter…

华为手机p70即将上市,国内手机市场或迎来新局面?

4月15日&#xff0c;华为官宣手机品牌全新升级&#xff0c;p系列品牌升级为Pura。华为P70系列手机预计将于2024年第一季度末发布&#xff0c;而网友也纷纷表示期待p70在拍照、性能上的全新突破。 网友们对华为P70系列的热情高涨&#xff0c;也印证了国内高端手机市场的潜力巨大…

MySql安装(Linux)

一、清除原来的mysql环境 在前期建议使用root用户来进行操作&#xff0c;使用 su -来切换成root用户&#xff0c;但是如果老是提示认证失败&#xff0c;那么有可能我们的root密码并没有被设置&#xff0c; 我们可以先设置root的密码 sudo passwd root 然后就可以切换了。 …

Mac 利用Homebrew安装JDK

一、安装JDK17 1.安装openjdk17 2.把homebrew安装的openjdk17软链接到系统目录&#xff1a; brew install openjdk17 sudo ln -sfn $(brew --prefix)/opt/openjdk17/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk-17.jdk 一、检查是否安装成功 在Termina…

深入解析Apache Hadoop YARN:工作原理与核心组件

什么是YARN&#xff1f; YARN&#xff08;Yet Another Resource Negotiator&#xff09;是Apache Hadoop生态系统中的一个重要组件&#xff0c;用于资源管理和作业调度。它是Hadoop 2.x版本中的一个关键特性&#xff0c;取代了旧版本中的JobTracker和TaskTracker。YARN的设计目…

蚂蚁云科技集团应用研究院院长李亚锋先生受邀为第十三届中国PMO大会演讲嘉宾

全国PMO专业人士年度盛会 蚂蚁云科技集团应用研究院院长李亚锋先生受邀为PMO评论主办的2024第十三届中国PMO大会演讲嘉宾&#xff0c;演讲议题为“探索AI技术对项目管理发展的影响”。大会将于5月25-26日在北京举办&#xff0c;敬请关注&#xff01; 议题简要&#xff1a; 19…

CSS的语法规则——基础选择器

元素&#xff1a; 用法&#xff1a; 标签名&#xff1a;{style的内容} 特点&#xff1a; 全局性&#xff0c;使用后&#xff0c;所有的相同标签都是同一种样式。 举例&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"UT…

双目人体姿态匹配 | 基于双目视觉的人体姿态匹配+识别算法实现

项目应用场景 面向双目立体视觉的人体姿态匹配场景&#xff0c;项目采用 Visual Studio C 开发&#xff0c;具有人体姿态匹配 人体姿态识别能力。 项目效果 项目细节 > 具体参见项目 README.md项目获取 https://download.csdn.net/download/weixin_42405819/89113399

怎么找平台?伦敦金交易平台查询

在过去的一个星期里&#xff0c;伦敦金价格再创辉煌&#xff0c;一举突破2400大关&#xff0c;并且将历史新高刷新至2431。虽然随后金价出现较大幅度的下跌&#xff0c;但对多数投资者而言&#xff0c;这不是下跌而是回调。回调之后&#xff0c;伦敦金的涨势将继续。既然有这么…

neo4j使用详解(终章、neo4j的java driver使用模板及工具类——<可用于生产>)

Neo4j系列导航: neo4j安装及简单实践 cypher语法基础 cypher插入语法 cypher插入语法 cypher查询语法 cypher通用语法 cypher函数语法 neo4j索引及调优 neo4j java Driver等更多 1. 简介 本文主要是java使用neo4j driver操作neo4j的模板项目及非常有用的工具类,主要包括: 图…

我三战华东师范大学的同桌真的很牛

标题党一下&#xff0c;其实是我的一个关系很好的高中同桌死磕华东师范大学三年&#xff0c;最终第二名上岸的故事。 其实我们是同一届的&#xff0c;我为了早点走选择了个排名还行的双非院校就走了&#xff0c;而我这个同桌相当有毅力&#xff0c;他能坚持这么久我其实很佩服&…

微信小程序开发一(常用的标签)

去微信公众平台注册账号确定怎么操作去网上找找 网址&#xff1a;微信公众平台 (qq.com)https://mp.weixin.qq.com/https://mp.weixin.qq.com/ 微信开放文档中找到工具栏下载微信开发者工具 网址&#xff1a;微信开发者工具&#xff08;稳定版 Stable Build&#xff09;下载地…