最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • 从0到1搭建React+TypeScript+webpack项目【2】

    正文概述 掘金(制杖)   2021-07-09   815

    调整项目结构

    添加@types

    根目录添加上typescript 的全局类型定义文件架 @types

    src 里面添加结构

    assets、components、constants、layouts、utils、style、pages、hooks等

    调整后的文件目录结构为:

    my-app
    ├── .vscode          # vscode 配置目录
    │   ├── extensions.json  #项目推荐使用安装的插件
    │   ├── settings.json    #项目里面使用的vscode的配置内容,比如自动保存代码格式化等
    │   ├── tsrc.code-snippets #代码片段配置
    ├── .@types          # 全局类型声明
    ├── node_modules 
    ├── public           # 公共文件
    │   ├── favicon.ico
    │   ├── index.html     #入口html
    │   └── manifest.json
    └── src             # 源码目录
    │  ├── assets        # 静态资源
    │  ├── components    # 公共业务组件
    │  ├── constants     # 存储api 等公共的类型常量类的变动不大的文件
    │  │     │── api       # 定义对接后台api 接口的文件
    │  ├── layouts       # 布局
    │  ├── models          # 存放state和actions模块
    │  ├── pages           # 页面组件目录
    │  ├── routers         # 页面路由相关的文件
    │  ├── services        # model对应的api 调用函数
    │  ├── style           # 全局样式
    │  ├── utils           # 公用工具函数
    │  ├── App.css
    │  ├── App.js
    │  ├── App.test.tsx
    │  ├── index.css
    │  ├── index.tsx
    │   ├── logo.svg
    │  └── reportWebVitals.ts
    │  └── setupTests.ts
    ├── .eslintignore        # eslint忽略文件的配置
    ├── .eslintrc            #eslint 的配置文件
    ├── .gitignore           #git 的忽略文件的配置
    ├── .prettierrc          #prettier 插件的配置
    ├── .stylelintrc.json    #stylelint插件的配置
    ├── package.json        
    ├── README.md            
    ├── tsconfig.json        #typescript 的配置
    ├── yarn.lock            #yarn lock 文件
    

    引入ant-design

    安装antd 推荐的craco 模块

    yarn add antd @craco/craco
    

    修改package.json 里面的启动指令

    /* package.json */
    "scripts": {
    -   "start": "react-scripts start",
    -   "build": "react-scripts build",
    -   "test": "react-scripts test",
    +   "start": "craco start",
    +   "build": "craco build",
    +   "test": "craco test",
    }
    

    根目录里面添加craco.config.js

    craco.config.js,主要是在create-react-app 不用eject暴露webpack 配置的情况下,方便在外部修改webpack 的配置

    /* craco.config.js */
    module.exports = {
      // ...
    };
    

    自定义主题

    /* src/App.js */
    - import './App.css';
    + import './App.less';
    
    /* src/App.less */
    - @import '~antd/dist/antd.css';
    + @import '~antd/dist/antd.less';
    

    安装 craco-less

    yarn add craco-less
    

    修改 craco.config.js 文件如下

    + const CracoLessPlugin = require('craco-less');
    
    + module.exports = {
          plugins: [
            {
              plugin: CracoLessPlugin,
              options: {
                lessLoaderOptions: {
                  lessOptions: {
                    modifyVars: { '@primary-color': '#1DA57A' },
                    javascriptEnabled: true,
                  },
                },
              },
            },
          ],
       };
    

    支持装饰器

    yarn add @babel/plugin-proposal-decorators --dev
    

    修改 craco.config.js 文件如下

    babel:{  
        plugins: [
          ["@babel/plugin-proposal-decorators", { legacy: true }]
        ]
     },
    

    配置代理

    修改 craco.config.js 文件如下

    //配置代理解决跨域
    devServer: {
        proxy: {
             "/api": {
                 target: "http://baidu.com",  
                 //target: 'http://192.168.9.19:8080',
                 changeOrigin: true,
                 pathRewrite: {
                     "^/api": ""
                 }
             }
         }
     }
    

    配置antd的less按需加载

    yarn add babel-plugin-import
    

    修改 craco.config.js 文件如下

    babel:{  
        plugins: [
          ["@babel/plugin-proposal-decorators", { legacy: true }],  //装饰器
          [   
            "import", 
            {
              "libraryName": "antd",
              "libraryDirectory": "es",
               "style": true //设置为true即是less
             }
         ]
        ]
     },
    

    App.less文件去掉@import '~antd/dist/antd.less';

    配置别名

    目的:让后续引用的地方减少路径的复杂度

    修改 craco.config.js 文件如下

    const path = require('path');
    webpack: {
        // 别名
        alias: {
          "@": path.resolve("src"),
          "@utils": path.resolve("src/utils"),
        }
      },
    

    添加antd 和ant 国际化

    yarn add antd
    

    index.tsx添加国际语言包

    import React from 'react';
    import ReactDOM from 'react-dom';
    import './index.css';
    import App from './App';
    import zhCN from 'antd/lib/locale/zh_CN';//添加语言包支撑
    ReactDOM.render(
      <React.StrictMode>
          <App />
      </React.StrictMode>,
      document.getElementById('root'),
    );
    

    index.tsx为组件提供统一的全局化配置

    import React from 'react';
    import ReactDOM from 'react-dom';
    import './index.css';
    import App from './App';
    import zhCN from 'antd/lib/locale/zh_CN'; // 添加语言包支撑
    import { ConfigProvider } from 'antd'; // 为组件提供统一的全局化配置
    ReactDOM.render(
      <React.StrictMode>
        <ConfigProvider locale={zhCN}>
          <App />
        </ConfigProvider>
      </React.StrictMode>,
      document.getElementById('root'),
    );
    

    起源地下载网 » 从0到1搭建React+TypeScript+webpack项目【2】

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元