0829 今日总结
今日工作
问题,原因,解决方式,优化,巧妙实现,新知识
Vite 环境配置
今天项目配置需要增加 环境配置,我们有三个环境 fat/uat/pro
习惯性使用 cross-env 配置,查看 vite 环境配置后发现,应该使用 vite 规范的方式
例如:
env
.env # 所有情况下都会加载
.env.local # 所有情况下都会加载,但会被 git 忽略
.env.[mode] # 只在指定模式下加载
.env.[mode].local # 只在指定模式下加载,但会被 git 忽略
上面的 mode
可以在打包脚本中规定,如:
# 对于 .env.local 文件,使用
vite build --mode=local
# 对于 .env.development 文件,使用
vite build --mode=development
需要注意的是,自定义的环境变量需要添加 vite 规定的前缀 VITE_
才能被识别并暴露出来;
当然,也可以自定义环境变量前缀:envprefix
以及,vite 自带一些环境变量:可以 打印下 import.meta.env
js
// console.log('envs: ', import.meta.env)
{
"BASE_URL": "/",
"MODE": "development",
"DEV": true,
"PROD": false,
"SSR": false
}
自定义环境变量期间,我遇到了这个问题:dev is always true after build
配置 NODE_ENV
后解决,参考这里 例子
参考:
- vite多环境配置 - 掘金
- Vite弃坑指南之:环境文件系统-腾讯云开发者社区-腾讯云
- Vite多环境配置:让项目拥有更高定制化能力-腾讯云开发者社区-腾讯云
- vue开发者vite多环境配置,终于搞明白了 - 掘金
- Vite多环境配置 - 简书
- typescript - vite+ts+vue3环境变量和模式配置
Webpack 插件开发
之前一段时间做了个技术性需求,分析公司通用组件,归类、优化、整理;
既然需要优化,肯定是看哪些组件使用频率高,被改动的多,就是最需要优化的;
为了统计,参考社区方案,并改动了一些代码对 通用组件库做了个统计;
其中,最难的一环不是 webpack 插件开发,而是 webpack 插件调试;
打包时不能用命令 webpack
,而是显式地用 node node_modules/webpack/bin/webpack.js
,以下是我的配置:
json
{
"scripts": {
"start": "node --inspect scripts/start.js",
"build": "node --inspect scripts/build.js",
},
}
- 100行代码实现一个组件引用次数统计插件 - 掘金
- 50行代码实现组件使用次数统计 - 掘金
- 用node的调试工具进行webpack插件调试
- webpack 中编写自定义 loader 和 plugin, 及如何调试
- WebPack 插件调试
好文推荐
有感好文
- Vite2+React+TypeScript:搭建企业级轻量框架实践-腾讯云开发者社区-腾讯云
- css 同时设置min-width、width、max-width时是如何展示的_PQ℡的博客-CSDN博客 几个宽度的关系;
- Implementing React Custom Hooks: A Complete Guide | Syncfusion Blogs 自定义 react-hooks 教程;
react hook 如何包裹一个组件:
场景,打开一个自定义弹框:
jsx
// forwardRef 方案
const XXXDialog = forward((props, myRef) => {
useImperativeHandle(() => {
open: openModal
})
return <Modal ref={myRef} open={openModal} />
})
// 使用: 伪代码
XXXDialogRef.open()
// hook 方案
const Modal = () => { /** 逻辑代码 */}
const { YYYDialog, openModal } = useComponent(Modal)
// 使用:伪代码
openModal()
- javascript - React Hooks return children wrapping component - Stack Overflow
- How to return components from React hooks
当我意识到这个技术话题的时候,组里的老大已经在研究很久了,已经在用着了,回头拎出来讨论讨论;