跳至主要內容
Sunflower's Secret

Sunflower's Secret

莫听穿林打叶声,一蓑烟雨任平生

Object.defineProperty与Proxy

Object.defineProperty

Object.defineProperty 是 ES5 引入的方法,用于在对象上定义新属性或修改现有属性。

let obj = {};
Object.defineProperty(obj, 'prop', {
  value: 42,
  writable: false
});

Cap原创大约 3 分钟vue
Object.defineProperty可能表现更好的场景

简单对象的监听

当我们只需要监听一个简单对象的少量属性时,Object.defineProperty 可能会有更好的性能。这是因为它不需要创建额外的代理对象。

let obj = {};
Object.defineProperty(obj, 'name', {
    get() {
        console.log('Getting name');
        return this._name;
    },
    set(value) {
        console.log('Setting name');
        this._name = value;
    }
});

Cap原创大约 3 分钟vue
左手粘着Vue右手舞着React

作为前端开发工程师,当我们左手拿着 Vue,右手拿着 React,关于它们的种种,其实我们都应该是了然于胸的。

宏观概念

拿到一个前端框架,我们更应该如何去看?肯定不是一头扎进 api 的调用方式,也不是一头扎进源码的海洋。我们应该有对比的看,和你熟悉的一个框架去对比。

众所周知,前端接触最多的是浏览器,浏览器也是面向用户最直接的宿主环境。我们的页面,不管是 SPA,SSR
在浏览器呈现出来的,就是 html/css/js。所以我们以结果触发,首先看,这个框架是如何生成 html/css/js 的?
我们先掌握这个宏观概念,再带着疑问去看细节。


Cap原创大约 6 分钟
音视频编解码常用知识点

视频播放器原理

视频播放器播放一个互联网上的视频文件,需要经过以下几个步骤:解协议,解封装,解码视音频,视音频同步。如果播放本地文件则不需要解协议,为以下几个步骤:解封装,解码视音频,视音频同步。他们的过程如图所示。

image
image

Cap原创大约 29 分钟video audio
小程序的工程化

如何推进小程序的工程化,其实就是如何在前端工程化的各个环节去推进小程序的工程化,沉淀出一套可复用的体系。

原则就是基于现状,先思考是否需要,再逐步推进;先解决有无,再解决好坏。

前端工程化

  1. 规范化
  2. 版本控制与协作
  3. 模块化与组件化
  4. 工具化
  5. 自动化测试
  6. 持续集成
  7. 监控与告警

从开发到上线的链路来看,小程序和一般的web项目还是稍有些不同的。懂得都懂。这里随便列举几个点

  • 开发工具需要使用微信开发者工具
  • 小程序的发布需要走小程序的发布流程且包大小有限制
  • 小程序的开发版/体验版/正式版

Cap原创大约 3 分钟
模拟问题

技术能力

Vue.js 经验:你在Vue.js方面有很多经验。能否分享一个你在Vue项目中遇到的技术挑战,并说明你是如何解决的?在这个过程中,你做出了哪些关键决策?

小程序对接IM的挑战

问题:

解决方案:

关键决策:

老官网被识别为欺诈网站,全屏红色

某天的傍晚,使用chrome访问官网时返现被标记为欺诈网站,并且全屏红色。快速响应,制定方案。

一、申诉报告

由运维根据网站指引,去发送申诉邮件。

二、工程自检

前端主导,根据谷歌提供的诱导广告信息,排查官网的页面和接口,寻找可疑信息。


Cap原创大约 3 分钟
小程序的总结梳理

面对的情况

初来乍到,公司只有APP和H5,用户的转换量很少。因为作为中老年为主的患者,第一步去下载APP,对他们来说就已经有一定的成本了。特别是安卓有各种应用市场,APP Stroe有各种验证。小程序以微信为载体,在一定程度上大大降低了用户的操作门槛。

业务场景分析

  1. 首先面向的用户

    面向的群里的帕金森患者,多以中老年群体为主。

  2. 主要的业务场景,就是给患者提供的服务

    小程序提供图文问诊服务,患者和医生的在线IM聊天,直播分享

  3. 关键的技术节点

    IM聊天、分享、直播、图文问诊


Cap原创大约 3 分钟
微信小程序坑点记录

web-view 组件的配置问题

业务域名配置

文件预览的兼容问题

  • 问题: 当使用 web-view 组件去预览 pdf文件的时候,安卓机型会有无法预览的问题。

  • 解决方案: 使用先下载再预览的方式, Taro.downloadFile → Taro.openDocument

分享朋友圈问题

  • 问题: 分享到朋友圈时,微信会把当前分享页面放到一个隔离沙箱中(单页面),无法和应用的其他页面通信。如果当前页面的接口401或者依赖其他页面的信息,那么当前页面分享出来的就是无效页面。

  • 解决方案: 剥离分享朋友圈页面的上下文依赖关系

  • 建议: 慎重开启分享朋友圈页面,开启后需要保证分享页面能正常独立加载


Cap原创大约 4 分钟
2
3
4
5
...
10