5. React脚手架

296 阅读3分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第5天,点击查看活动详情

5. React脚手架

5.1 Forward

  • 前端工程复杂化:
    • 目录结构如何组织划分;
    • 管理文件之间的相互依赖;
    • 管理第三方模块的依赖;
    • 项目发布前压缩、打包项目;
  • 解决以上问题的工具:
    • babel、webpack、gulp,配置转换规则、打包依赖、热更新等
    • 使用脚手架

5.2 脚手架(scaffold)

  • 定义:项目的基本工程化结构相似,因此可以利用工具生成基本工程化模版
  • 优点:搭建快速便捷,保证项目基本结构一致,方便后期维护
  • 前段脚手架:Vue(vue-cli)、 angular(angular-cli)、 React(creat-react-app)
  • 使用脚手架基础:安装node(已知的脚手架都是用node编写,且基于webpack)

5.3 相关安装

  • 安装node:LTS版本(LongTermSupport),自带安装工具npm(node packages manager)
  • yarn安装: npm install -g yarn (sudo 安装权限不够在最前方加上)
    • yarn包管理工具:早期出现弥补npm缺陷(安装依赖慢、版本管理混乱),React默认使用yarn
  • 脚手架安装:npm install -g create-react-app

5.4 通过脚手架创建React项目

  • 注意事项:项目名称不能包含大写字母(可以用 _ or - 分割单词)
  • 创建方式:create-react-app project_name (其他创建方式参考github中readme文档)
    • npx create-react-app my-app
    • npm init react-app my-app
    • yarn create react-app my-app
  • 运行项目:打开项目文件夹后 yarn start -> 打开reactlogo的网页代表项目创建运行成功
    • 默认开启本地服务:http://localhost:3000/
    • yarn start启动项目本质:执行package.json文件中script对象中的start -> 'react-script start' -> webpack启动项目

5.5 新建项目文件作用

  • node_modules: 当前项目依赖

  • public:

    • favicon.icon -> 图标
    • logo192.png/ log512.png -> 图片(与manifest有关)
    • index.html -> 项目入口 (多数项目采用单页面复用 -> 仅一个html文件)
    • manifest.json -> 配置web app
    • robots.txt -> 设置爬虫规则
  • src: 源代码文件[重要]

    • App.css -> App的CSS文件
    • App.js -> App函数式组件 (修改会立即编译更新界面 -> 热更新 hot reload)
    • App.test.js -> 测试
    • index.css -> 全局样式
    • index.js -> react代码入口
    • log.svg -> svg图片
    • reportWebVitals.js //minelostthisfile * serviceWork.js -> 注册PWA
    • setupTests.js -> 初始化测试
  • .gitignore: git忽略文件

  • package-lock.json: 真实(固定)的版本依赖

  • package.json: 管理依赖库、项目配置信息

  • README.md: 项目md文档

  • notes:

    • 分享时删除node_modules
    • 打开项目时重新安装依赖: yarn install

其他相关知识

5.6 PWA了解

  • 概念: 渐进式WEB应用(Progressive Web App),具有安装和离线功能的网页,需要添加APP Manifest和Service Worker来实现
  • 作用:
    • 可以添加至主屏幕(点击图片可以实现启动动画及隐藏地址栏)
    • 实现离线缓存功能
    • 实现消息推送
    • 实现一系列Native App相关功能

5.7 webpack了解

  • 概念:静态模块打包器(module bundler)
  • 作用:递归地构建依赖关系图(dependency gragh),包含应用程序所需要的模块,将所有模块打包成一个(或多个)bundle
    • modules with dependencies -> static assets
  • 暴露脚手架中的webpack相关文件:yarn eject
    • 新增了文件夹 webpack、node_modules、scripts,新增了package中的依赖,暴露了script中start实际运行的node文件

5.8 git

  • 确定所有改变 git add .
  • 提交 git commit -m 'notes'