create-react-app,如何初始化一个typescript模版?
发布于 作者:苏南大叔 来源:程序如此灵动~react
项目一般都是使用create-react-app
来初始化的,这款工具通过下载一个模版项目并安装依赖来初始化一个react
项目。当然,默认的模版就是基于普通的js
的。那么,其实还有另外一个分支,就是typescript
。那么,如何初始化一个基于typescript
的react
项目模版呢?两者又有什么样的区别呢?
大家好,这里是苏南大叔的程序如此灵动博客,这里记录苏南大叔和计算机代码的故事。本文描述react
项目的两个模版间的区别。本文测试环境:create-react-app@5.0.1
,react@18.2.0
,react-dom@18.2.0
,node@16.14.2
。
基本前提
首先需要全局安装create-react-app
这款工具,这个是本文的前提:【全局安装】。
npm install create-react-app -g
如果后续的安装过程中,存在着太慢的问题,可以切换一下默认的仓库地址。比如:
npm config set registry https://registry.npm.taobao.org/
可以使用下面的命令,查看一下create-react-app
的版本号。
create-react-app --version
当然,如果你喜欢使用
npx
命令的话,那么全局安装create-react-app
这段内容就当没说。因为npx
是用谁就下谁的,根本不考虑安装的事情。参考文章:
普通的模版
本段目标是获取一个名为demo
的项目,执行代码:
create-react-app demo
然后运行这个项目:
cd demo
npm start
参考文章:
typescript
模版
然后本文的主要重点内容,就是获得一个基于typescript
的模版项目demo2
。执行命令如下:
create-react-app demo2 --template typescript
命令就是多了一个--template
参数,来指定了一个新的typescript
模版。
运行这个项目:
cd demo2
npm start
项目结构对比
实际上,从两者的外部表现上来看,两者的界面几乎是没有啥差别的。
代码结构对比如下:
文件对比
app.tsx
对比app.js
,内容是几乎一样的。index.tsx
对比index.js
,文件内容稍稍有点区别:
typescript
项目,多了两个配置文件tsconfig.json
和src/react-app-env.d.ts
。
tsconfig.json
文件内容如下:
{
"compilerOptions": {
"target": "es5",
"lib": [
"dom",
"dom.iterable",
"esnext"
],
"allowJs": true,
"skipLibCheck": true,
"esModuleInterop": true,
"allowSyntheticDefaultImports": true,
"strict": true,
"forceConsistentCasingInFileNames": true,
"noFallthroughCasesInSwitch": true,
"module": "esnext",
"moduleResolution": "node",
"resolveJsonModule": true,
"isolatedModules": true,
"noEmit": true,
"jsx": "react-jsx"
},
"include": [
"src"
]
}
src/react-app-env.d.ts
文件内容如下:
/// <reference types="react-scripts" />
相关文章
- https://newsn.net/say/create-react-app.html
- https://newsn.net/say/create-react-app-redux.html
- https://newsn.net/say/webpack-react-env.html
结论
结论就是create-react-app
通过--template
参数,加载不同的模版。至于这些模版是在哪里存放的,目前不是所考虑的范畴。如果以后有了自己的模版的话,就可以去研究一下这个问题了。
typescript
的用法,也不是本文的考虑范畴。可以知道的是:几乎和普通的代码是一样的,就是多了一些类型限制。更多苏南大叔写的react
相关经验文章,请点击:
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。