从零开始React项目架构(六)

前言


相信很多人都用过create-react-app或者类似的脚手架来快速构建项目,那我们能不能把咱们的项目做成脚手架呢?当然可以

Yeoman


Yeoman是一个强健的工具,库,及工作流程的组合,帮你网页开发者快速创建出漂亮而且引人入胜的网页程序

我们借助它,就能很容易地开发出自己的脚手架了。 Yeoman官方文档

  1. 安装Yeoman
npm install -g yo
复制代码
  1. 安装generator
npm install -g generator-generator
复制代码

yeoman将根据我们写的generator来执行构建代码。 3. 初始化项目
执行下面命令,执行之前并不需要自己新建文件夹,yo generator会帮助我们建好文件夹

yo generator
复制代码

项目名称自己设置,必须是以generator-开头,协议选择MIT,在设置了一系列问题之后

? Your generator name generator-zero-react
? The name above already exists on npm, choose another? No
Your generator must be inside a folder named generator-zero-react
I'll automatically create this folder.
? Description
? Project homepage url
? Author's Name lemon
? Author's Email 540846207@qq.com
? Author's Homepage
? Package keywords (comma to split)
? Send coverage reports to coveralls Yes
? GitHub username or organization l-Lemon
? Which license do you want to use? MIT
   create package.json
   create README.md
   create .editorconfig
   create .gitattributes
   create .gitignore
   create generators\app\index.js
   create generators\app\templates\dummyfile.txt
   create __tests__\app.js
   create .travis.yml
   create .eslintignore
   create LICENSE


I'm all done. Running npm install for you to install the required dependencies. If this fails, try running the command yourself.




I'm all done. Running npm install for you to install the required dependencies. If this fails, try running the command yourself.


npm WARN deprecated istanbul-lib-hook@1.2.1: 1.2.0 should have been a major version bump

> husky@0.14.3 install F:\mytest\yo\generator-zero-react\node_modules\husky
> node ./bin/install.js

husky
setting up Git hooks
done

npm notice created a lockfile as package-lock.json. You should commit this file.
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.2.4 (node_modules\fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.4: wanted {"os":"darwin","arch":"any"} (current: {"os":"win32","arch":"x64"})

added 923 packages in 90.431s
Thanks for using Yeoman.
- Enable Travis integration at https://travis-ci.org/profile/l-Lemon
- Enable Coveralls integration at https://coveralls.io/repos/new
复制代码
  1. 配置
    generators/app/templates是默认存放文件的目录,把所有模版文件放在这个目录下 generators/app/index.js 是配置文件
'use strict';
const Generator = require('yeoman-generator');
const chalk = require('chalk');
const yosay = require('yosay');

module.exports = class extends Generator {
	prompting() {
		this.log(yosay(`Welcome to the grand ${chalk.red('zero-react-cli')} generator!`));

		const prompts = [
			{
				type: 'input',
				name: 'name',
				message: 'Name of project:',
				default: this.appname
			},
			{
				type: 'input',
				name: 'author',
				message: 'Author:',
				default: this.user.git.name()
			},
			{
				type: 'input',
				name: 'description',
				message: 'Description:',
				default: ''
			},
			{
				type: 'list',
				name: 'projectLicense',
				message: 'Please choose license:',
				choices: ['MIT', 'ISC', 'Apache-2.0', 'AGPL-3.0']
			}
		];

		return this.prompt(prompts).then(props => {
			this.props = props;
		});
	}

	writing() {
		this.fs.copy(this.templatePath(), this.destinationPath(), {
			globOptions: {
				dot: true
			}
		});
		const pkgJson = {
			name: this.props.name,
			author: this.props.author,
			description: this.props.description,
			license: this.props.projectLicense
		};

		this.fs.extendJSON(this.destinationPath('package.json'), pkgJson);
	}

	install() {
		this.installDependencies({
			bower: false,
			npm: true
		});
	}

	end() {
		this.log(chalk.green('Construction completed!'));
	}
};
复制代码
  1. 测试
    没有发布上线的npm包,我们只需要在根目录执行npm link,然后我们就可以在新文件中使用yo generator-zero-react构建我们的项目了。

  2. zero-react
    zero-reactreact-architecture为模板仓库的脚手架。 如何使用呢?

npm install -g yo generator-zero-react
yo zero-react
复制代码

总结


这篇文章我们搭建了自己的脚手架
我发现react-architecture我们没有使用redux,下篇文章我们来加入redux

系列文章


  1. 从零开始React项目架构(一)
  2. 从零开始React项目架构(二)
  3. 从零开始React项目架构(三)
  4. 从零开始React项目架构(四)
  5. 从零开始React项目架构(五)

源码


react-architecture
generator-zero-react

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答: 一个典型的React web项目的整体架构通常包括以下几个部分:react-dom、react和其他相关库。其中,react-dom是连接React和web平台的桥梁,负责将React应用的运行结果输出到web界面上。它通过ReactDOM.render函数将React组件渲染到指定的DOM节点上。而react包提供了定义React组件的必要函数,包括React.Component用于定义类组件,setState用于更新组件的状态,以及hook用于在函数组件中使用状态和其他React特性。此外,React项目还可以使用其他相关库来增强功能,比如使用Material UI作为UI/组件库,使用Formik实现表单,使用react-router实现路由。整个项目架构可以基于create-react-app构建,并使用TypeScript编写,同时配合Express后端进行数据交互。\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* *2* [react 底层四大核心内容架构](https://blog.csdn.net/weixin_43294560/article/details/123450497)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [有哪些值得学习的大型 React 开源项目?](https://blog.csdn.net/u012384510/article/details/126151874)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值