对于复杂或多人开发的 React
项目来讲,管理和使用每一个组件的 props
、 state
或许会成为一件让人头痛的事情,而为每个组件写文档,成本也会比较大,对项目的开发效率也不是最理想的。css
Typescript
给 React
带来不少好处:html
在组件头部定义 interface
,让每一个人在拿到组件的第一时间就能够很明确知道该组件须要使用的 props
和 state
;前端
在编译中发现问题,减小运行时的报错;react
能够在编辑器中实现实时类型校验、引用查询;webpack
约束类型,在混合多语言环境中下降风险,等。git
且配置也是很是简单,步骤以下。github
. ├── build # 前端配置文件 │ ├── index.html │ ├── webpack.config.js ├── app # 前端目录 ├── .gitignore ├── package.json ├── tsconfig.json └── tslint.json
mkdir my-project && cd my-project npm init
npm i -g webpack webpack-dev-server npm i --save react react-dom @types/react @types/react-dom npm i --save-dev ts-loader source-map-loader npm link webpack webpack-dev-server typescript
/* build/webpack.config.js */ const config = { entry: './app/index.tsx', output: { filename: 'app.bundle.js', path: './public', publicPath: '/assets' }, devtool: 'source-map', resolve: { extensions: ['', '.webpack.js', '.web.js', '.ts', '.tsx', '.js'] }, module: { loaders: [ { test: /\.tsx?$/, loader: 'ts-loader' } ], preLoaders: [ { test: /\.js$/, loader: 'source-map-loader' } ] }, devtool: 'eval' } module.exports = config
/* tsconfig.json */
{ "compilerOptions": { "outDir": "./public/", "sourceMap": true, "noImplicitAny": true, "module": "commonjs", "target": "es5", "jsx": "react" }, "files": [ "./app/index.tsx" ] }
至此,基本配置已经完成,后面建立好一个入口页面和entry
文件就能够跑起来了:web
/* build/index.html */
<!doctype html> <html lang="zh-cn"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1.0,user-scalable=no"> <title>Hello world</title> <script src="http://localhost:8080/webpack-dev-server.js"></script> </head> <body> <div id="app"></div> <script src="assets/app.bundle.js"></script> </body> </html>
/* app/index.tsx */ import * as React from 'react' import { render } from 'react-dom' interface IAppProps {} interface IAppState {} class App extends React.Component<IAppProps, IAppState> { public render(): JSX.Element { return ( <div> Hello world </div> ) } } render(<App />, document.getElementById('app'))
webpack-dev-server --inline --config build/webpack.config.js --content-base build --open
出来吧神龙typescript
Webpack配置实际上是一件很简单的事情,这也是他具有强大竞争力的重要因素。
从配置文件中能够看出,里面无非就是entry
、output
和loader
,若是须要编译CSS,在loader
里面加一个便可:npm
npm i --save-dev style-loader css-loader
/* build/webpack.config.js */ const config = { // ... module: { loaders: [ { test: /\.css/, loader: 'style-loader!css-loader' } ], // ... }, // ... }
项目启动的命令过长,放进 package.json
的 scripts
就行了:
/* package.json */
{ "scripts": { "dev": "webpack-dev-server --inline --config build/webpack.config.js --content-base build --open", }, }
再执行如下命令试试:
npm run dev
在开发中若是有个约束代码的工具可以让代码更加优雅,之前用的是 eslint
,若是用 .tsx
就不能生效了,这里推荐使用 tslint
:
npm i -g tslint cd my-project tslint --init
这样会在项目文件中建立一个现成的 tslint
配置文件: tslint.json
,个性化方案能够自行设置。
webpack 新官网
webpack dev server
tsconfig.json 配置文档
style-loader
tslint
原文地址:React + Typescript + Webpack 开发环境配置
文章做者:Heleth
版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证) 转载请注明出处