前端开发还有什么地方能提高开发效率
前端发展至今,精耕细作这么多年,不管前端工程化,还是最返兴起的AI编程,整体架构都已经很成熟了,但往往在一些细节处且被人遗忘,其中有一个场景,在前端开发中经常遇到,但很少人注意到,这也是可以节省时间的一部分,那就是前端开发中面临的多帐号,多环境的问题
前端开发中面临的多帐号,多环境的问题
在前端开发中我们经常要在不同的帐号间切换,以解决不同帐号下数据问题引起的BUG,同时也需要在不同的环境中做切换,如开发环境,测试环境,正式环境,不同的环境意味着用不同的后端服务 api 前缀,不同的环境变量。
在我看来这些与开发无关的事情,都是应该我们努力去减少的时间,需然每次更改的花费的时间不多,但耐不住他操作频繁,就每次只消耗几分钟,一天下来可能也是好几十分钟的事情,而且这些事情可能会打断我们的编码连贯性,特别是切换环境的时候
在精耕细作的今天,就算是一点时间,我们理应也不能浪费在这上面,那我们应该怎么节省这些时间呢?
常规的解决方案
不同的账号
对于不同的账号,我们可以通过浏览器记住密码,但很多时候同一个域名只会记住一个密码,我们还是需要退出帐号,输入帐号,如果浏览器记住密码了,我们也只是少了输入密码的时间;
不同的环境
面对不同环境,我们需要去修改环境变量,如不同的后端服务的 api 前缀,不同的CLIENT_SECRET,或不同的应用 ID 等一些变量,改完后还需要重启服务
理想的解决方案
那在我看来理想的方式应该是怎么样的?
- 有一个可视化的帐号管理的地方,我只需要在这里切换帐号,就能自动退出登录,并重新登录新帐号
- 每个帐号与特定的环境变量及请求 api 的绑定,如测试环境的帐号对应的就是测试环境的变量,及对应的后端服务的前缀。
- 没有代码入侵,不管是环境变量,还是账号,这些都是敏感信息,这些都不应在我代码上有体现
释放前端生产力,节省研发团队的每一分钟
我们想要工具,希望他是轻量的,并且能解决上面提到的所有问题,这里推荐一个工具mocxykit,他是一个 webpack 或 vite 的插件,只需要两行代码就能集成到项目中。本身也是一个 mock数据及代理的管理工具
mocxykit的主要功能
- 代理请求和 MOCK数据
- 可视化的管理 MOCK 数据及代理功能
- 代理支持全局代理和某一个 URL 的自定义代理
- 可随时切换某一个URL进行代理转发或 MOCK 数据
- 可通过不同的入参,返回不同的MOCK 数据
- 可以快速把最近的请求返回的数据,存为 MOCK 数据
- 支持 faker 随机MOCK数据生成
- 支持多环境变量管理,随时切换环境变量
- 支持 Ngrok 公网访问
- 支持 MCP 协议,让 AI 编程时,自动获取 MOCK 数据或最近浏览器请求的数据
- 内置API请求工具,可直接发送和测试API请求
安装mocxykit
首先先安装这个插件
npm install mocxykit --save-dev
然后以 vite 为例,改变vite.config.js(如果没有这个文件,可以在根目录创建下) 的配制,添加这个插件
import { defineConfig } from 'vite'
import { viteProxyMockPlugin } from 'mocxykit'
export default defineConfig({
plugins: [
viteProxyMockPlugin()
]
})
启动项目,在浏览启上访问项目,这个时候就会看到项目的右下角多了一个(proxy&mock 配制)按钮
设置一个全局代理
设置后端服务的 api 前缀
- 选配制不同的后端服务的 api 前缀,这也是一个代理,只要请求到path,就会走到代理服务,然后通过这里的配置指定请求到哪个服务,所以在开发环境不管要请求哪个服务,在代码层面都能把开发环境的前缀写死为空字符;
设置环境变量
点击管理界面的左上角环境变量的加号,然后把环境变量添加进来
可以看到,下面的信息才是我们配制在.env.development或.env.production文件中的信息,这里配制的环境变量会覆盖 env 文件中的信息(不会写这些文件,只是读值的时候覆盖),从而实现动态切换的功能,而上面的是我们的帐号信息,相当于我们的帐号信息,也是一种环境变量,这样就能让我们的帐号与环境变量绑到了一起.所以这里我们最好的命名是“环境-帐号”
信息安全
可能也有人注意到了;这些都是敏感信息,会不会不小心上传到 git 上?这个不用提心,在你点 OK后,这个信息会保存到一个文件上,但同时也会自动在 gitignore上添加一行proxyMockData/env.json以防止,不小心上传。
切换环境变量
在新增完环境变量后,你就可以在右上角上点击切换不同的环境变量了,同时只要切换环境变量,就会自动重新编译,而不需要重启服务。这样就实现了可视化的账号管理。
实现自动登录
前面我还说到需要自动登录的功能,这里我们只需要在自已的项目添加一个自动登录的逻辑,判断有对应环境变量的情况下,就自动触发登录,同时因为在 mocxykit 切换环境变量时会自动清除 cookie 和 localStorage并刷新页面,那你的项目理论上没有登录信息后会自动跳到登录页,从而实现自动登录的功能.
const Login: React.FC<LoginFormProps> = ({ onSuccess }) => {
const [loading, setLoading] = useState(false);
const [form] = Form.useForm();
const { uploadPermissions } = usePermissions();
// 添加自动登录函数
const autoLogin = async () => {
if (process.env.NODE_ENV === 'development') {
const envTenant = process.env.VITE_APP_TENANT;
const envAccount = process.env.VITE_APP_ACCOUNT;
const envPassword = process.env.VITE_APP_PASSWORD;
if (envTenant && envAccount && envPassword) {
const values = {
tenantView: envTenant,
account: envAccount,
password: envPassword
};
form.setFieldsValue(values);
await handleLogin(values);
}
}
};
// 添加自动登录效果
useEffect(() => {
autoLogin();
}, []);
......
}
环境变量绑定代理
在新增或编辑环境变量的时候,可以选择绑定环境变量,这样在切换帐号环境的时候,就会自动切换对应的后端服务。到这里就完成实现了,我想要的功能,可视化管理,一键切换。