深入学习TypeScript 、React、 Redux和Ant-Design的最佳实践
前端  /  管理员 发布于 4年前   568
前言
阿特伍德定律,指的是any application that can be written in JavaScript, will eventually be written in JavaScript,意即“任何可以用JavaScript来写的应用,最终都将用JavaScript来写”
在使用新技术的时候,切忌要一步一步的来,如果当你尝试把两门不熟悉的新技术一起结合使用,你很大概率会被按在地上摩擦,会yarn/npm和React脚手架等技术是前提,后面我会继续写PWA深入和Node.js集群负载均衡Nginx,webpack原理解析等~谢谢思否官方对我上篇文章的加精~
在使用TypeScript前,请你务必万分投入学习好以下内容再尝试:
学技术切忌过分急躁,一步登天,什么都想学却什么都学不好。作者的心得,持之以恒的努力,把每个技术逐个击破,最后结合起来使用,如鱼得水,基础不牢,地动山摇,本文的代码会把所有配置和Redux,Ant-Design全部配好,开箱即用,其他的功能你看Ant-Design的文档往里面加就行了~
正式开启
本文介绍如何配置,已经整体的业务流程如何搭建 GitHub源码地址
请注意它是一个第三方项目,而且不是 Create React App 的一部分。
需要的依赖:都在package.json文件中。
这里请万分注意,TS的包大部分都是需要下两个,一个原生,一个@types/开头
{"name": "antd-demo-ts","version": "0.1.0","private": true,"dependencies": {"@types/jest": "24.0.11","@types/node": "11.13.7","@types/react": "16.8.14","@types/react-dom": "16.8.4","@types/react-redux": "^7.0.8","@types/react-router-dom": "^4.3.2","@types/redux-thunk": "^2.1.0","babel-plugin-import": "^1.11.0","customize-cra": "^0.2.12","less": "^3.9.0","less-loader": "^4.1.0","prop-types": "^15.7.2","react": "^16.8.6","react-app-rewired": "^2.1.3","react-dom": "^16.8.6","react-redux": "^7.0.2","react-router-dom": "^5.0.0","react-scripts": "3.0.0","redux-chunk": "^1.0.11","redux-devtools-extension": "^2.13.8","redux-thunk": "^2.3.0","typescript": "3.4.5"},"scripts": {"start": "react-app-rewired start","build": "react-app-rewired build","test": "react-app-rewired test"},"eslintConfig": {"extends": "react-app"},"browserslist": {"production": [">0.2%","not dead","not op_mini all"],"development": ["last 1 chrome version","last 1 firefox version","last 1 safari version"]}
* `Ant-Design`按需加载配置 `config-overrides.js`
const { override, fixBabelImports, addLessLoader } = require('customize-cra');module.exports = override(fixBabelImports('import', {libraryName: 'antd',libraryDirectory: 'es',style: true,}),addLessLoader({javascriptEnabled: true,modifyVars: { '@primary-color': '#1DA57A' },}));```
tsconfig.json ,TS的配置文件 我基本上没怎么改动
{"compilerOptions": {"target": "es5","lib": ["dom","dom.iterable","esnext"],"allowJs": true,"skipLibCheck": true,"esModuleInterop": true,"allowSyntheticDefaultImports": true,"strict": true,"forceConsistentCasingInFileNames": true,"module": "esnext","moduleResolution": "node","resolveJsonModule": true,"isolatedModules": true,"noEmit": true,"jsx": "preserve"},"include": ["src"]}
Redux less 的配置
配置没看懂不要紧,架子我都全部给你搭好了,按着TS和Ant-Design的官网去操作就OK
写TS代码时候常常问问自己,这个到底可能是什么类型,这个到底是public 还是 private?这个函数要返回什么类型,接受什么参数,什么是必须的,什么是可能没有的,再去考虑命名空间接口合并,类合并,继承这些问题。
复杂软件需要用复杂的设计,面向对象就是很好的一种设计方式,使用 TS 的一大好处就是 TS 提供了业界认可的类( ES5+ 也支持)、泛型、封装、接口面向对象设计能力,以提升 JS 的面向对象设计能力。
当你在TS世界遨游过后,再回JS的世界,那么你会发现你写代码很少会出错,除非是业务逻辑的问题~
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
123 在
Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..原梓番博客 在
在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..博主 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..1111 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..路人 在
php中使用hyperf框架调用讯飞星火大模型实现国内版chatgpt功能示例中评论 教程很详细,如果加个前端chatgpt对话页面就完美了..Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号