开始:

利用官方脚手架,搭建react工程。参考:https://react.docschina.org/docs/create-a-new-react-app.html。

过程:

1.暴露webpack配置 执行eject脚本,操作不可逆,在执行前要将之前内容提交到git,以便恢复。

执行 npm run eject 执行后产生webpack配置文件。

2.调整,使css文件可以模块化引入。

主要是利用css-loader模块。配置,获取其它插件请参考:https://webpack.docschina.org/loaders/css-loader/。

稍微调整一下原本的默认配置项。此处注意本文编辑时间,未来官方可能会调整,也许不能完全对应,但是本质不变。

然后就可以以单一模块的方式引入css文件了,通过hash保证唯一性:

app.css

.app{
// css
} js:
mport styles from './app.css'; styles[‘app’]; // 使用

3.添加TS支持。注意,官方提供创建TS版本。本例可以用来给现有工程改造。

npm/yarn/其它包管理 添加typescript @types/node @types/react @types/react-dom @types/jest;

typescript作为ts基础依赖包,其它作为常用的ts解释包。

安装完毕后,在根目录添加两类文件,以帮助编辑器做文本提示:

tsconfig.json 一些简单配置

{
"compilerOptions": {
"target": "esnext",
"module": "esnext",
"moduleResolution": "node",
"resolveJsonModule": true,
"importHelpers": true,
"jsx": "react-jsx",
"esModuleInterop": true,
"sourceMap": true,
"baseUrl": "./",
"strict": true,
"paths": {
"@/*": ["src/*"],
},
"allowSyntheticDefaultImports": true
},
"include": [
"mock/**/*",
"src/**/*",
"config/**/*",
".umirc.ts",
"typings.d.ts"
],
"exclude": [
"node_modules",
"lib",
"es",
"dist",
"typings",
]
}
d.ts 自定义的一些声明

declare module '*.css';
declare module '*.less';
declare module '*.png'; declare module 'uuid';
declare module '*.svg' {
export function ReactComponent(
props: React.SVGProps<SVGSVGElement>,
): React.ReactElement;
const url: string;
export default url;
}

之后可正常使用ts/tsx文件,编辑器提示也会同步。

结束:

本文暂时只做简单介绍,其中部分内容笔者也在学习,给自己挖个坑,以后继续细化。

最新文章

  1. 我理解的MVC
  2. html中,文件上传时使用的&lt;input type=&quot;file&quot;&gt;的样式自定义
  3. &lt;转&gt;Unity3D研究院之C#使用Socket与HTTP连接服务器传输数据包
  4. Tableau10.0学习随记-度量的聚合设置(取消度量汇总-展示所有数据)
  5. Show Users Assigned to a Specific Role
  6. 初涉JavaScript模式 (2) : 基本技巧
  7. linux目录权限小记
  8. numpy 札记
  9. css3动画与js动画的一些理解
  10. [置顶] think in java interview-高级开发人员面试宝典(七)
  11. Windows在生产体系Android开关机动画
  12. Objective-C日记-Bounds和Frame
  13. 从String类型字符串的比较到StringBuffer和StringBuilder
  14. Android数据库
  15. k8s 1.12.6版的kubeadm默认配置文件
  16. JS膏集05
  17. 在chrome Sources 页 显示 Console(drawer) 页
  18. H5兼容问题及解决方法
  19. ubuntu16.04 编译安卓4.2
  20. 关于AOP的PIAB

热门文章

  1. TreeMap与TreeSet的源码分析
  2. kafka中consumer group 是什么概念?
  3. Javascript 占位符替换
  4. Java 中,DOM 和 SAX 解析器有什么不同?
  5. 学习zabbix(六)
  6. 【Python】Windows微信清理工具v.3.0.2
  7. C语言之:结构体动态分配内存(利用结构体数组保存不超过10个学生的信息,每个学生的信息包括:学号、姓名和三门课(高数、物理和英语 )的成绩和平均分(整型)。)
  8. 如何得到个性化banner
  9. Vue路由跳转时修改页面标题
  10. crm单元测试使用