脚手架搭建项目

1. 认识脚手架工具

  • 1.1. 前端工程的复杂化
    • 1.1.1. 如果只是开发几个小的demo程序,那么永远不要考虑一些复杂的问题:
      • 比如目录结构如何组织划分;
      • 比如如何关键文件之间的相互依赖;
      • 比如管理第三方模块的依赖;
      • 比如项目发布前如何压缩、打包项目;
      • 等等…
    • 1.1.2. 现在的前端项目已经越来越复杂:
      • 不会在是HTML中引入几个css文件,引入几个编写的js文件或者第三方的js文件这么简单;
      • 比如css可能是使用less、sass等预处理器编写,需要将它们转换成普通的css才能被浏览器解析
      • 比如Javascript代码不再只是编写几个文件中,而是通过模块化,被组成在成败上千个文件中,需要通过模块化来管理它们之间的相互依赖;
      • 比如项目需要依赖很多的第三方那个库,如何更好的管理它们(比如管理它们的依赖,版本升级等)
    • 1.1.3. 为了解决上面这些问题,需要学习一下工具;
      • 比如babel、webpack、gulp,配置它们转规则、打包依赖、热更新等等内容;
      • 脚手架的出现,就是帮助解决这一系列的问题的
  • 1.2. 脚手架是什么?
    • 1.2.1. 传统的脚手架指的是建筑学的一种结构: 在搭建楼房、建筑物时,临时搭建出来的一个框架;
    • 1.2.2. 编程中提到的脚手架(scaffold), 其实是一种工具,可以快速生成项目的工程化结构;
      • 每个项目做出完成的效果不同,但是它们的基本工程化结构是相似的;
      • 既然相似, 就没有必要每次都从零开始搭建,完全可以使用一些工具,帮助生成基本的工程化模块;
      • 不同的项目,在这个模块的基础之上进行项目的开发或者进行一些配置的简单修改即可;
      • 这样也可以间接保证项目的基本结构一致性,方便后期维护;
    • 1.2.3. 总结:脚手架让项目从搭建到开发,再到部署,整个流程变得快速和便捷;
  • 1.3. 前端脚手架
    • 1.3.1. 对于现在比较流行的三大框架都有属于自己的脚手架:
      • React的脚手架:create-react-app
      • Vue的脚手架:@vue/cli
      • Angular的脚手架:@angular/cli
    • 1.3.2. 它们的作用都是帮助我们生成一个通用的目录结构,并且已经将所需的工程环境配置好了。
    • 1.3.3. 使用这些脚手架需要依赖什么?
      • 目前这些脚手架都是node编写的,并且都是基于webpack的;
      • 所以必须在电脑上安装node环境
    • 1.3.4. 主要是学习React, 所以以React的脚手架工具:create-react-app为例
    • 1.3.5. React脚手架本身需要依赖node, 所以需要安装node环境;
      • 查看node版本,node --version
        在这里插入图片描述

2. react-react-app

  • 2.1. 安装create-react-app
    • npm install create-react-app -g
      在这里插入图片描述

    • create-react-app --version
      在这里插入图片描述

2.2. 创建react项目

  • 2.2.1. 创建React项目的命令如下

    • create-react-app 项目名称
      • 注意:项目名称不能包含大写字母
      • 另外还有更多创建项目的方式,可以参考github的readme文档(npx create-react-app my-app\npm init react-app my-app)

    在这里插入图片描述

    在这里插入图片描述

  • 2.2.2. 创建项目成功后,进入项目目录,就可以将项目运行起来:

    • cd 02_learn_scaffold
    • npm run start / npm start
      在这里插入图片描述
  • 2.2.3 目录结构分析
    在这里插入图片描述

    • 2.2.3.1. 目录结构介绍
      my-app
      ├── README.md // 项目说明文件
      ├── node_modules // 存放第三方依赖包
      ├── package-lock.json // 记录项目相关包依赖真实版本信息
      ├── package.json // 记录项目相关包依赖信息
      ├── .gitignore // git忽略文件
      ├── public // 存放静态资源文件
      │ ├── favicon.ico // 项目网站图标
      │ ├── index.html // 项目入口模板文件
      │ └── manifest.json // 和Web App配置相关 (pwa应用可以把网站添加到桌面图标,就像手机上安装其他的app应用一样,它作用就是想要像app一样拥有一些东西的配置文件)
      │ └── robots.txt // 爬虫的配置文件,用来告诉别人那些东西可以爬取,哪些不能爬取
      └── src // 存放源代码
      ├── App.css // App组件相关的样式
      ├── App.js // App组件的代码文件
      ├── App.test.js // App组件的测试代码文件
      ├── index.css // 全局的样式文件
      ├── index.js // 整个应用程序的入口文件
      ├── logo.svg // 刚启动项目看到的React图标
      └── serviceWorker.js // 离线缓存配置文件
      └── reportWebVitals.js // 网页性能监测相关的文件
      └── setupTests.js // 自动执行的测试配置文件
  • 2.2.3.2. package-lock.json文件中的react依赖依赖

    • "react": {"version": "19.1.1", // 版本号"resolved": "https://registry.npmmirror.com/react/-/react-19.1.1.tgz", // 仓库地址"integrity": "sha512-w8nqGImo45dmMIfljjMwOGtbmC/mk4CMYhWIicdSflH91J9TyCyczcPFXJzrZ/ZXcgGRFeP6BU0BEJTw6tZdfQ==", //查找本地缓存,如果本地有缓存,则不会从服务器下载,直接解包本地缓存里面的东西就可以了"requires": { // 依赖另外的包...}}   
      
  • 2.2.3.3. 了解PWA

    1. 整个目录结构都非常好理解,只是有一个PWA相关的概念;
    • 1.1. PWA的全称是Progressive Web App,即渐进式Web应用
    • 1.2. 一个PWA应用首先是一个网页,可以通过web技术(React/Vue等等)编写出一个网页应用
    • 1.3. 随后添加上App ManifestService Worker来实现PWA的安装和离线等功能;
      • App Manifest文件:
        • 相当于间接的把一个网站变成了一个像APP一样的一个东西的配置文件,变成了一个桌面图标,一点击桌面图标可以直接打开网站,这个就是PWA想要做的一个事情;
        • 如果想要做一个PWA应用,它就必须要求有个Manifest文件
        • Manifest文件就是关于网站想要像App一样拥有一些东西的配置文件
        •   {"short_name": "React App", // 桌面图标名称"name": "Create React App Sample", // 完整名称"icons": [ // 图标{"src": "favicon.ico","sizes": "64x64 32x32 24x24 16x16","type": "image/x-icon"},{"src": "logo192.png","type": "image/png","sizes": "192x192"},{"src": "logo512.png","type": "image/png","sizes": "512x512"}],"start_url": ".", // 指定应用启动URL"display": "standalone",  // 指定应用显示模式, standalone: 表示应用以独立应用程序的形式运行,不显示浏览器的地址栏、工具栏等UI元素,提供类似原生应用的用户体验。"theme_color": "#000000", // 指定应用主题色"background_color": "#ffffff" // 背景色}
          
    • 1.4. 这种web存在的形式,我们也称之为Web App
    1. PWA解决那些问题:
    • 2.1. 可以添加至主屏幕,点击主屏幕图标可以实现启动动画以及隐藏地址栏;
    • 2.2. 实现离线缓存工鞥男,即使用户手机没有网络,依然可以使用一些离线功能;
    • 2.3. 实现了消息推送;
    • 2.4. 等等一系列类似于Native App相关的功能;
    1. 更多PWA相关的知识,可以参考MDN文档
    • 3.1. 地址:https://developer.mozilla.org/zh-CN/docs/Web/Progressive_web_apps

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

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

相关文章

Golang 调试技巧:在 Goland 中查看 Beego 控制器接收的前端字段参数

🐛 Golang 调试技巧:在 Goland 中查看 Beego 控制器接收的前端字段参数 在使用 Beego 开发 Web 项目时,我们常常会在控制器中通过 c.GetString()、c.GetInt() 等方法获取前端页面传过来的字段值。而在调试过程中,如何在 Goland 中…

sqli-labs:Less-2关卡详细解析

1. 思路🚀 本关的SQL语句为: $sql"SELECT * FROM users WHERE id$id LIMIT 0,1";注入类型:数值型提示:参数id无需考虑闭合问题,相对简单 2. 手工注入步骤🎯 我的地址栏是:http://l…

TRAE 软件使用攻略

摘要TRAE 是一款集成了人工智能技术的开发工具,旨在为开发者提供高效、智能的编程体验。它包括三个主要组件:TRAE IDE、TRAE SOLO 和 TRAE 插件。无论是编程新手还是经验丰富的开发者,都可以通过 TRAE 提高工作效率和代码质量。标题一&#x…

将开发的软件安装到手机:环境配置、android studio设置、命令行操作

将开发的软件安装到手机环境配置android studio4.1.2安装命令行操作环境配置 注意:所有的工具的版本都需要根据当下自己的软件需要的。 Node:14.16.0 (如果安装了npm,可以使用npm进行当前使用node版本的更改) &#x…

Jmeter 命令行压测、HTML 报告、Jenkins 配置目录

Jmeter 命令行压测 & 生成 HTML 测试报告 通常 Jmeter 的 GUI 模式仅用于调试,在实际的压测项目中,为了让压测机有更好的性能,多用 Jmeter 命令行来进行压测。 官方:Jmeter 最佳实践 同时,JMeter 也支持生成 HT…

记录几个SystemVerilog的语法——覆盖率

1. 前言 通常说的覆盖率有两种类型:code coverage(代码覆盖率)和functional coverage(功能覆盖率)。代码覆盖率是使用EDA工具自动从设计代码里提取出来的,功能覆盖率是用户指定的,用于衡量测试设计意图和功能进展。因此,功能覆盖…

深度学习基础—2

第一章、参数初始化 我们在构建网络之后,网络中的参数是需要初始化的。我们需要初始化的参数主要有权重和偏置,偏重一般初始化为 0 即可,而对权重的初始化则会更加重要,我们介绍在 PyTorch 中为神经网络进行初始化的方法。 1.1 常…

PyTorch深度学习快速入门学习总结(三)

现有网络模型的使用与调整 VGG — Torchvision 0.22 documentation VGG 模型是由牛津大学牛津大学(Oxford University)的 Visual Geometry Group 于 2014 年提出的卷积神经网络模型,在 ImageNet 图像分类挑战赛中表现优异,以其简…

是否需要买一个fpga开发板?

纠结要不要买个 FPGA 开发板?真心建议搞一块,尤其是想在数字电路、嵌入式领域扎根的同学,这玩意儿可不是可有可无的摆设。入门级的选择不少,全新的像 Cyclone IV、Artix 7 系列,几百块就能拿下,要是去二手平…

【模型细节】MHSA:多头自注意力 (Multi-head Self Attention) 详细解释,使用 PyTorch代码示例说明

MHSA:使用 PyTorch 实现的多头自注意力 (Multi-head Self Attention) 代码示例,包含详细注释说明:线性投影 通过三个线性层分别生成查询(Q)、键(K)、值(V)矩阵: QWq⋅x,KWk⋅x,VWv⋅xQ W_qx, \quad K W_kx, \quad V W_vxQWq​⋅x,KWk​⋅x…

PGSQL运维优化:提升vacuum执行时间观测能力

本文是 IvorySQL 2025 生态大会暨 PostgreSQL 高峰论坛上的演讲内容,作者:NKYoung。 6 月底济南召开的 HOW2025 IvorySQL 生态大会上,我在内核论坛分享了“提升 vacuum 时间观测能力”的主题,提出了新增统计信息的方法&#xff0c…

神奇的数据跳变

目的 上周遇上了一个非常奇怪的问题,就是软件的数据在跳变,本来数据应该是158吧,数据一会变成10,一会又变成158,数据在不断地跳变,那是怎么回事?? 这个问题非常非常的神奇,让人感觉太不可思议了。 这是这段时间,我遇上的最神奇的事了,没有之一,最神奇的事,下面…

【跨国数仓迁移最佳实践3】资源消耗减少50%!解析跨国数仓迁移至MaxCompute背后的性能优化技术

本系列文章将围绕东南亚头部科技集团的真实迁移历程展开,逐步拆解 BigQuery 迁移至 MaxCompute 过程中的关键挑战与技术创新。本篇为第3篇,解析跨国数仓迁移背后的性能优化技术。注:客户背景为东南亚头部科技集团,文中用 GoTerra …

【MySQL集群架构与实践3】使用Dcoker实现读写分离

目录 一. 在Docker中安装ShardingSphere 二 实践:读写分离 2.1 应用场景 2.2 架构图 2.3 服务器规划 2.4 启动数据库服务器 2.5. 配置读写分离 2.6 日志配置 2.7 重启ShardingSphere 2.8 测试 2.9. 负载均衡 2.9.1. 随机负载均衡算法示例 2.9.2. 轮询负…

maven的阿里云镜像地址

在 Maven 中配置阿里云镜像可以加速依赖包的下载,尤其是国内环境下效果明显。以下是阿里云 Maven 镜像的配置方式: 配置步骤:找到 Maven 的配置文件 settings.xml 全局配置:位于 Maven 安装目录的 conf/settings.xml用户级配置&am…

大语言模型信息抽取系统解析

这段代码实现了一个基于大语言模型的信息抽取系统,能够从金融和新闻类文本中提取结构化信息。下面我将详细解析整个代码的结构和功能。1. 代码整体结构代码主要分为以下几个部分:模式定义:定义不同领域(金融、新闻)需要抽取的实体类型示例数据…

Next实习项目总结串联讲解(一)

下面是一些 Next.js 前端面试中常见且具深度的问题,按照逻辑模块整理,同时提供示范回答建议,便于你条理清晰地展示理解与实践经验。 ✅ 面试讲述结构建议 先讲 Next.js 是什么,它为什么比 React 更高级。(支持 SSR/SSG/ISR,提升S…

React开发依赖分析

1. React小案例: 在界面显示一个文本:Hello World点击按钮后,文本改为为:Hello React 2. React开发依赖 2.1. 开发React必须依赖三个库: 2.1.1. react: 包含react所必须的核心代码2.1.2. react-dom: react渲染在不同平…

工具(一)Cursor

目录 一、介绍 二、如何打开文件 1、从idea跳转文件 2、单独打开项目 三、常见使用 1、Chat 窗口 Ask 对话模式 1.1、使用技巧 1.2 发送和使用 codebase 发送区别 1.3、问题快速修复 2、Chat 窗口 Agent 对话模式 2.1、agent模式功能 2.2、Chat 窗口回滚&撤销 2.3…