如果你在玩《剑网3缘起》,你会发现游戏有一个内置社区。虽然这个应用是个 CSR,但是会发现加载并不慢
而且这些都不是事后优化。所以正好可以分享一些可能对其产生作用的习惯和做法,或者说开发时可以注意的地方
TL;DR
总之就只有一个目标:尽量砍掉第一次加载的大小和尽量减少加载所需要花费的时间
- 减少加载体积
- 懒加载/延迟加载:利用 import/export 做代码分段
- 充分利用 http2 和 vite(开箱即用版 rollup )
- 非常巧合的做法,指跟 React Beta 版文档异曲同工
如果你在玩《剑网3缘起》,你会发现游戏有一个内置社区。虽然这个应用是个 CSR,但是会发现加载并不慢
而且这些都不是事后优化。所以正好可以分享一些可能对其产生作用的习惯和做法,或者说开发时可以注意的地方
总之就只有一个目标:尽量砍掉第一次加载的大小和尽量减少加载所需要花费的时间
这是又一篇臆想文
如果看到文章的您,觉得给您带来了帮助,那纯属瞎猫撞上死耗子。
所以是什么时候前端开发也发展成需要「软件工程」的时代了,还不是现在用户的电脑越来越 nb 浏览器越来越 nb
工程实践变成燃眉之急绝对是近几年「是个🔨就要上云」造成的 —— 应用都希望变成 SaaS;都希望敏捷无感更新;都希望多端同步(这里不指跨平台)……
演变到这就产生一个问题
这问题真的是土到我了,立刻就发了一个知乎想法。但后来我发现,他会不会想问的是几百年前,在盘古开天辟地之后的react 0.x
时代,于是我默默把想法干掉了。
如果是createClass
和extends React.Component
,还有点意思。如果是functional component
,那您怎么不用同样很「渐进式」同时又更牛逼的vue
呢?
简单对比:
createClass | Component/PureComponent |
---|---|
ES5 | ES6 |
propTypes/getDefaultProp | Component.defaultProps/Component.propType |
this 已被指定 | 属性 this 不默认指向组件(实例) |
mixin | mixin(被取消,不建议,做不到,HOC) |
其中对我来说,这两个的区别可能mixin
最有意思
听说 Vue3 数据绑定要切换到 Proxy,为什么?
这就是这篇文章的原因,来源于某个牛逼公司的面试。我真的应该学会怎么清楚表达观点…
defineProperty
和 Proxy
使用方式和效果看起来是差不多的,但如果翻译成中文的话,一个是定义属性,一个是代理,并且 MDN 上描述有所不同。
Object.defineProperty() 方法会直接在一个对象上定义一个新属性,或者修改一个对象的现有属性, 并返回这个对象。 —— MDN
Proxy 对象用于定义基本操作的自定义行为(如属性查找,赋值,枚举,函数调用等)。 —— MDN
这是一个 ES5
的方法。一个 defineProperty
需要三个参数,都是 require
- 我现在把所有东西都注释掉,改成这样
function a() {
return inner;
let inner;
}
返回什么?- 那就应该 undefined 了,反正后面不执行
自信的不行,出了门掏出全世界最牛逼的千元机坚果 Pro 2S,验证了一下。
inner is not defined
确实是不执行,但好像不是 undefined
啊╭(*゚Д゚*)╮
- 如果改成这样呢
function a() {
function inner() {}
return inner;
let inner;
}
返回什么?- 返回方法
自信的不行,同样用全世界最牛逼的千元机坚果 Pro 2S,验证了一下。
Identifier ‘inner’ has already been declared
(゚Д゚≡゚д゚)!? 你在返回你🐴呢?
又在「杂乱的工作台上」完成文章……
没错又错过一个非常好的机会。与其说是因为时间不够做不完,还不如说是因为陷入斐波那契思考导致做不完。
不留遗憾,把它搞完。题源就不说了。
最近想到一个问题:为什么JavaScript定义一个函数有那么多种形式,是历史残留还是为了装逼?研究了一下发现还是有区别的。
JavaScript中定义一个方法主要可以分成两种形式:
怎么可能真的是四轴的踩坑指南,其实是大疆的受苦之旅。恼羞成怒下单了mavic air
(所以dji还是赚了?)
怎么可能会让你回去还能等到通知,人家HR明明都告诉我面试入职一条龙了!算了本来就是自己的问题,能一路到看到四个大佬都是赚的。面试结束还送了架精灵还有一块工牌!(虽然是纸精灵和工牌套子。
总结一下印象深刻受苦的问题和答案,不过有一点想吐槽的…就vue
和react
之间的关系和选择,我看到了高一文理科分班的那种影子:人家都是哪科分高选哪科,我是选分低 + 主管臆想……
学会了却不会活用是真的菜…
前几天面试,提到了回调地狱用promise
,然后抛出个衍生问题:promise
也会嵌套,怎么解决promise
的回调地狱。
我想不到,直接问能不能用ES8
,说行,然后我就想到了const p2 = await Promise
这种做法。
可是,我记得我在若干天前才写了一篇关于「JS方法链式调用」。
只要函数返回值是一个函数,就可以连着调用
So,
p1.then(({ p2 }) => {
return p2
}).then({ p3 } => {})
著名框架
jQuery
所使用的设计模式——“虾扯蛋”
之前在知乎回答过一个问题:2018的前端应该学什么。
我回答了:就算前端再复杂,jQuery依然是最流行的那个。
这答案怎么样呢?废话!肯定没人点赞了!
人性就是如此!一旦接受了更装逼新的思路,就会觉得以前见过的东西都太弱了!
新项目想用什么就用什么,什么技术栈健全就用什么。可是老项目并没办法想干什么干什么,时间和精力不允许他去重构。金蝶还在卖VB呢,他们肯定也想过VB已经不行了。
好了题外话,我还是很有兴趣实现一个塞进nlvi
的类jq的。