讲架构:会提到很多架构的东西:SDK分层设计,隔离设计,工程架构设计
怎么去讲一些细节,有亮点的事情.
Node端,server,埋点SDK,插件的编写
具有一定的思考,技术难度,解决了什么问题
基于业务,封装公共能力,解决业务中的标准问题,并推广派生;
使用工程化手段,解决一些流程或研发逻辑,标准的问题;
你搞了一个东子,这个东西之前行业没有,并解决了问题.
Mono仓库
为什么要构建monorepo,它是什么?
Monorepo的含义:
Monorepo是软件开发策略的一个分支,mono表示单支,repo是repository
意思是:多个项目用一个代码库来管理依赖关系
1.更好的代码复用,可以让所有的项目代码,都集中在单一仓库,易于抽离公共的业务组件或工具;
2.整体的构建,测试逻辑统一,方便协作.
Lerna
更倾向于去做版本的一些管理;
没有库之间的软链,你要自己去写.
会给你做软链;
但是没有严格的包管理.
主要步骤
初始化工程
手动创建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
1.pnpm add eslint -D -w
2.npx eslint --init
pnpm add prettier -D -w
新建一个.prettierrc.json的配置
.prettierrc.json起作用,我们要安装一下VScode插件
prettier
Prettier:一般多用于代码的美化
Eslint:一般多用于代码的检测
prettier可能和eslint有冲突
安装typescript
tsc ts-loader @babel/preset-typescript 的区别
他在内部调用了typescript的官方编译器tsc,所以ts-loader 和tsc 是可以公用tsconfig.json
只会给你做编译,不会做类型检查
所以我们要用类型检查,就要用tsc的配置
一个大型的项目,我们一般不用tsc生成代码,仅仅做类型检查
没有babel,tsc+ts-loader
有babel,@babel/preset-typescript+tsc类型检查
我们用tsc--init,创建一个ts的典型配置tsconfig.json
见上课讲解
再安装一下插件
一般是指产物,main.xxx.js,这个是把所有文件合并在一起的,形成了一个bundle;
一般指的是一个"构建流程",静态分析的过程中,从入口的依赖树,形成一个叫chunk;
import()=>
从构建的角度说,一个文件就是一个模块
前端工程打包:最终的结果,是形成一个js,
前端工具/组件库打包:
webpack,rollup
Bundleless方案
import $ from 'jquery'
const $=require(jquery)
Gulp,ts
项目的工程,使用webpack,构建bundled方案;
项目的组件库,使用rollup+多入口,构建bundleless方案.
基于什么样的背景
有哪些选项
为什么选择这个
Css in js方案
Styled-component
RN
Webpack的css-loader,可以配置bem规范
block-element__modified
search-card
Tailwindcss
Windicss
自建组件和第三方组件怎么选?
很多时候,antd的样式,和设计师的规范不一致,!important?
很多时候,组件的能力都差不多,但是布局和样式差别很大,不得不重写.
我们这个项目,比较重视相同的功能的多种布局能力,同时设计师的风格和现在主流的组件库差别比较大.
Headless的方案+Tailwindcss+Css module
Zustand
Solid
Redux
Mobx
Recoil
Iframe
Module faderation
Web components
code split
Single-spa qiankun wujie microapp
因篇幅问题不能全部显示,请点此查看更多更全内容