这是去年我有幸参与 GIAC 全球互联网架构大会大前端专场的一些零散的思考与总结。可能不是很系统,尽可能表达出我自己的思考,希望也能对大家有一些帮助。

从第一性原理解读前端设计

主讲人:

淘系技术部前端工程师:林阳(連山),2014年上线个人第一个开源框架 IOING,2018年加入阿里,重点参与前端智能化相关工程,期间输出 2 个开源项目,3 份技术专利。

什么是第一性原理

事物(系统)本质的源头,比如下图中一团乱麻的绳子,它的第一性原理就是它的起点。

第一性原理有如下的特点:

1.任何系统都有自己的“第一性原理”2.“第一性原理”是一种演绎法思维3.从本质出发,逻辑推理的根基4.事物的本体、本质、本性5.理念论、简一性事物的第一性可能是随着外界条件变化而变化的。比如一个公司不同时间段内的有不同的第一战略目标。第一性原理可以帮助跨越非连续性。

第一性原理如何拆解?

要确定两个关键要素:“目的”和“实现目的的途径”。从目标出发,寻找实现目的的方式。

思考:业务需求中,第一性原理应该是该需求的痛点和目标。开发过程中,遇到问题,应该使用演绎法推断该问题的“第一性原理”——根源问题,从根源问题分析得出方案。

前端如何使用第一性原理

第一性原理与编程

开闭原则是第一性原则,原有其他的开发职责都应该基于开闭原则。

开闭原则 (The Open/Closed Principle, OCP) 规定“软件中的对象(类,模块,函数等等)应该对于扩展是开放的,但是对于修改是封闭的

JS运行时安全案例

背景:淘宝很多页面由入驻方提供,那如何保证对方的代码是否安全?比如我不希望第三方网页获取 Cookie。我们应该怎么限制他们的能力?

问题:如何限制?在编译的时候去除?还是运行时的限制?最后的方法是运行时限制。比如小程序中直接使用容器的方案,就是容器提供什么能力,用户只能使用这些能力

解决方法一:将不安全变量覆盖? 比如,在系统中禁止弹窗 alert。禁止获取cookie 等等。但缺点很明显——无法枚举完所有的黑名单

找到问题第一性原理

浏览器的安全策略是什么?比如:

  • 同源策略* 沙箱机制知道第一性原理,该怎么做?

具体的解决方法

iframe 中有一个属性,称为 sandbox。可以控制嵌入网页的权限。将第三方代码放在这个设置了 sanbox 属性的 iframe 中,等同于提供了一个隔离层,即“沙箱”

嵌入的网页默认具有正常权限,比如执行脚本、提交表单、弹出窗口等。如果嵌入的网页是其他网站的页面,你不了解对方会执行什么操作,因此就存在安全风险。为了限制 <iframe> 的风险,HTML 提供了sandbox属性,允许设置嵌入的网页的权限,等同于提供了一个隔离层,即“沙箱”。

假如第三方一定要用到类似弹窗的能力,会对外提供,但会做一定的封装,比如统计、判断有没风险等。

但是暴露出来的 API 是存在传入⻛险。外部传入 Object 对象,通过原型链找到内部的 constructor,可以通过 call 的方式调用方法,这个时候它的上下文就是外部的上下文,就可能存在风险。

那么我们如何解决这个问题?通过 Proxy 监听和控制,所有的访问和设置都需要经过代理,在代理过程中,我们会将对象进行序列化,所以最后沙箱内部获取到的是序列化的内容,序列后之后就是安全的。

对于 DOM 节点的操作,也可以通过 Proxy 去解决。比如调用 document.creatElement 的时候,只能创建白名单中的一些 tag

其他对 DOM 操作的限制,比如点击事件 onClick,我们需要将事件本身等信息外传,就会存在安全问题。跟上面的类似,当传入处理器函数的时候,将它序列化,最后执行。实现一个 Observe 函数,监听回传给处理器的信息,在这个过程中进行序列化和鉴权操作。

以上整体流程如下所示:

智能化出码部分案例解读

要解决的问题:效率问题。其中沟通和编码占用了大部分的时间。如下:

我们的目标是两个重要的步骤,将视觉转换成布局 HTML + CSS 的代码。将 PRD 转换成逻辑 JavaScript 代码。

其中沟通和编码中间需要一个对等协议要完成对接。但是自然语言和程序是有歧义的,自然语言是非结构化的,而编程语言是结构化的。为了消除歧义,需要做到以下几点:

  • 结构化收集
  • 统一表协议
  • 限制信息范围

如何找到对等协议,以下有两种途径去做:

  • 通过对现有工作的统计和归纳从而得出要素结论。根据现在的代码去总结归纳常用的跟 PRD 哪些是相关性的。
  • 演绎法思维。

小结

第一性原理不仅仅跟编程相关,而是一种思维方式,能够帮助我们更好的解决遇到的问题。第一性原理的概念是抽象的,作者花了很多时间解释第一性原理,也从 JS 安全策略和智能化出码两个实例讲解,深入浅出。

哈啰出行在Flutter上的探索与实践

主讲人:

陈小辉。2020年8月加入哈啰出行,哈啰大前端技术委员会负责人&普惠用车大前端负责人,业务方面主要负责四轮相关顺风车、打车、车主服务等业务研发管理工作,致力于推进哈啰大前端技术架构向跨端端容器方向演进,目前主要聚焦在大前端工程化,多端渲染容器,大前端高可用体系,业务架构治理等方面。

基础架构

在端容器方面上进行探索,目标是

  • 标准化。将容器更加标准化,不管是哪个方案,主要采取一个标准,就能很快迁移
  • 容器化
  • 动态化。业务变化快,发版较快

能力层: 将底层能力通用化,给容器层提供能力,不管容器是什么,都可以使用 容器层:对容器的探索,适配统一化 业务层:支持不同的业务形态

flutter 使用,绿色模块就是要建设内容,比如研发工具、稳定性监控等。

两端变一端,时间可能会变多,但个人感觉从长远的角度讲,还是很有意义的

flutter 生态的探讨

端侧技术比较

  • 性能上。flutter 和原生还是有所差异。在单页面应用上,差别不大。一些页面的跳转、动画的需求上会略低于原生
  • 发布效率。flutter 没有很大优势。不能动态发布
  • 一致性
  • 研发效率。需要考虑一些基建等
  • 生态。目前是硬伤,急需改善

总结如下:Flutter优势 :

  • Skia引擎,强一致性
  • 接近Native性能体验
  • iOS和Android双端研发效率

Flutter不足:

  • 生态不完善
  • 整体框架在进化过程中
  • 缺少动态性

Flutter动态化的实践

基本原理

现在业内有如下的几个方案:

  • 类似 RN。通过 JavaScript 的能力去隐射 flutter 组件去渲染
  • DSL + Runtime
  • 编译产物下发

目前哈啰出行采取的是第二种方案,大致流程:源码转成AST,再将 AST 转换成 JSON,打包,下发到端,解包,解释执行

这种方案存在以下的问题,目前只在一些PV量较少的简单页面上试用

  • 需要实现的语法元素比较多
  • 符号表和Flutter版本存在相关性

2021 GIAC 大前端专场思考总结(上篇)相关推荐

  1. 2021 大前端技术回顾及未来展望

    作者:腾讯 IMWeb 前端团队 2021 年大前端领域没有出现革命性的明星项目,但在各个细分的技术领域都有一定的拓展与深耕,有很多新技术或者新特性有望在 2022 年迎来爆发.在互联网 " ...

  2. 2019TLC大会精彩回顾—大前端·信息流

    整体概况 2019年8月17日,第三届TLC大会在科兴科学园国际会议中心完美落下帷幕.作为一年一度的技术盛会,本次大会云集国内外19名技术专家,现场参会人数超过600人,线上直播(腾讯直播)人气600 ...

  3. 2020 腾讯Techo Park - Flutter与大前端的革命

    大家好我是 <Flutter开发实战详解> 的作者郭树煜,很高兴今天有机会在这里和大家分享关于 Flutter 和大前端的话题,今天我主要就从 Flutter .大前端和写作 这三个方面给 ...

  4. 【大前端】独家下载!看阿里巴巴前端技术专家解读2021前端热门技术趋势

    2021 前端工程师应该关注哪些技术?阿里巴巴前端委员会重磅推荐! 复制该链接到浏览器完成下载或分享:https://developer.aliyun.com/topic/download?id=11 ...

  5. 2021大前端技术储备

    GMTC GMTC全球大前端技术大会是由极客邦科技旗下InfoQ中国主办的技术盛会,关注前端.移动.AI应用等多个技术领域,促进全球技术交流,推动国内技术升级.GMTC为期4天,包括两天的会议和两天的 ...

  6. 分享狼叔关于《大前端工程化的实践与思考》

    前言 本文来自极客前端训练营的主题公开课,非原创. 作者简介 桑世龙(狼叔),阿里巴巴前端技术专家,nodejs<狼书>作者. 快速发展的大背景 前端发展太快了,在2004年之前,大概只要 ...

  7. 浅谈大前端的代表技术及其影响,值得我们思考

    到底哪些是大前端的代表技术?从业务上来说,我认为终端 开发.网关设计.接口设计.桌面端的 工程化都可以算是大前端的业务范畴. 具体的技术,则是基于 HTML5.NodeJS 的通用技术,以及各平台的专 ...

  8. 前端18个月难度翻番?来这里把握大前端技术本质进展丨稀土开发者大会

    图片来源:pexels.com "别更新了,学不动了"向来是前端开发群体的切肤之痛: React 还没学明白,Vue 就出来了: Vue 2.0 还没上手,3.0 就发布了: No ...

  9. GMTC 大前端时代前端监控的最佳实践

    摘要: 今天我分享的内容分成三个部分: 第一部分是"大前端时代前端监控新的变化", 讲述这些年来,前端监控一些新的视角以及最前沿的一些思考. 第二部分"前端监控的最佳实践 ...

最新文章

  1. Hyperledger Fabric 超级账本 Java 开发区块链环境构建
  2. 如何判断对象是不是出轨了?
  3. CTO:再写if-else,逮着罚款1000!
  4. 那些年,我写过的设置Windows系统变量的vbs脚本
  5. 求连续区间和为目标值的一种解题思路
  6. 山东工商学院第五届ACM趣味编程大赛感想
  7. Win11 2022 Edge浏览器解决教资报名(浏览器不兼容)问题
  8. java scene_JavaFX中场景(Scene)的意义是什么?
  9. Java 学习笔记 —— 基础部分
  10. 2017 ACM Arabella Collegiate Programming Contest(solved 9/13, complex 12/13)
  11. 100天搞定机器学习(100-Days-Of-ML)(一)数据预处理
  12. 一个有趣的网站:子说
  13. 贾俊平《统计学》第七章知识点总结及课后习题答案
  14. 个人支付收款方案-PayJS
  15. [USACO 2012 Feb B]Moo - 规律
  16. 计算机毕业设计springboot+vue+elementUI高考填报志愿综合参考系统
  17. 杨海潮 mysql 认证_新浪微博、腾讯微博:mysql数据库主表设计猜想
  18. python魔术师算法
  19. 大学计算机专业的竞赛,大学计算机专业竞赛大全.ppt
  20. oracle 移动加权平均,移动加权平均物料类别和成本工作流设置说明

热门文章

  1. 无法连接到服务器,请您检查网络连接 阴阳师桌面版
  2. 2020.4.27 python编程基础
  3. 小米AI音箱发布,但它哪里不对?
  4. 算法转载收藏【2018年及之前】
  5. PayPal/Stripe/Square 轮询收单系统
  6. 问题1:Java程序员这个职业赚钱吗?能赚多少钱?
  7. 如何用PS做平面设计?简单几招,不信你学不会!
  8. 斯坦福四足机器人运动学逆解
  9. Elasticsearch5.x Head插件安装
  10. 11 年艺术生转行,逆袭成蚂蚁金服程序员,出版 TensorFlow 教材!