跳至主要內容
记一次项目中自动去除console.log打印(非正常webpack、vite打包环境)

前言

前不久接到一个需求,为了保证信息安全的问题,需要去除项目中所有的console.log打印。常见的通过webpack、vite打包编译的项目都有对应的插件,比如babel插件[babel-plugin-transform-remove-console](https://www.npmjs.com/package/babel-plugin-transform-remove-console)、webpack插件[terser-webpack-plugin](https://www.npmjs.com/package/terser-webpack-plugin/v/1.4.5)等。但是我们的项目是属于php的前后端不分离项目,这应该怎么办呢?只能靠自己手搓nodejs脚本了。(需要支持node环境)

菜鸡小谢原创大约 6 分钟gitjavascript
关于上滑加载

实现原理

监听scroll事件,当scrollTop+clientHeight >= scrollHeight时,即已经滚动到列表底部,可以加载下一页数据。

1723098446072

响应式问题

当项目中使用rem或者vw来实现响应式布局时,不同屏幕下要小心px值转rem或者vw时的部分小数位丢失问题,因为这样会导致scrollHeight会一直比scrollTop + clientHeight的值小,无法触发下一页数据请求。目前我的解决办法为:在scrollTop + clientHeight的基础上加上一段距离,即不需要滚动底部时就触发数据加载,同时添加滚动防抖,防止多次触发滚动事件,重复请求。


菜鸡小谢原创小于 1 分钟javascript
forEach中return失效

问题描述

今天开发过程中遇到了一个关于 forEach 问题,在forEach中使用return无法中断forEach的循环。代码如下:

function handleMoney(code, monObjArr, range) {
      if (Object.keys(range).length !== 0) {
        return [parseInt(range.min), parseInt(range.max)]
      }
      let arr
      monObjArr.forEach(item => {
        if (item.code === code) {
          arr = [item.min, item.max]
          return
        }
      })
      return arr
    },

菜鸡小谢原创小于 1 分钟javascript
js数组api

创建数组

//使用构造函数创建
let array = new Array();

//使用数组自变量创建
let array = [];

//使用form函数创建,可将类数组转换为数组
let array = Array.from("array");
console.log(array); //['a','r','r','a','y']

//使用of函数创建,可将一组参数转换为实例
let array = Array.of(1, 2, 3, 4);

菜鸡小谢原创大约 7 分钟javascriptArray