使用 Vite 的 Proxy / WebSocket 代理:配置 + 原理 + 源码机制 #当我们在开发 Web 应用时,我们经常遇到这样的问题:
前端代码运行在本地(如 http://localhost:5173,由 Vite dev server 提供),而后端 API 或 WebSocket 服务部署在另一个域名/端口(如 http://api.example.com,或 ws://backend:8080),而面对这种问题,我们往往需要解决跨域问题,要么就是后端设置允许跨域,要么就是在本地启动 nginx。这样都通常还是比较麻烦。但是有了 Vite 之后,只需要简单配置一下即可解决,这是非常神奇的,那么这个原理与配置是要怎么做呢?
关于这个大精度丢失问题,一开始我还没在意,直到上班碰到了这个问题,当时记得在处理后端返回的大整数拿到一个超过 js 精度的 id 时,怎么传值都对不上,后面通过打印检查对比发现,我拿到的 id 跟我所获取到的不一致,当时还不知道是什么情况,后面上网搜索才知道这是属于一个精度丢失问题。
那原因是什么呢?
经过查询知道 JS 的 Number 类型遵循 IEEE754 标准,最大安全整数是 2^53 - 1。
再大的数字会被强制四舍五入,导致精度丢失。
那我为了避免这种情况,后续在 JSON 解析和对象处理阶段,手动把大整数转换为字符串。下面是我这边写的一个工具方法。
问题示例:精度丢失 #后端返回:
记录一下工作中碰到的需求,对于新手小白碰到这种情况可以参考,高手的话还有很多更好的办法。哈哈。
对于这个需求一开始是很懵的,想到 Element UI 里面有个级联组件,但是这个级联组件不支持自定义输入数据,这个就很烦。于是我在网上搜索,看到了这样一篇文章给了我思路。文章链接在下面可以进行查看。
参考文章:接世界毁灭 - CSDN 博客
我试着用该博主的思路,用文本框套一个级联框,然后触发级联组件的点击事件,这样既能有级联效果也有自定义效果。
<li @click="toggleCascaderExpansion" style="width:90%"> <el-input placeholder="请选择原因" type="textarea" :row="1" style="width:100%;font-size:14px;display:inline-block;z-index:99;" v-model.sync="addOrEditForm.biztype" @input="onBizTypeInput"> </el-input> <el-cascader :props="{ multiple: true, checkStrictly: true, value:'id', label:'label' }" filterable :filter-method="filterMethod" placeholder="请选择原因" style="width:100%;font-size:14px;display:flex;margin-top: -40px;opacity: 0;height:40px" v-model.sync="addOrEditForm.firstbiztype" :options="biztypeList" @change="handleBizTypeChange" ref="cascaderRef"> </el-cascader> </li> 一开始我用 ref 去触发级联组件的下拉框展开事件,发现没效果,后面我测试了很多方法,用下面这个就可以触发。大家可以参考我这个写法。
按照 Crawlee 官网的描述,仅需 Node.js 版本高于 16.0.0 即可。但在实际运用时,还会遇到一些问题。
1. 执行 npx crawlee create —项目名称 时可能出现的问题 #这个问题经过一番查证,可能是需要网络加速的原因才能进行解决,所以这里可以推荐 Watt Tooltik 软件。该软件可以进行网络加速,可以解决这个问题。