前端系列总结-框架篇(1)Create-React-App

本文介绍了Create-React-App作为React项目脚手架的使用,包括如何安装、项目的目录结构、个性化配置,如添加路径别名、设置接口代理转发以及在HTML中动态插入js文件的方法,帮助开发者实现零配置开发React应用。
摘要由CSDN通过智能技术生成

create-react-app的介绍、安装和使用

create-react-app是React团队推出的一款用于生成react项目的脚手架工具,可以实现零配置开发react的单页面应用。

安装和使用

一般来说都是使用npm全局安装,前提条件是已经配置好node环境

// 全局安装
npm install -g create-react-app

// 回答相关问题后在当前目录下创建my-first-app项目,并安装相关依赖
create-react-app my-first-app

// 进入项目目录下 npm run start 也可以简写成 npm start,完成后浏览器会自动开启localhost:3000
cd my-first-app && npm run start 

项目的目录结构

├── package.json
├── public                  # webpack的静态资源目录
│   ├── favicon.ico
│   ├── index.html          # 默认是单页面应用,这个是最终的html的基础模板
│   └── manifest.json
├── src						# 源码目录
│   ├── App.css             # 根组件样式
│   ├── App.js              # 根组件代码
│   ├── App.test.js 		# 根组件测试文件
│   ├── index.css           # react的入口文件样式
│   ├── index.js            # react的入口文件,使用ReactDom渲染页面
│   ├── logo.svg			# 网站ico
│   └── serviceWorker.js
├── package.json   		    #记录项目依赖以及相关信息
└── yarn.lock

package.json下的相关脚本:

"scripts": {
   
    "start": "react-scripts start", // 启动项目
    "build": "react-scripts build",// 构建项目
    "test": "react-scripts test",// 启动测试脚本
    "eject": "react-scripts eject"// 暴露webpack及相关配置,无法恢复
  }

项目的个性化配置

在开发过程中,可能会遇到一些脚手架没有预先配置好的情况,比如接口的代理转发,动态文件的插入,以及文件路径的别名等等需求。这些都需要开发者自己执行eject脚本后自行配置。
执行eject后项目结构会发生一些变化,多出了config和script两个目录,分别存放一些通用的配置如环境变量,项目路径和项目的相关脚本。
center

添加项目路径别名

在编码过程中,使用到项目中的组件或其他功能函数时,一般都是采用相对路径的方式引入,即:’./‘’…/’,这样的做法好处是,编辑器可以进行友好的提示,不好就是当路径层级较深时变得很复杂,而且项目需要改动或迁移时就会显得很麻烦。所以可以通过修改webpack的配置来改善这一情况。
首先为了方便也为了统一,先在paths下添加路径变量:

module.exports = {
   
    dotenv: resolveApp('.env'),
    appPath: resolveApp('.'),
    appBuild: resolveApp(buildPath),
    appPublic: resolveApp('public'),
    appHtml: resolveApp('public/index.html'),
    appIndexJs: resolveModule(resolveApp, 'src/index'),
    appPackageJson: resolveApp('package.json'),
    appSrc: resolveApp('src'),
    appTsConfig: resolveApp('tsconfig.json'),
    appJsConfig: resolveApp('jsconfig.json'),
    yarnLockFile: resolveApp('yarn.lock'),
    testsSetup: resolveModule(resolveApp, 'src/setupTests'),
    proxySetup: resolveApp('src/setupProxy.js'),
    appNodeModules: resolveApp('node_modules'),
    swSrc: resolveModule(resolveApp, 'src/serviceWorker'),
    publicUrlOrPath,
    // 以下为添加部分
    componentsPath: resolveApp('src/components'),
    cssPath: resolveApp('src/statics/styles/css'),
    scssPath: resolveApp('src/statics/styles/scss'
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值