替换vant加载的外部资源来避免nginx策略屏蔽

某项目因前置nginx限制较多,不允许站内调用外部资源,所以因vant引用了cdn的图标,以及通过data方式加载图标资源,需要对vant进行修改,但又不想去自己弄个vant的修改版,所以从build之后的文件入手。

先创建一个localFilterPlugin.js,放在src/libs内,或者其他文件夹,比如utils,看你的习惯。内容如下:

/*
 * @Date: 2021-11-26 15:43:28
 * @LastEditors: Future Meng
 * @LastEditTime: 2021-11-26 18:19:11
 */
// 用于向控制台输出带颜色的问题提示
const fs = require('fs') // node的文件系统模块,用于读取操作系统文件
const path = require('path') // node提供的一些用于处理文件路径的工具
const chalk = require('chalk')

class LocalFilterPlugin {
  static defaultOptions = {
    filenameReg: /^chunk-mobile\..*\.css$/,
    originContent: /@font-face[^}]+}/g,
    newContent: '',
    assetsPath: '../../dist/css'
  };

  constructor(options = {}) {
    this.options = { ...LocalFilterPlugin.defaultOptions, ...options }
  }

  apply(compiler) {
    const _this = this
    compiler.plugin('done', function(compilation, callback) {
      const filePath = path.resolve(__dirname, _this.options.assetsPath)

      fs.readdir(filePath, (err, files) => {
        // 读取文件路径
        if (err) {
          console.log(chalk.yellow('读取文件夹异常:\n' + err.message + '\n'))
        }
        files.forEach((filename) => {
          // 找到符合正则规则的文件
          if (_this.options.filenameReg.test(filename)) {
            // 读取该文件
            const fileDir = path.resolve(filePath, filename)
            fs.readFile(fileDir, 'utf-8', (err, data) => {
              // 读取文件内容
              if (err) {
                console.log(chalk.yellow('读取文件异常:\n' + err.message + '\n'))
                return
              }

              // 替换文件内容
              const result = data.replace(_this.options.originContent, _this.options.newContent)
              fs.writeFile(fileDir, result, (err) => {
                if (err) {
                  console.log(chalk.red('写入修改后的文件异常:\n' + err.message + '\n'))
                  return
                }
                console.log(chalk.cyan(filename + '替换完成'))
              })
            })
          }
        })
      })
    })
  }
}

module.exports = LocalFilterPlugin

然后在vue.config.js中添加对这个自定义插件的引用。

const LocalFilterPlugin = require('./src.mobile/libs/localFilterPlugin')

module.exports = {
        configureWebpack: config => {
    const configNew = {}
    if (process.env.NODE_ENV === 'production') {
      configNew.externals = externals
      configNew.plugins = [
        // 构建后剔除@font-face
        new LocalFilterPlugin({
          options: {
            filenameReg: /^chunk-mobile\..*\.css$/,
            originContent: /@font-face[^}]+}/g,
            newContent: '',
            assetsPath: '../../dist/css'
          }
        })
      ]
    }
    return configNew
  },
}

就这些。

参考资料:https://blog.csdn.net/qq_31968791/article/details/102900349

sweethome3d

http://www.sweethome3d.com/

推荐一个室内设计软件,关键是开源的,与LiveHome3D相比,感觉差不多,有的使用习惯似乎还更好一些。

把两居改成四居,是这两年一直在思考的一个问题,已经做了十几个方案,最近终于逐渐找到了方向。

顺便抱怨一句,目前这些独立设计师的作品都不太看得上,不实用。

ID6 Crozz行驶7000公里问题小结

  1. 传感器误报,充电时曾多次显示电动单元故障,客服有告知两次停车后自动消除,启动车辆时出现过几次sos故障,停车后自动消除,未升级。
  2. 车机内集成的在线媒体内容很多儿童不宜,需要设置安全模式。
  3. 4G信号较弱,经常断线,有一次无法自行恢复,到4S店消除。
  4. 在线媒体来源较少,缺少高质量内容,对连载内容无法直接定位或连续播放。
  5. 尾门踢脚感应不灵敏,基本没有打开过。
  6. 车机内导航缺少导航途中添加目标方向上的沿线搜索功能,如添加充电站、公共厕所、餐厅等。目前的搜索结果跟当前导航路径无关,不够便捷。
  7. 导航中充电站导航缺少充电桩空闲状态显示和预约功能。
  8. 导航中充电桩缺少现状反馈,有的充电站长期被占用或封堵,属于完全无法使用情形,在石家庄市去了两个充电站都是如此。希望充电桩筛选增加“最近使用”,最近有人充电的。
  9. 车队功能不好用,大概需要重新设计。
  10. 没有车内温度显示。
  11. 官方App必须退出重启才能刷新车辆状态,断线后无法自动重连。
  12. 优驾规则不明确,越开越少,不开更多。
  13. 车辆授权账户增加充电时使用主账户额度代付,主账户事先授权。
  14. HUD希望能调整大小,目前显示较小,不容易识别,反而不如低头看小屏。
  15. 在线客服基本上不能响应问题,都推到销售专员去了。

以上是大众主动邀请填写的反馈,已经顺便发给了水木车友群,在这里也贴一下,供打算买这个款车的朋友参考。

总体上,没有遇到大问题,开了几千公里,右前轮轮毂蹭了一下马路牙子,除此之外没有别的损伤。

ID6 Crozz十一假期自驾体验

行程:北京-首都环线高速野三坡服务区-张家口蔚县暖泉古镇-蔚县茶山村-石家庄-井陉段家楼-衡水-北京

充电:基本上都是高速服务区充电,只有石家庄是在民宿所在小区边上一个海鲜市场,衡水是在滨湖国际小区边上。体验,高速上虽然速度不快,但可用率还是比较高的,这条线上人车也不多。从衡水回北京的时候车比较多,找了几个服务区都满了,最后绕到廊坊服务区充的点,走京台高速进城。

体验:车的舒适度还可以,空间也够用,雨天开起来视线好,很稳,但雨天开ACC方向盘会来回晃,不如平时稳,不如关掉自己管方向盘。

续航:因为一直下雨,再加上开空调跑高速,电耗接近25度/百公里,总续航从565降到了325,按剩下20%就要充电的话,只能跑268公里。这个里程刚刚够从衡水到北京的,剩余公里数在五六十公里左右,也不是很保险,如果堵车就有点悬,所以回北京的时候还是补了一次电。再一个就是外面老快充的话,也会虚一些,续航会打折扣。

十年

孟繁永,现任某不知名数字出版技术提供商技术总。国内第一大山寨机设计生产公司和自动扣费后门开发团队觉得兜不起赚钱的后果果断退出,做新浪阳光高考平台运营没开一单后退出,做消费折扣券平台没上线公司倒闭退出,第一个国内绘本馆地图和绘本馆馆长交流会发起人,和出版社社长合伙开绘本馆倒闭退出,在汉口参与某地块创意园区改造计划因区长被抓了退出,做美国富布莱特学者的中国研究顾问因学者回国了停止,和林一苇在西湖边成功预言直播业模式和规模但错过,被华文天下老总招过去线上卖丝巾觉得不靠谱退出,在中国少年儿童新闻出版总社干了四年领导不想继续干项目了退出,研究无人机并成为宝岛某型无人机北方总代维修因帝都禁飞厂家倒闭停止此业务,在某新媒体大数据公司给各部委做暗黑报告觉得不爽退出。

日光山谷体验后记

日光山谷,一个挺好听的名字,是游乐场加民宿的模式,游乐场还不错,绿化很好,设施也算不错,但是民宿很差,号称别墅,结果却是回迁房的装修,连冰箱都没有,厨房也不开放,不提供任何操作的空间。

好在准备充分,自带了卡拉OK的音响,自带了投影仪,自带了电烧烤炉和电源延长线,实在没有预料到连冰箱都没有,没有准备车载冰箱。

回过头来再重新详细列举一下装备清单:

(1)KM666便携式卡拉OK音响一台,蓝牙无线麦克两只,建议买新款的,用的不是蓝牙,比蓝牙更稳定一些,蓝牙在远距离或者干扰多一点的地方显得有点不顺畅。另外,唱歌的音响不要小于30w,太小了,吼出来没有什么效果,这只还好,不算太大,够用。闲鱼上买的,同款的有个山水的,贵不少,没买山水的。据说音响在广东那边的工厂都做透了,弄个壳子就能生产。我觉得是山水那款未必是自己生产的。

(2)飞利浦的短距投影仪,反射式的,有个白墙就行,带着比较方便,这东西国内只能从闲鱼上买,有新款,我这个老的内置安卓主机,但没多大用,性能不好,也没有多少可以装的app,新款的直接放弃了安卓主机,这样更方便,直接拿手机或者电脑,或者外置安卓TV盒子挺好。

(3)3kw的电烧烤炉,商用款最小的,一次烤10来个肉串,很好用。

(4)对讲机一对,但没啥用,小朋友抢着拿,但都不开机,呼不到。

(5)15米公牛电源线,用上了,找的别墅院子里有个亭子接了插座,虽然引到电烧烤炉不需要15米,但还是用上了,很方便,以后常备在后备箱里。在西国贸汽配城的工具店买的,140,比网上便宜。

(6)风劲霸充气泵,没用上,但很好用,新买的设定气压充满即停的,声音很小,打气速度很快,试了给自行车充气,几秒钟搞定。二百多,比杂牌子贵不少。

(7)睡袋三个,一直在车上放着,这次真的用上了,别墅的床太硬,把被子铺下面,把睡袋打开当被子盖了。再次强烈谴责华润的“民宿”业务,坑人。

(8)缺少一个车载冰箱,再再次谴责华润,别墅里连个冰箱都没有,带的肉串多了,没有地方放,只好全部烤好了常温下放着,第二天再加热。

德国博赫尔

最近在挑洗车机,貌似除了卡赫是真正的洋品牌,其他的多半是冒充的,比如这个博赫尔,德国确实有个博赫尔,但国内这个博赫尔却是2015年才注册的商标。

类似的有很多,德国的多,喜欢用德国的还有吸尘器、电风扇等品类的。做洗车机的有个老厂叫黑猫,我查了查,貌似正宗的叫苏州黑猫,现在市面上还有上海黑猫、台湾黑猫等等,还有叫别的猫的。但仔细看看,即使苏州黑猫也不是那么让人满意,而且苏州黑猫多半是大的洗车机,家用型的貌似也不是自己做的,品控和服务一般。

充气泵我买了风劲霸的,开机试了试,感觉是买对了,包装也不错,整体看上去是比较正经的产品。

看到一个浙江雨沃,阿里巴巴上有,淘宝上搜不到,大概主要做代工了吧。再想想该如何选择品牌。

回过头来,既然品牌这么乱,为什么没有哪个大数据平台从品牌衍生的角度做一做文章呢?也许,接下来该搞了,既然品牌注册的时候是分领域的,那么使用的时候也需要注意领域,同时,也需要更加方便的查询,国家商标局的网站做得太烂,估计没有多少消费者会去查,而百度之类的搜索引擎,为了赚肮脏的流量的钱,也不愿意将正经品牌推送到前面。这个服务怎么构建,值得考虑。