react 实战-现代web开发的工程搭建(进阶)

37 篇文章 1 订阅

1.讲什么?

讲架构:会提到很多架构的东西:SDK分层设计,隔离设计,工程架构设计

2.讲亮点

怎么去讲一些细节,有亮点的事情.

3.讲全栈

Node端,server,埋点SDK,插件的编写

亮点是什么?

具有一定的思考,技术难度,解决了什么问题

 基于业务,封装公共能力,解决业务中的标准问题,并推广派生;

使用工程化手段,解决一些流程或研发逻辑,标准的问题;

你搞了一个东子,这个东西之前行业没有,并解决了问题.

第一课

Mono仓库

为什么要构建monorepo,它是什么?

Monorepo的含义:

Monorepo是软件开发策略的一个分支,mono表示单支,repo是repository

意思是:多个项目用一个代码库来管理依赖关系

多仓Monorepo缺点,也就是mono做了什么

1.更好的代码复用,可以让所有的项目代码,都集中在单一仓库,易于抽离公共的业务组件或工具;

2.整体的构建,测试逻辑统一,方便协作.

Mono的构建方式

Lerna

更倾向于去做版本的一些管理;

没有库之间的软链,你要自己去写.

npm/yarn/pnpm

会给你做软链;

但是没有严格的包管理.

主要步骤

初始化工程

1. mkdir react-code

2. cd react-code && pnpm init

手动创建pnpm-workspace.yaml文件

packages:

  - "packages/**"

手动创建文件夹

包安装方法

全局安装:pnpm add xxx -D -w;

局部安装:pnpm add  -D --filter package-name;

内部安装:pnpm add text-util --filter text-pro

   如果要自己构建:

   packages/libs/ text-util : npm link

   packages/apps/text-pro:npm link text-util

安装测试环境

安装eslint与配置

1.pnpm add eslint -D -w

2.npx eslint --init

安装prettier与配置

pnpm add prettier -D -w

新建一个.prettierrc.json的配置

.prettierrc.json起作用,我们要安装一下VScode插件

prettier

Prettier:一般多用于代码的美化

Eslint:一般多用于代码的检测

    prettier可能和eslint有冲突

安装typescript

tsc   ts-loader   @babel/preset-typescript 的区别

 ts-loader 

他在内部调用了typescript的官方编译器tsc,所以ts-loader 和tsc 是可以公用tsconfig.json

@babel/preset-typescript

只会给你做编译,不会做类型检查

所以我们要用类型检查,就要用tsc的配置

总结

一个大型的项目,我们一般不用tsc生成代码,仅仅做类型检查

没有babel,tsc+ts-loader

有babel,@babel/preset-typescript+tsc类型检查

Ts安装

我们用tsc--init,创建一个ts的典型配置tsconfig.json

见上课讲解

再安装一下插件

安装React 

安装依赖项

前端的方案

构建的方案

Bundle - 包

一般是指产物,main.xxx.js,这个是把所有文件合并在一起的,形成了一个bundle;

Chunk - 桩

一般指的是一个"构建流程",静态分析的过程中,从入口的依赖树,形成一个叫chunk;

import()=>

Module - 模块

从构建的角度说,一个文件就是一个模块

Channel

一般是和uri挂钩的,代表唯一的地址

Bundled方案

前端工程打包:最终的结果,是形成一个js,

前端工具/组件库打包:

webpack,rollup

Bundleless方案

import $ from 'jquery'

const $=require(jquery)

Gulp,ts

落地:

项目的工程,使用webpack,构建bundled方案;

项目的组件库,使用rollup+多入口,构建bundleless方案.

css方案

基于什么样的背景

有哪些选项

为什么选择这个

Css in js方案

Emotion

 Styled-component

RN 

Css module方案

Webpack的css-loader,可以配置bem规范

block-element__modified

search-card

Utility-css方案

Tailwindcss

Windicss

组件方案

自建组件和第三方组件怎么选?

Headless 和 styled怎么选?

很多时候,antd的样式,和设计师的规范不一致,!important?

很多时候,组件的能力都差不多,但是布局和样式差别很大,不得不重写.

answer:

我们这个项目,比较重视相同的功能的多种布局能力,同时设计师的风格和现在主流的组件库差别比较大.

Headless的方案+Tailwindcss+Css module

状态方案

Zustand

Solid

Redux

Mobx

Recoil

微前端方案

Iframe

Module faderation

Web components

code split 

Single-spa  qiankun  wujie   microapp

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是一个基本的 `webpack.config.js` 文件,用于将 React Native Web 应用程序打包为 Web 应用程序: ```javascript const path = require('path'); const webpack = require('webpack'); module.exports = { entry: './src/index.js', output: { path: path.resolve(__dirname, 'dist'), filename: 'bundle.js' }, module: { rules: [ { test: /\.(js|jsx)$/, exclude: /node_modules/, use: ['babel-loader'] }, { test: /\.css$/, use: ['style-loader', 'css-loader'] } ] }, resolve: { extensions: ['*', '.js', '.jsx'] }, plugins: [ new webpack.HotModuleReplacementPlugin() ], devServer: { contentBase: './dist', hot: true } }; ``` 其中,`entry` 表示入口文件,`output` 表示输出文件路径和文件名。`module` 中的 `rules` 字段表示转换规则。在这个例子中,我们使用了 `babel-loader` 来将 ES6/JSX 语法转换为浏览器可识别的语法。我们还使用了 `style-loader` 和 `css-loader` 来处理 CSS 文件。`resolve` 字段用于指定可以省略的后缀名,以便在导入文件时更加方便。`plugins` 中我们使用了 `HotModuleReplacementPlugin` 来启用热重载。 最后,在 `devServer` 中,我们指定了 Webpack Dev Server 的配置。`contentBase` 表示服务器启动时的根目录,`hot` 表示启用热重载。 当然,还需要配置 `.babelrc` 文件来指定 Babel 转换规则。例如: ```json { "presets": [ "@babel/preset-env", "@babel/preset-react", "module:metro-react-native-babel-preset" ] } ``` 其中,`@babel/preset-env` 和 `@babel/preset-react` 分别用于转换 ES6 和 JSX 语法,`module:metro-react-native-babel-preset` 则是为了让 React Native Web 应用程序能够在 Webpack 中正确地解析依赖项。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值