正在查看 — 前端思考

这是又一篇臆想文
如果看到文章的您,觉得给您带来了帮助,那纯属瞎猫撞上死耗子。

TL;DR

  • 组件化在做什么,组件是什么
  • 因为 toB 大型应用的历史原因,前端开始需要前端架构设计。或者说前端工程本就应该要架构设计

所以是什么时候前端开发也发展成需要「软件工程」的时代了,还不是现在用户的电脑越来越 nb 浏览器越来越 nb

工程实践变成燃眉之急绝对是近几年「是个🔨就要上云」造成的 —— 应用都希望变成 SaaS;都希望敏捷无感更新;都希望多端同步(这里不指跨平台)……

演变到这就产生一个问题

这问题真的是土到我了,立刻就发了一个知乎想法。但后来我发现,他会不会想问的是几百年前,在盘古开天辟地之后的react 0.x时代,于是我默默把想法干掉了。

如果是createClassextends React.Component,还有点意思。如果是functional component,那您怎么不用同样很「渐进式」同时又更牛逼的vue呢?

简单对比:

createClassComponent/PureComponent
ES5ES6
propTypes/getDefaultPropComponent.defaultProps/Component.propType
this 已被指定属性 this 不默认指向组件(实例)
mixinmixin(被取消,不建议,做不到,HOC)

其中对我来说,这两个的区别可能mixin最有意思

听说 Vue3 数据绑定要切换到 Proxy,为什么?

这就是这篇文章的原因,来源于某个牛逼公司的面试。我真的应该学会怎么清楚表达观点…

definePropertyProxy 使用方式和效果看起来是差不多的,但如果翻译成中文的话,一个是定义属性,一个是代理,并且 MDN 上描述有所不同。

Object.defineProperty() 方法会直接在一个对象上定义一个新属性,或者修改一个对象的现有属性, 并返回这个对象。 —— MDN

Proxy 对象用于定义基本操作的自定义行为(如属性查找,赋值,枚举,函数调用等)。 —— MDN

defineProperty

这是一个 ES5 的方法。一个 defineProperty 需要三个参数,都是 require

Round 1

- 我现在把所有东西都注释掉,改成这样
function a() {
return inner;
let inner;
}
返回什么?

- 那就应该 undefined 了,反正后面不执行

自信的不行,出了门掏出全世界最牛逼的千元机坚果 Pro 2S,验证了一下。

inner is not defined

确实是不执行,但好像不是 undefined 啊╭(*゚Д゚*)╮

Round 2

- 如果改成这样呢
function a() {
function inner() {}
return inner;
let inner;
}
返回什么?

- 返回方法

自信的不行,同样用全世界最牛逼的千元机坚果 Pro 2S,验证了一下。

Identifier ‘inner’ has already been declared

(゚Д゚≡゚д゚)!? 你在返回你🐴呢?

又在「杂乱的工作台上」完成文章……

没错又错过一个非常好的机会。与其说是因为时间不够做不完,还不如说是因为陷入斐波那契思考导致做不完。

不留遗憾,把它搞完。题源就不说了。

最近想到一个问题:为什么JavaScript定义一个函数有那么多种形式,是历史残留还是为了装逼?研究了一下发现还是有区别的。

JavaScript中定义一个方法主要可以分成两种形式:

  • 函数声明
  • 函数表达式

怎么可能真的是四轴的踩坑指南,其实是大疆的受苦之旅。恼羞成怒下单了mavic air(所以dji还是赚了?)

怎么可能会让你回去还能等到通知,人家HR明明都告诉我面试入职一条龙了!算了本来就是自己的问题,能一路到看到四个大佬都是赚的。面试结束还送了架精灵还有一块工牌!(虽然是纸精灵和工牌套子。

总结一下印象深刻受苦的问题和答案,不过有一点想吐槽的…就vuereact之间的关系和选择,我看到了高一文理科分班的那种影子:人家都是哪科分高选哪科,我是选分低 + 主管臆想……

学会了却不会活用是真的菜…

前几天面试,提到了回调地狱用promise,然后抛出个衍生问题:promise也会嵌套,怎么解决promise的回调地狱。

我想不到,直接问能不能用ES8,说行,然后我就想到了const p2 = await Promise这种做法。

可是,我记得我在若干天前才写了一篇关于「JS方法链式调用」。

只要函数返回值是一个函数,就可以连着调用

So,

p1.then(({ p2 }) => {
  return p2
}).then({ p3 } => {})

著名框架jQuery所使用的设计模式——“虾扯蛋”

之前在知乎回答过一个问题:2018的前端应该学什么。

我回答了:就算前端再复杂,jQuery依然是最流行的那个。

这答案怎么样呢?废话!肯定没人点赞了!

人性就是如此!一旦接受了更装逼新的思路,就会觉得以前见过的东西都太弱了!

新项目想用什么就用什么,什么技术栈健全就用什么。可是老项目并没办法想干什么干什么,时间和精力不允许他去重构。金蝶还在卖VB呢,他们肯定也想过VB已经不行了。

好了题外话,我还是很有兴趣实现一个塞进nlvi的类jq的。

在我的博客打开开发者工具 -> console,输入 Nlvi.tools.scroll 试试?

开个玩笑,我自己也不知道这算不算柯里化(逃

总之为什么这么写,我自己觉得这样容易理解,方便盲僧(理清)。

还有最近关于“如何治理别人爱装逼的毛病”系列中刚写的一坨,新鲜的:

const menuItem = (list) =>
      list.map(({title, color, icon, descs}) =>
        <menu-item title={title} color={color} icon={icon}>{
          descs.map(v => <span>{v}</span>)}</menu-item>)

0%