zkl2333 发布的文章

首先找到 LeetCode 202 题

「快乐数」定义为:

对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。 然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。
如果 可以变为  1,那么这个数就是快乐数。 如果 n 是快乐数就返回 true ;不是,则返回 false 。

简单抽象一下:因为每一次计算都唯一指向下一个结果,所以这是一个类似链表的结构。

又因为不是”快乐数“会出现无限循环,所以这个判断”快乐数“就变成了判断”链表是否有环“。

简单用快慢指针判断,如果有环,慢指针一定会追上快指针。

然后一个循环求和就完事了。

// 字符串转字符数组
function nta(n) {
  return n.toString().split("");
}

// 数字每一位的平方和(链表下一位)
function next(n) {
  let src = 0;
  nta(n).map((i) => {
    src = src + i * i;
  });
  return src;
}

// 判断是否是快乐数(是否有环)
const isHappy = function (n) {
  let m = next(n);
  let k = next(m);
  while (k !== m && m !== 1) {
    m = next(m);
    k = next(next(k));
  }
  return m === 1;
};

// 然后一个循环求和就完事了
let res = 0;
for (let i = 1; i <= 100000; i++) {
  if (isHappy(i)) {
    res = res + i;
  }
}
console.log(res);

还没写
别催了在写了在写了(逃

制作一个作品集网页

计划使用微前端嵌入我的其他小项目。做这个主要是为了学一下微前端。

完善 Start 项目

将作为(我个人的)网址导航以及浏览器首页,是一个尝鲜用的项目。

其实就是玩,边玩边做,用一些没用过的技术瞎搞,什么不会用什么,比如 yarn2、浏览器拖放 API、github/workflows 什么的。

整几篇博客文章

很久没有写文章了,平时学习都是不会的不敢写怕说错。会了之后就觉得没啥必要就那么回事。加上有那么一点点懒?

所以决定,有空针对性的选几个题,争取写个三五篇文章出来给我的博客充充门面!

搞一个 React 的项目出来

因为平时都是 Vue 一把梭,React 这一块就没怎么研究。偏科不好,还是搞个项目边学边做比较好。但是没啥想做的,工作上的项目全都是 Vue。所以待定吧……

研究一些 CSS 方面的花里胡哨

平时都是 js 写业务,特别是现在做的内部系统。对美观要求极低能用就行……但是!作为一个有追求的前端,我要搞一些一看就很厉害的动效出来放进作品集。

公司年会要准备年终总结,还要做 PPT。不会写文章外加沉默寡言的我想想就头疼。
所以决定先在这里列一个大概的大纲,毕竟博客也荒废太久了。顺带测试一下 MWeb 这款app,因为它可以直接发布 markdown 原文(实测选择“发布为markdown” typecho没渲染成html) 到 typecho 博客(其实这才是发文章的主要原因)。


工作总结

主要是做了两个项目

  • 智联互充小程序
  • 办公系统

智联互充小程序

智联互充小程序的 uni-app 版本的重构。

  • 微信端包体积过大,无法发布。其他端首次加载缓慢。
    1. 通过分包加载,将小程序页面分为主包、公共页面、用户页面、管理员页面。主包仅包含开屏图片以及公共依赖。
    2. 将活动页面做成独立分包,通过活动链接进入小程序只加载独立分包。
    3. 引入工程化插件,打包前将图片压缩。
  • 实现路由拦截,统一处理页面跳转以及鉴权。

内部办公系统(ERP、CRM)

vue2 开发的部署在内网的一个公司内部办公自动化系统。

  • 编写 CURD 组件,将繁琐的列表增删改查抽象成一个组件。通过后端下发配置文件来动态生成列表和编辑页面,实现筛选、分页、权限验证、查看新增编辑删除。
  • 各种流程单页面不像列表页面大同小异,他们异化很大。但是仔细观察发现内部几乎都是类似的元素排列组合。所以我通过继承 CRUD 组件配合自定义配置导入不同组件的方式来实现流程单的编写。
  • 请求缓存,很多页面都会需要类似的数据。比如物料分类、部门列表。如果单独定义缓存,工作量很大不说,内存管理、依赖管理、数据污染都不好做。思来想去决定缓存请求,在编写业务逻辑的时候不需要关心其他业务组件有没有依赖他们。目前算法很简单只是通过 url 和参数计算哈希来确定唯一性默认只缓存 get 请求并且写死两秒失效(可以在调用重新设置)。后续有精力可以加入淘汰算法和垃圾清理来提高缓存效率。


学习总结

  • 完整学习了 uni-app 以及微信小程序、支付宝小程序的开发,包括支付对接、分包优化、路由拦截、第三方登录等。并且实战项目没出大问题。
  • vue2、vuex、vue-router等 vue 全家桶算是都基本熟练了。计划明年强化学习 vue3 以及 React 系列。并且开始阅读源码。
  • 在开发中不再是调包侠,遇到问题能在源码上思考问题。在问题的思考上能更有深度。
  • 参与 GitHub 社区以及微信开发者社区的讨论。在几个小项目 pr 成功成为贡献者。

早上一个uni-app cli项目npm install报错,定位到node-sass

一开始以为是node-gyp的错,因为报错信息有一句Try to update node-gyp,但是仔细一看是一个叫win32-x64-88_binding.node的包404了。

然后去https://github.com/sass/node-sass/releases/tag/v5.0.0看发现支持node15的版本还在Pre-release状态。

npm i node-sass@5.0.0 //失败 不存在这个版本

弃坑 改用dart-sass

npm rm node-sass -D
npm i sass -D

项目根目录新建vue.config.js,修改loader。

module.exports = {
    css: {
        loaderOptions: {
            sass: {
                implementation: require("sass") // This line must in sass option
            }
        }
    }
};

之后就一切正常了。
完结撒花.jpg

最近发现自己对这块很不了解,然后找到一篇不错的文章。

文中总结了一个表格便于速查,直接 copy。

更多内容请 阅读原文
转载请注明出处:http://www.bewindoweb.com/224.html | 三颗豆子
分享许可方式:知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议
许可协议  许可 限制条件  其他 
 None 不允许任何操作  -  -
 GNU GPLv3

个人使用

商业使用

专利授权

复制分发

修改

必须开源
保留版权信息
声明变更
不允许更换协议
作者免责
 MIT License 个人使用
商业使用
复制分发
修改
保留版权信息 作者免责
 Apache License 2.0

个人使用

商业使用

专利授权

复制分发

修改

保留版权信息
声明变更
不允许使用商标  
作者免责
 BSD 2-Clause 个人使用
商业使用
复制分发
修改
保留版权信息 作者免责
 BSD 3-Clause 个人使用
商业使用
复制分发
修改
保留版权信息
作者信息不允许用于推销
作者免责
 Eclipse Public License 2.0 个人使用

商业使用

专利授权

复制分发

修改

必须开源
保留版权信息
不允许更换协议
作者免责
 GNU AGPLv3 个人使用

商业使用

专利授权

复制分发

修改

必须开源
保留版权信息
声明变更
不允许更换协议
网络服务需公开完整源码
作者免责
 GNU GPLv2 个人使用

商业使用

复制分发

修改

必须开源
保留版权信息
声明变更
不允许更换协议
作者免责
 GNU LGPLv2.1 个人使用

商业使用

复制分发

修改

必须开源
保留版权信息
声明变更
不允许更换协议(衍生库)
作者免责
 GNU LGPLv3 个人使用

商业使用

专利授权

复制分发

修改

必须开源
保留版权信息
声明变更
不允许更换协议(衍生库)  
作者免责
 Mozilla Public License 2.0 个人使用

商业使用

专利授权

复制分发

修改

必须开源
保留版权信息
声明变更
不允许更换协议(文件)
作者免责
 The Unlicense 个人使用

商业使用

复制分发

修改

 - 作者免责