关于 React、TypeScript 的介绍和其在前端的重要地位,想必你们都很清楚吧,在这里笔者就不介绍了。你也许会问为何要基于 TypeScript3 构建 React ?不一样的人也许有不一样的答案,因为 TypeScript3 和 React 分别来自微软和Facebook,其江湖地位的显赫不言而喻,前端的三大框架,Angular 在2.O版本就已经开始拥抱 TypeScript,当时笔者就是由于这个缘由放弃 Angular 的,由于还得学一门新东西,想一想就后悔。可是今时不一样往日,React和vue都在积极的跟进选用和 TypeScript 进行整合,这是将来前端框架的趋势不可逆转,这可不是学不学的问题,不学 TypeScript,将来有可能就用不上最新的版本。html
React的强大灵活些再结合TypeScript带来了可选的静态类型检查以及最新的ECMAScript特性,让咱们能以相似Java这样工程化的思惟构建咱们的项目,让咱们的代码更易阅读和易于团队开发与维护。前端
本系列文章,是笔者读《React with TypeScript 3》这本书的读书笔记,这本书的发行日期为2018年11月份,此笔记内容并非彻底照搬书的内容进行翻译,是结合笔者思考和练习实践整合的内容。笔者也是初学者,在这里与你们一块儿分享共同窗习,因为做者写此书时,使用到的相关框架版本和依赖项目版本如今有所变化,本书的例子笔者都会亲自实践,替你们提早采坑,确保能正常运行。因为笔者英语水平有限,理解不免有所误差,如你发现问题欢迎你们关注“前端达人”公众号留言指正,我们一块儿共同进步。vue
为了表示对做者劳动的尊重,我就不在这里分享电子书了,感兴趣的能够能够到packtpub官网购买(packtpub.com)。node
在学习以前,咱们先了解下本书的做者:Carl Rippon。Carl Rippon 从事软件行业已超过20年,在各个领域开发了一系列复杂的业务应用程序。过去八年来,他一直使用各类 JavaScript 技术构建单页应用程序,包括 Angular,ReactJS 和 TypeScript。 Carl 一共发表了100多篇关于前端技术的博客文章。react
因为本书在一开始花了很多的篇幅介绍 TypeScript ,为了让你们快速接触基于 TypeScript3 的 React 项目笔者就不在这系列里进行介绍 TypeScript3 了,若是你认为有必要介绍,欢迎你们在留言区留言,若是留言人数多的话,我会专门开设个 TypeScript 3 专题进行专门介绍。webpack
本系列目录结构暂定以下,在笔者读的过程当中,为了让你们更全面的理解本系列专题,可能会进行补充和调整,并非彻底基于书的结构。git
为了有更好的阅读体验,你至少具有基础的JS、CSS基础知识,掌握了一些 ES6+语法和 TypeScript 的基础知识。es6
运行本系列示例你至少安装了node环境,npm版本至少为 5.2,有一款你熟悉的编辑器,推荐你使用 Visual Studio Code 。( 须要 TSLint 扩展和 Prettier 扩展。)github
本系列笔者运行环境: npm 6.9.0;node v10.16.3web
笔者将介绍两种方式进行构建 React TS3 ( TypeScript3 简称,后面的内容都会以简称出现),分别为使用 create-react-app 进行快速构建 和 手工方式构建。
使用如下命令进行全局安装:
npm install -g create-react-app复制代码
npx create-react-app my-react-ts-app --typescript复制代码
npm install react@16.7.0-alpha.0
npm install react-dom@16.7.0-alpha.0复制代码
cd my-react-ts-app
npm install tslint tslint-react tslint-config-prettier --save-dev复制代码
为了方便开发,咱们在Visual Studio Code 编辑器里安装扩展(Ctrl + Shift + X),在左上角的搜索框中输入tslint
touch tslint.json复制代码
{
"extends": [
"tslint:recommended",
"tslint-react",
"tslint-config - prettier "
],
"rules": {
"ordered-imports": false,
"object-literal-sort-keys": false,
"no-debugger": false,
"no-console": false,
},
"linterOptions": {
"exclude": [
"config/**/*.js",
"node_modules/**/*.ts",
"coverage/lcov-report/*.js"
]
}
}复制代码
上述配置规则容许咱们开发时使用 debugger 和 console,而且容许imports的导入和对象key的声明能够不按照字母的顺序进行排序。规则的设置介绍就不在这里详细介绍了,感兴趣的能够到官网进行详细阅读( palantir.github.io/tslint/rule… )。
<a className="App-link" href="https://reactjs.org" target="_blank" rel="noopener noreferrer" >
Learn React and TypeScript
</a>复制代码
修改完后,咱们进行保存。
若是你能按照上述顺序执行,输入如下命令,不出意外你就能成功运行咱们的的项目了
npm start复制代码
手动建立步骤比较繁杂,可是可以从0~1的那种体验,仍是蛮有成就感的。
首先咱们手动建立一个文件夹manually,而后在manually下建立src源文件文件夹和发布环境用的dist文件夹
mkdir manually
cd manually
mkdir src
mkdir dist复制代码
该 package.json 文件定义了咱们的项目名称,描述,构建命令,依赖的 npm 模块等等。
打开终端输入如下命令:
mkdir manually
npm init复制代码
而后按照提示输入项目的相关信息,而后就会在项目根目录里自动建立一个 package.json 文件
咱们能够经过如下命令,在本地项目进行安装:
npm install typescript --save-dev复制代码
tsconfig.json 配置了 TS3 如何编译以及相关的基本规则,配置以下:
{
"compilerOptions": {
"target": "es5",
"module": "es6",
"moduleResolution": "node",
"lib": ["es6", "dom"],
"sourceMap": true,
"jsx": "react",
"strict": true,
"noImplicitReturns": true,
"rootDir": "src",
"outDir": "dist",
},
"include": ["**/*.ts", "**/*.tsx"],
"exclude": ["node_modules"]
}复制代码
在本地项目下安装TSLint,命令以下:
npm install tslint tslint-react tslint-config-prettier --save-dev复制代码
经过如下命令建立tslint.json文件,并在文件里输入以配置内容:
touch tslint.json复制代码
{
"extends": ["tslint:recommended", "tslint-react", "tslint-config-prettier"],
"linterOptions": {
"exclude": ["node_modules/**/*.ts"]
}
}
复制代码
经过如下命令将React安装到咱们的项目里:
npm install react react-dom复制代码
npm install @types/react @types/react-dom --save-dev复制代码
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
</head>
<body>
<div id="root"></div>
<script src="bundle.js"></script>
</body>
</html>复制代码
咱们React应用程序中的内容将会注入到id=root的div中,全部的JS内容都会编译成一个bundle.js,存在dist文件夹中。
咱们在src目录里建立一个 index.tsx 文件,声明了一个函数组件,代码以下:
import * as React from "react";
import * as ReactDOM from "react-dom";
const App: React.FC = () => {
return <h1>My React App!</h1>;
};
ReactDOM.render(<App />, document.getElementById("root"));
复制代码
接下来咱们使用 webpack 打包咱们的项目,webpack 是什么我就不介绍了,不明白的去 webpack官网看介绍。
npm install webpack webpack-cli --save-dev复制代码
npm install webpack webpack-dev-server --save-dev复制代码
ts-loader 帮助咱们加载 TypeScript 相关代码,命令以下:
npm install ts-loader --save-dev复制代码
接下来,咱们在项目根目录建立 webpack.config.js 文件,配置文件内容以下:
const path = require("path");
module.exports = {
entry: "./src/index.tsx",
mode: "development",
module: {
rules: [{
test: /\.tsx?$/,
use: "ts-loader",
exclude: /node_modules/}]},
resolve: {
extensions: [".tsx", ".ts", ".js"]},
output: {
path: path.resolve(__dirname, "dist"),
filename: "bundle.js"},
devServer: {
contentBase: path.join(__dirname, "dist"),
compress: true,
port: 9000}
};
复制代码
若是你顺利的到了这一步,你的项目文件夹应该是这样的:
接下来咱们使用npm命令启动咱们的应用程序,一个用于开发模式,一个用于生产打包模式,你能够修改 package.json 中 scripts 属性对应的内容部分,示例以下:
{
...
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "webpack-dev-server --env development",
"build": "webpack --env production"
},
...
}复制代码
把代码部署到生成环境里,咱们就会运行以下命令,你就会发现 dist 文件夹里,多出来了一个 bundle.js 文件:
npm run build复制代码
bundle.js 会将用到的依赖项和咱们的 react 组件代码都编译压缩成一个文件。
接下来咱们输入如下命令,在开发模式下进行预览:
npm start复制代码
接下来咱们在浏览器里进行访问,在浏览器输入 http://localhost:9000/,不出意外会看到以下效果:
接下来在应用程序仍然在运行的状况下,修改 index.tsx 文件的内容:
const App: React.FC = () => {
return <h1>My React and TypeScript App!</h1>;
};
复制代码
保存后,咱们会看到浏览器会自动刷新显示咱们更新的内容:
今天的内容就到这里,咱们学习了如何使用 create-react-app 和 手工的两种方式建立 React TypeScript3项目。下一篇文章小编将继续给你们分享如何建立组件的主题,敬请期待...
更多精彩内容,请微信关注“前端达人”公众号!