粉丝2122获赞3.9万

今天面试一个四年经验的前端,简历上写着负责过多个大型项目的架构设计。厉害,我问了一个架构师 b 问题,你们项目为什么选择这种渲染模式? cs 二、 ss 二、 ss 二分别是用什么场景?他回答,我们用的 v u e 默认就是 cs 二, ss 二是服务端渲染,像 nux 点 js 那 种。 我追问,那如果一个电商网站,商品详情页用什么模式?首页用什么?用户中心用什么?为什么?如果商品数据每天更新一次,用什么模式? 如果每秒都在变呢?它这个可能都用 ssr 吧,或者有些用 csr。 四年经验,连基本渲染策略的选型都说不出依据。这架构设计是怎么负责的话?我整理了让大厂 hr 沉默的必考题库, 包含 v o 灵魂拷问、 react 高频陷阱、 js 十连问点个赞,评论区甩六六六,打包带走 nice。 现代前端渲染策略是一个完整的谱系,需要从四个维度理解,第一维度,四种核心渲染模式对比。 c s r 原理,服务端返回空 html, 浏览器加载 g s 号渲染。优点,服务器压力小,交互流畅,适合复杂应用。缺点,手屏慢, seo 差,低端设备性能问题, 适用后台管理系统工具型应用登录后才能访问的页面。 s s 二原理,服务端渲染完整, html 返回,浏览器直接显示。优点,手屏快, seo 好, 社交分享友好。 缺点,服务器压力大, pdf 慢,开发复杂度高,适用电商详情页。内容型网站需要 seo 的 页面 ssg 原理,构建时生成静态 html, 部署到 cdn。 优点,极致性能, cdn 友好,成本低。缺点,数据更新需要重新构建,不适合动态内容, 适用簿刻文档、网站营销页面不常见的内容。 i s 二原理, s s g。 加按需更新,首次访问静态后台触发重新生成。优点,静态性能加动态更新两全其美。缺点,实现复杂,需要框架支持适用电商商品页,新闻网站需要定期更新的内容。第二维度, 选型决策矩阵五个决策维度 s u。 要求,高 s s 二 s s g。 低 c s。 二手屏速度高 s s 二 s s g。 一 般 c s 二,数据实时性,实时 s s 二 c s g。 服务器成本有限 s s g c s 二,定期更新 i s s g。 服务器成本有限 ssgc s 二,充足 ssg 开发维护能力强,任意弱 csgssg 典型场景选型电商首页 ssg 加部分 csr 组建,定期重建商品详情页 i s r。 访问时触发重新生成 购物车,个人中心 c s r。 登录后内容博客文章 s s g。 配合 webhook 触发重建实时数据大盘 c s r。 加 web socket。 第三维度,混合渲染实战策略,同构应用一套代码跑在服务端和客户端, will call a new xt dot js react call the next js。 注意避免在服务端使用浏览器 api 增量。采用现有 cs 二项目,逐步引入 ss 二核心页面,用 ss 二次要页面保持 cs 二使用微前端拆分不同渲染模式,渲染降级, ss 二失败时降级到 cs 二静态页面回退方案,监控渲染成功率。 第四维度,性能监控与优化关键指标, ttfb ss 二模式下直观重要 fcp lcp 首屏渲染速度 tti 可交互时间,水合时间,客户端激活耗时 ss 二优化技巧, 流势渲染,边渲染边输出组建,即缓存缓存,不常变的组建,数据缓存、 readis 缓存 api 响应,避免在服务端执行耗时操作。 ssg 优化技巧,增量构建,指重新生成变化的页面,按需生成访问时才生成 cbn 预热,提前推送热点页面到边缘节点。第五维度框架选型与趋势 nextel js 支持所有渲染模式。 a p p router 带来全新架构,适合大型 react 的 项目。 nix 叫 jess, 同样支持多种渲染模式,模块化设计,生态丰富,适合 v o 技术站团队。 estro 岛屿架构,静态为主,动态组建,按需加载多框架支持,可以在同一项目使用 v o 和 react。 极致性能默认零 j s pubic 可恢复性,无需水合,直接恢复交互。创新的渲染理念适合追求极致性能的项目,这可厉害。 四年经验的前端应该对不同渲染模式有深入理解,能根据业务场景做出合理的技术选型,而不是只会用脚手架默认配置。你们项目用的什么渲染模式?遇到过什么坑?

d 端和 b 端做完 c o 是 不是重点不同?是有不同的,你像 b 端的话,我会发现就是写文章这一块也写,但是可能侧重点没有那么重,更多会做 many page, 你 就做分类页,大部分呢是把分类页做成列表的,形式丰富页面,因为竞争没那么激烈,可能 b 端的词容易排上去,那 c 端的话由于就是旁叶,可能竞争比较激烈。头部的我们在 e g 长尾词可能也比较难做,比如说 woman dress 是 一级分类对不对? dress 是 头部大词,二级分类就是类似 long woman dress, a red woman dress 按照沿三的长度去分,这种情况下就是 二级分类相对会好做一点,但是排名也不容易做。那这个时候可能我们就会通过做大量的文章,通过文章来去写一些,比如说 long woman dress 的 一些引申长尾,比如说 long woman dress under one hundred dollar, 对 吧?类似这样的长尾词可能会往这方面去破一些词出来。早期的时候西端呢,我们会创很多很多的一些 肠胃次的分类出来,但现在五个算法不刚更新吗?在五月份的时候,更新完那一批的时候,他就会针对滥用生成文章批档生成内容这一块的话,可能 会被惩罚。所以我们在更新这一块的内容的时候,一定不能把这个频率放的太高,就稍微要放缓一点。以前可能一下子上来就上个一百多边,一百多个页面,甚至一千个多个页面,那现在更多的可能情况在就是我们先放五到六个页面出来,让他充分收入了,我们 才会去增加新的一个分类页面出来就已经要把就是整体的这个新生成页面这一块放缓一点点。低端的话其实他做页面新生页面数本身就比较慢,因为没有太多东西要写,那更多的话就是外链,然后把单页面优化做好,所以排名很快就能上去。

然后呢,我们现在重点来看一下无虚拟 dom 的 整个流程的实现,其实以前呢,在虚拟 dom 的 这个全流程里面,我们给大家说过两个大的概念,一个叫编程师,一个叫运行师啊,如果这两个概念不清楚呢,我们直接把对应的呃源码给大家先点开,直接看一眼, 好看一眼,看什么呢?看当前的翻译时有这样四个子包,运行时有这样三个子包,那当然这个 test 不 算,就这两个吧,这个不算啊,这个不算,这个是测试包,就看这两个 core dom。 然后呢翻译 core dom, sfc 跟 ssr, 四个翻译时处理两个,运行时处理一个响应式核心模块划分的非常舒服啊,就整个结构,你看好的框架,好的好的源码,他真的就像一本好书一样,你你只看他的这个表层,其实你都看得到他里面有很多门道 啊,就像就这,就跟我们这个呃实战的这个内容一样,我们的项目实战呢,其实大部分的内容也基本上是按照这种形式啊, 很多同学呢,之前没有呃了解到过,就比如说我们整个呃这个项目实战的一些内容啊,就我举几个例子吧,比如比如说我们呃本期给大家上一期啊,给大家新增的数字软身低代码平台, 同样的,那其实你点开之后,假设没有看其他内容,你只看这个,基本这一层的结构,你其实可以会发呃,会发现我们在 package 这一层里面分了哪些类,一个是代码编辑器,一个是数据加工器,还有一个是编排引擎。然后呢是很多 widget, widget 里面呢可能会分为什么 season 的 widget, 这个叫图标的 widget, 还有 three g s 的 相关的一些 widget 啊, package apps 里面呢,也是一样这个模块的划分,划分清楚之后,接下来呢,如果说你要去开发对应的内容的话呢,我们也可以直接点开来看一下,就比如说刚才给大家看到的数字孪生 d 代码平台的这个内容啊,可能有点慢啊,稍微加载一下 好就加载成功了,我把登录下来之后呢给大家看好。刚才呢给大家看到的就是这个分块啊,各个模块的,比如说有 代码编辑器部分的,那它对应的哪里呢?代码编辑器部分的对应的其实就是我们比如说点到任何一个图标,对吧?这块数据里面其实包含的就是代码编辑器,我们通过数据加工代码编辑器,将代码加工好之后,点一下运行测试,这样就可以看到执行结果, 结果 ok, 那 么我们就直接点保存,就可以将这个数据呢保存下来,这是模块的呃,其中一个设计啊,就 called editor, 然后呢还有代码处理器,叫数据处理器 layer 的 硬件呢,是完全自己从零到一去研发的啊,比如说我这个地方要去拖拽,拖拽完成之后呢,我要去做代码辅助线的,呃,这个生成对吧?大家可以看到还有吸附的生成, 吸附吸附的效果也有,这些都是单独分层去设计的,这就好比 vivo 的 整个框架,它也是一样,你的变异我们分为四部分,我的运行时分为两部分啊,响应式系统一部分,再呢如果是服务端渲染还有呢?呃,这个通用的一些模块,把它放到希尔的里面,这是它的一个大的分层, 大的分层好,那么 compiler 不 管它有多少个包,它都是负责翻译相关的,那翻译什么呢?比如说 comp, compiler, don, 它其实就是翻译你的整个这个 template, script 等等,来去把它解析、转换,并且生成最终我们要去渲染的这个代码。 我们来看一下它的生成过程是什么样子的。比如我们点开这个 compiler 库, s, r, c 里面其实就可以看到基础的转换层里面最重要的一个就是 a s t, 这就是一个 a s t 的 转换,它里面有什么 block, 对 吧?创建 block, 创建 element block, 所有的还包括 html, svg, 呃,还有呢,这个什么各种 if, if, branch, for 的 代码啊,就是它的节点对应节点处理。那然后呢?是 dom, 还有呢?包括 s, r, f, f, f, c。 对 于单文件来说,它要去翻译的内容比较多,它需要翻译三个内容,一个是 templar 的 内容,还一个是 style 的 内容,还一个是 script 内容。这三个好眼熟,对应于哪里呢?就是对应于我们这儿 script 用它来去翻译,然后呢? style 用它来去翻译,然后呢?这部分的 template 用它来去翻译。三部分啊,三部分,这是三个 compile compile script, compile style 和 compile template, 这是编的过程。好好,这部分翻译完成之后呢?那其实接下来其实就是运行时,运行时的处理,它分别在 render core 和 render dom 里面去完成。那 render core 里面呢?主要负责了有这个响应式的啊,比如说我们往下翻,在 render 这一层,还有 vno 的 虚拟 dom 这一层,这就是它的运行时的核心, 运行时的核心啊。然后呢,如果说是呃,这个 dom 这一层的话,那它里面其实包含的呢,就相对少一点,就是关于 patch, prompt, 还有呢一些那个运行时的组建,比如说什么过度啊, transition, transition group 这些就是属于 compeller dom 这个标包中间的, 还有你的一些自定义的用户,自定义的一些这个 element 叫叫自定义的标签啊,或者自定义元素也都是在这一部分来去处理, 这是它的分层架构,分层非常清晰啊。然后呢,这个两部分最后数据这一层的串联其实都是来自于 reactivity 啊,这是响应式的,那比如说副作用 effect, 还有呢,响应式两个 api, 一个是 ref, 一个是 reactive 啊,这两个 api 好,这是以前版本,也是大家现在在用的 view 三的版本啊,也是现在大家在用的 view 三的版本,那我们最新的版本呢?直接点到这儿,点到 text, 点到三点六点零,然后呢, alpha 二点到这儿来之后呢,我们再点开 package, 咱们看到了吧,哦,多了一个 weeper, 这里也多了一个 weeper, 区别啊,大家看到原码的区别了吧,之前我们刚刚才讲的只有四个,这里多了一个叫 compiler vapor, 这个地方呢,也是一样,之前只有两个啊,当然我们说这个 test 不 算啊,多了一个 vapor, runtime, vapor 这个多的,那么就是 compiler 和 compiler 和 runtime 这两个最重要。好,我们先点开 compiler vapor controller, 点开之后呢,从这部分它其实可以看得出来,它同样有转换器和代码生成器,转换器的这个里面的细节,它需要去转换一些什么东西呢?各种指令它都需要单独处理,还有呢就是元素,还包括这个评论,就是就我们说的这个注解,它都是需要去处理的。 随便举个例子, v ef, v ef 的 处理是做什么呢?其实就是一个 process ef, 因为我们都知道啊,去处理这个 v 杠 ef, 它其实就是一个三步运算,对吧?就是一个三步运算,要么 true 的 话显示, false 的 话不显示就够了,它是判断它能不能去创建,然后显示 就是 v ef。 那 么这些转换工作做完之后,接下来呢,其实就是代码生成。当然这里还有个 i r, i r 是 一个术语啊, i r 的 话我们在这边应该有跟它呃,我记得当时在 处理的时候,这个地方有给大家详细来讲这个 ir 啊, ir 这一份叫中间表示层,叫 intermediate representation 啊,叫中间表示层,这个中间表示层其实就是我们说的呃,叫 semantic code as t 或者叫最终产物的 as t, 这部分其实就是中间表示, 这个用中间表示的呃目的呢,就是为了后续能够生成目标代码,比如这个 component 点 ts 就是 一个中间表示层啊,最后呢会生成目标代码,生成目标代码之后,那么在运行时我们来看它做什么啊?点到 random vapor 之后,那么这一部分里面呢,就对应的有我们刚才看的那些细节的内容啊,比如说有我们举个例子, render effect, 这个 render effect 里面的处理呢,其实就是围绕你当前的更新工作,这里有个叫 after job 更新工作,它就是用来去订阅啊,就如果说你什么地方内容变化了,就会去调用这个 notify 来去更新,将它加入到你的这个呃更新任务中叫 q job 加入进去, 后续的处理呢,其实也就是通过你的 render effect 来去获取到你当前更新的这个副作用。然后呢,如果你没有生命周期方法这个概念的话,就直接把 fn 绑到你的这个 effect 副作用对应的这个呃处理上面啊,通过 new render effect 来去 得到的这个 render effect 呢,其实又是继承自 react effect, 那 所以其实回过头来它还是对应到 reactivity 里面的那个响应式副作用的处理,它叫 render effect 啊, 去做了一个继承的处理,这是它的完整的流程。那我们一般在做静态分析,还有包括什么动态保定时别以及静态标记提升的这个处理的时候呢?那我们都会去识别这些内容点啊,这些识别的话,刚才在对应的代码里面给大家已经看了,属于是变异式的这个处理,变异式的处理 代码的变异啊,叫 com 呃 com transformers 啊,这部分的处理,这里面随便你点开一个 v text v 杠,某某某,这些其实都是 好,这样处理完之后呢,其实后续再通过中间代码转换成渲染代码。第一部分呢是深层静态模板,这就是我们刚才在源码这部分给大家看到的,我们把输出的源码给大家来演示一下,就刚才在这里我们搜一下妙码, 那在这儿这就是最终输出的静态模板,在这里 n 一 n 三,因为为什么 n 一 n 三呢?因为,呃,我们得到了结果,最后你再返回的时候,它是一个,呃,这个两层结构,对吧?一个是它,一个是它嘛,这是一个数值,它就可以用数值这样来去 return。 好 在呢,生成 dom 节点的查找代码,查找代码的话,其实就是在这一层啊,通过 child 得到这个内容之后呢,我们在里面需要的结果,就直接把状态变换成呃可显示的 内容,比如 to display stream, 就 直接转换了,它就能够显示啊。最后是生成响应式副作用,用什么生成呢?用 render effect 这部分内容里面啊,比如说它的状态会发生变化的话,那这个 render effect 里面内容呢?它其实会单独去走这个订阅逻辑。我们到这个上面来看一下, 你看刚才我们是不是给大家看到了,它会创建一个新的叫 render effect, 这个 render effect 是 什么呢?就是我们之前前面给大家说的 react reactive effect, 还是回到了响应式的副作用层面啊?还是回到了响应式的副作用层面。然后呢,如果你当前的这个呃 render effect 没有生命周期啊,其实就是我们常规说的什么 unmounted 等等这些,那就直接把这个对应的副作用处理函数给它绑定到 effect 点 fn 上面去,让它再调用这个 effect 点 run, 相当于就是启动了这个副作用的监听 啊,启动了副总的监听,响应式那部分是通用的啊,所以呢,大家从这个结构来看,响应式那部分,不管你现在是用的 v 二 v 三,还是说呃,三点六等等以后的版本,响应式肯定是你必学的啊。响应式的原理都没有理解清楚的话,那翻译时隔跟运行时的处理可能你 更没法理解啊。所以这个包是同学们在面试的时候问最多的,也是现在在网络上面大家能够查询得到的关于 view 三的面试题,最多的一块就是关于响应式的设计,但是关于翻译时,关于运行时,关于这个 vapor mode 的, 目前应该还是没有太多资料啊。就关于 vapor mode 的 这部分,现在应该是这个,呃,没有太多人去关注到这个新的特性,可能不多啊,不是特别多, 因为大家都知道有信息壁垒啊。就可能我跟大家今天讲完之后,朋友们大家下去去看一看,那这部分你就先与别人去了解啊。好,那是这个是整个的原理和开发的过程啊,这是第二个问题三呢。

你写了必然会考到这个,就是它写了 bff 的 落地,也不知道它是从哪粘贴复制的。统一多端的服务,通过 bff 成了优化,接口,数量减少,数据做了拆解,性能做了提升。首先你要搞明白 到底什么是 bff, 不要瞎写,你要给面试官解释清楚为什么要有 bff? 就 在没有 bff 之前,我们前端 直接调用后端接口八加克斯,八加克斯给我返回后端的数据,有了 b f f, 前端直接通过 b f f 调用 b f l 的 接口,然后 b f f 再去调后端接口就绕了。为什么会这么绕呢?那你要给那什么解释清楚,就为什么需要 b f。 第一,他一个接口不适合我们的前端,我们有移动端,有 pc 端,他们要的数据结构是不一样的,但是后端返回的是一样的。还有一类就是我们的,我们真实业务里面后端返回的是这样的数据,我们可能就要这两个字,或者返回特别多。我们像做这样的 get 包,首页每一个小模块 可能会调用一个接口,你像我这个首页,我至少得调用七八个接口,我为了统一,我做了聚合,我只调用一个接口就可以了。 q f 就是 解决这样的问题的。第一叫接口聚合,前端调一个接口, b f 调的多,然后数据的裁剪还有隔离,多端隔离还有权限,还有性能优化,没什么解释清楚 普通的后端有什么区别?包括在真正的业务里面做 b f f 城的前端,做 b f f 城的基本上就是用 no 的 这一套给 press no 的 g s 配合的后端以 java 为主,还有 go 典型的场景,你要给面什么解释清楚?你们的业务 有没有必要上 b f f? 这是非常重要的一点,有没有那么复杂的业务,什么时候需要,什么时候不需要,你都要给面试官解释清楚的。并不是说我会 b f f 我 就变得很厉害。其实真正的实际的业务场景当中啊,百分之九十以上的业务 不会塞到 bff 这一层的。评论区的朋友有没有在大厂工作过的?你们大厂里面有这种很复杂的业务需要上 bff 吗?因为你上了 bff, 它是一个维护的运维的,比如说在这个地方,你后端挂了, 我这个挂了,整个网站也会挂,它,多了一层运维的成本啊。目前来说的话,我接触的业务,嗯,很少用路由器做 bff 的 啊,大家可以扣在评论区啊,你快探讨探讨。

回答大家几个疑问,一个疑问呢就是 ai 的 学习到底学什么,对吧? 大家听到这的其他同学是不是也有这个疑问,有的同学在评论区扣个一,就是 ai 到底学什么?今天我跟大家去今天几句话概括一下未来的一个前端同学,借助 ai 去给自己做,不管是求职掌心还是呃在后续的职业生涯发展里面能够进阶的一个方向。 大家是不是都有这种疑惑, ai 到底学什么?给大家指两个方向,两个啊,第一个是偏偏向于管理的同学, ai 呢,能够去做团队提效,针对于现在大部分的一些业务开发的场景, ai 呢,它主要是做一些垂直领域的,或者说业务行业的业务的应用开发。 那如果是 ai 团队提效的话,你就要选择一些编码模型,选择一些文档模型,选择一些其他的工具模型,就是你现在要具备的啊。那这部分其实在我们的那个课程里面有跟大家去说过,就是关于 ai 团队提效这一块有哪些具体的点, 在这个里面有常见的一些 ai 工具, ai 问答题式词包括呢?辅助编程和借助 ai 赋能就是其中一点。 ai 团队提效,基本上在面试的时候呢,面试官会问你,你有用什么样的 ai 工具啊?做没做过 这个 ai 团队提效相关的事情,那就是 ai 团队提效部分的,然后再就是 ai 业务的应用开发, ai 业务方向的一些应用开发,这个业务开发呢,它其实基本上都是它的表现形式啊,表现形式的话一般两种, 要么是桌面端,要么是 web 端啊,当然 web 端这个我把它再抽象一下啊,要么是 web 端,要么是什么呢?小程序,但是它都是属于同一套,就是 web 加 server, 对吧?如果是桌面端,那同学们直接 election 上就完了啊。 election, 那 如果是 web 加 server 的 话,哎,这个就是我们今天给大家讲的这个重点嘛,你要么是前端的同学,最低成本去学习全站开发,就是 max 的 gs 或者是 max 的 gs, 这是最低成本,在这个最低成本的基础上去掌握 o r m 框架 prisma, 去掌握数据库 post 啊,去掌握 book 就 完了,掌握这几个就完了啊,这部分 好,那所以呢,给大家去定义了啊,就表现从表现形式不一样,分为桌面端和小程序端,或者说 web 端,对吧?这是表现形式的对应的技术选型好。除了表现形式以外,接下来就是业务形式,业务形式也有区别,第一种业务形式,比如说常见的一些现有产品的 ai 赋能, 这是现有产品 a 赋能。比如你现在有一个,比如说我假设我开发这个非数文档,我要在非数文档里面去植入一个自动补全的功能,对吧?就是能够去帮你做这个文档的一个续写。那你看这是不是 ai 赋能,就是现有产品的 ai 赋能,这个赋能呢?如果你不了解 ai 相关的开发,那可能是服务端的同学做, 如果你了解的话,你可以多去了解关于 ai 这一块的服务端实现,包括 ai 底层的一些实现,怎么来做?这是现有产品的,还有一些新产品的尝试,这个其实最多,特别是在中场、大场,现在有很多 ai 的 产品正在尝试之中,那这种尝试它只有一个目的和一个要求,就是要短、平、快。 现在大部分呢,很多同学可能觉得啊,很多 ai 这些东西都是服务,就是这个干服务端开发的人在写,其实不是,现在大家可以看一下,现在很多公司在招 ai 前端的这个方向, a 型的开发方向,大部分都是我给大家去讲的这一套来去开发的。 你想前端天然的,其实对于界面层的那个敏感度呢?比服务端开发的人要高,对吧?所以说前端来去做这部分全站的一个转型,其实是最好 啊,就是最好。所以说大家以后不要把自己限定在基础的这种界面开发,或者说前端的一些基础的框架和业务开发上面,一定要多走一步,多去看一看。或者你现在公司里面有 ai 的 项目,你就想它 ai 内存到底是怎么做的啊?因为除了有那种 工具型的,那还有呢?像这个 agent 的 开发呢,其实很泛呢, agent 的 开发这一块的话,一般在业务形式里面呢,其实没有,我们这里呢,再给大家去做一个叫做实现的区别,或者叫实现层,实现层呢,我给它再分为两块,这也是很多同学前面提过的,一个是工作流行的一个工作流行的这个智能体, 还有一个呢,是 react 模式的智能体啊,其实还有很多这种模式形式呢,它只是一个抽象。像这些智能体在实现的时候呢,我们前面说了,像工作流行的,它是适用于非常标准化 sop 的 一些工作的 ai 赋能, 就比如说你们公司现在有哪些场景,它的标准化其实做的已经很完善了,那你只需要在完善的这个基础上,每一个工作环节上面用 ai 来去帮你做一些事情,这就是工作流行智能体的一个最大的优点, 它的长处就在这,优势就在这啊。像 react 智能体这种形态的话呢,那其实代表的话就是我们刚才说的 non graph js 这些啊,通过那个 react 大家知道是什么吗?就是那个,我给大家搜一下先啊,我怕很多同学有同学不知道到底 react react 是 什么, 大家一搜肯定就搜到这个 react 了啊,我们往它翻,翻到 react ai 这样来搜 react, 它其实是一种实现形式啊, react 一 种模式,搜一下 看有没有具体的解释啊。 react the agent 这里面有说明吧, 那这里有详细的说明啊,就这就看这一段吧。 reasoning and acting 啊。 reasoning and acting 翻译过来什么意思?就是推理与行动啊,推理与行动就是它一定要先推理再行动啊。那就跟我刚才给大家去演示这个呃,这个处理一样,你看 我们来看一下啊,他现在是干嘛?比如说先第一步做什么?推理出来之后要做什么再做什么啊?完成之后再调用什么样的工具,再做什么?什么一步一步的,现在正在测试,接下来呢,就完成了。这每一步他其实都很完善啊,这就是我们做的 react 种模式下的智能体的开发啊,实现层也有区别。所以最后总结下来就两个方向, ai 团队提效, ai 的 应用的一些开发啊。 ai 应用这一块开发呢,很多同学可能现在只知道在前端界面层去开发一些界面,但是呢,就算你现在公司里面没有用到, 或者说没有让你去参与 ai 的 这个底层引擎层那一块的开发,那你都要自己尝试着去写 以后的话啊,这个方向,就跟以往很多同学呢在纠结到底要不要学全站,对吧?你认为做前端就够了,全站这个也可以可有可无,那是以前,现在的话,你看越往后 ai 团队提效这一块,如果解决了,那像我刚才编写的这些代码,我们全部可以通过 ai 来去帮我们完成了,你看他他想了多少步,一步一步帮我们写,写了这么多代码出来了 啊,写完之后,那么接下来呢,其实在 ai 业务应用层这块开发,我们只需要去把方案定好, ai 同样能帮我们去快速的去实现。所以以后啊,我我给大家来说一下,就是以后,在我看来以后的以后 不存在什么呢?第一个存在的形式就是架构,就是架构师,这个架构师是做些什么事情呢? 架构师的工作啊,第一个是充分理解老板的需求,当然你可以理解成是基本上达到产品这个层面啊,它作为是一个产品,能够去了解老板的需求,然后呢,将老板的需求转为对应的实现方案 啊,然后呢,拆分任务,然后复盘, 基本上就这样。嗯,复盘拆解任务之后,开发叫 ai 辅助开发, 或者叫 vape coding 吧,我直接叫直接叫 vape coding 啊,它已经不是什么 ai 辅助开发了,叫 vape coding, 然后再复盘总结就完了。这是这是我说的啊,架构式这个方向,那你想架构式需要具备一些什么技能呢?就是对于业务的理解力,加上全站开发能力, 再加上这个 ai 应用开发,这能业务理解,全栈开发, ai 应用开发,这是最基本的啊,架构式的这个层面,那如果说同学们可以去看啊,现在大部分招聘,如果说招聘到这个级别的话,那其实薪资 base 已经很高了,但是呢,再往下 可以拆解出来一个叫全站开发,这个时候呢,它其实已经不是以往大家理解的那种全站开发了啊,它是什么呢?它可以从你可以不具备需求理解,不具备方案设计,但是你可以理解从 web coding 到最终这三步你能做。 很多同学会想,很多同学会想,哎,全站开发,那 web coding 这些那不是基基本的吗?是的,但是在此之前,它需要具备充分多的关于全站的一些知识点和 业务理解力。和业务啊,你看,比如说什么呢?比如说那个前端框架方案选什么, 对吧?然后呢?服务端框架选什么啊?服务端的方案怎么选择?在数据持久化层怎么设计,然后呢?再什么等等,这些你要先设计好,全部设计好以后再基于 web coding 来开发 啊,这就是未来的,不管是前段同学还是后段同学,你最终的一个形态啊,我们以前是按照工种来分,分前端分后端分开发的这个形式,以后不会不会这样去分的这么细了,那可能有的就是一个产品方向,就是你一个人, 相当于说美团现在只招全站了,对吧?你很多功能,你就你一个人干,你只要知道这个后端代码大概怎么写,你用 ai 去写, 最主要的还是你能够把这个功能全部跑通,把全站的这套流程跑通最重要啊。所以为什么我们在二六年新的课程里面啊,给它整个全新又升级了,变成了 ai 大 前端全站架构师 这个方向新加上来的啊,里面呢,到时候会给大家去新增很多关于 webcoding, 还有呢通过 ai 来去帮你做团队提效的一些工作,包括呢后续我们的这个项目实战里面有一个项目啊,到时候可能这个视频剪辑工具这个吧,到时候我会完全基于 webcoding 来带大家完成前端服务端、 ai 应用层和音视频这一块的整个开发工作 啊,这一部分呢详细告诉大家,给大家去去写啊,就基于比如说 webcoding 这套架构形式来去完成,这个是非常有竞争力的。这套学完之后,你不仅能够理解音视频开发 ai 的, 基于当前的 ai 开发,基于 election 的 桌面端开发啊,这个是一个 view 的 项目啊,这个是到时候我给规划的话是基于 view 三,也还能够了解最新的,包括往后 web coding 如何去做。这件事情很重要,现在同学们其实要反思的是, 你并不是要学太多的技术,或者说学很多钱的那些技能知识点了,你要想一想,现在有了 ai 以后,有的人是在十倍的速度成长,而比如说你自己现在目前是一个什么样的这个学习的状态啊?还是 有没有去借助 ai 去做一些自己的体校和自己学习方面的体校,这个其实最重要啊,就可能在以后呢, ai 会放大一个人的优点和放大一个人的能力,也是我们后面说的,如果你现在有充分的业务理解力, ai 开发和全站开发能力,那绝对基于 ai, 你 能够 展现出来一个别人想象不到的这种开发的这个效率啊。那如果说你现在是全站开发,你能够去基于现有的这些需求和方案快速的去完成开发,这也是价值啊。价值点主要体现在这 后端场景,那些缓存、高病发、微服务这些需要啊,这些只在一些比较大型的项目中间需要,但是我可以打保证告诉大家,现在大部分的这种常规产品其实都没有太达到这种高病发和这种高可用的这种场景。所以呢,其实大家很多同学一上来就说高病发、高可用等等,其实没有必要 啊,因为高病发、高可用这些呢,它也是一步一步走出来的,就你可能先有一个用户,再有十个用户,一百个用户,一万个用户,十万个用户,一步一步的,我我见过很多这个朋友啊,他们创业也是这样干技术的,创业最致命的一点就是我要一开始开发一个最完美的 app, 往往做来做去啊,有什么高可用、高病发这些考虑来考虑去,最后开发了几个月还没有上线,就直接死在摇篮里面。 这个其实很多做技术开发同学创业的一个大的问题啊。好,这个呢,我们就先给他分享这么多 ai 到底学什么,以及以后的前端后端他真正的一个表现形式,或者说岗位的一个形态是什么样子的?只会偏向这两类。

做软件开发是搞前端有前途,还是做后端开发有前途?我认为是搞后端开发比较有前途,因为我看到的一些开发经历啊,技术经历基本上都是任用的,是后端的开发去做的。 嗯,像你可能也见过一些,什么移动应用端经理啊,什么前端经理,其实那些都是很大的公司,可能前后端分的很清楚,团队很大才分这么细,如果团队稍微小一点的话,基本上就是后端统领了。 嗯,因为相对来说后端的逻辑比较复杂一些吧,你看前端基本上都负责显示交互就可以了, 而后端就是很复杂的业务逻辑都放在后端,而且后端还包含一些服务器的架构,网络架构包括运维啊,这些就是他考虑的很多,什么稳定性、网络的延迟性啊,什么负荷均衡一类的。嗯,所以就是后端相对比较复杂一些吧, 还有就是前端的一些技术架构啊,往迭代更新的比较快一些。嗯,云端其实也也有更新吧,但是相对于前端来说稍微好一点吧。 嗯,就是这样,反正后端往简单来说是增删改查吗?其实其实有时候挺复杂的,业务上很多很很变态的一些逻辑就绕来绕去,反正都不容易,两段开发都不容易。 那行吧,希望这些建议能给这个新入行的这种做软件开发的有一些启发吧,能帮到你们。好,拜拜啊。

大家好,欢迎来到今天的 css 技术分享,今天咱们聊 bfc 是 什么?怎么创建 bfc? bfc 就是 快格式化,上下文是 css 布局里超重要却容易被忽视的知识点,掌握它能轻松解决很多布局难题,写出更健壮的代码。各位前头同学应该遇见过,复容器包不住浮动元素, 浮容器被浮动元素覆盖,垂直外边去重叠,这些问题的根源全在 bfc 上。 今天我会从 bfc 的 定义作用、创建方法解决布局问题,还有和 ifc 的 区别给大家讲透彻。先搞懂 bfc 的 定义和作用, bfc 它就是块格式化,上下文 是 css 视觉渲染的一部分,是块级盒子布局、浮动元素交互的区域。通用来说呢,它就是个独立容器,里面的元素不会影响外面,外面的也影响不到里面,像个结节一样脱离内外布局。 它有四个核心特性,内部块级元素垂直挨个拍,元素左外边距贴容器的左边缘能包含内部浮动元素, 计算高度时会计算上浮动元素,内部元素外边距不会和外部重叠。接着说怎么创建 bfc? css 有 好几种方法,各有特点和使用场景。 常用的有三种,一是设 float 简单,但会脱离文档流,影响后续的布局,还得轻浮动。第二是 over float 最常用,不影响布局,不过可能裁剪移出的元素。 第三是设 display 为 lin block 元素变成行内块,可能有额外间距,宽度得手动设。其他方法还有 position, 脱离文档流要手动定位, 影响大,像是 display, table code 表现像网表格,单元格宽度表现为特殊。建议大家呢,优先选用影响最小的,比如 overflow head, 考虑浏览器兼容性,保持代码语意正确,选最简单有效的方案。再来看 bfc, 它能解决哪些常见的布局难题?第一,副容器高度坍塌,容器内元素浮动后,容器包不住,高度坍塌。解决方法就是给元素设 overflow and 创建 b l c, 就 能正确计算高度,包住所有的浮动元素。第二, 元素被浮动元素覆盖,元素旁边有浮动元素,容易被覆盖。我们可以给被覆盖的元素是 overflowhead, 创建 bfc 能够和浮动元素并排,不被覆盖。第三, 垂直外边距重叠,两个相邻元素设了两个相邻元素设了垂直外边距会重叠,取较大值, 把其中一个元素用容器包起来,给容器设 overflow and 创建 bfc, 外边距就不会重叠了。第四,多列布局。多列布局中呢一列内容长,其他列高度不自动适应,那我们就可以使用 display table, 所有列就会自动适应最高列的高度。这些问题开发中经常碰到,掌握 bfc 就 能轻松搞定。然后来对比 bfc 和 ifc 的 区别。 ifc 呢,是行内格式化,上下文是行内级和字的布局区域,行内元素在里面水平排列。两者的核心区别有五点,去方向, bfc 内部垂直牌, ifc 内部水平牌。 元素类型,一个处理会计元素,一个处理行内块元素高度计算,一个看内容和浮动元素,一个看行高,外边去处理,一个看外边距,一个看内外边距不重叠,另一个没有。这个问题 主要作用, bfc 用于布局隔离,包含浮动,解决布局问题。 fc 用于文本布局, 垂直对齐处理,排版分清两者区别,开发时才能选对布局方式解决不同问题。最后总结今天的内容,第一, b、 f、 c 的 定义特性, 独立渲染区域内外布局,隔离内部块级元素,垂直排列能包含浮动元素,解决高度坍塌。第二,创建方法,我们可以使用 overflow block, display block 等, 最推荐使用 overflawhead, 影响最小。第三,解决的问题,高度坍塌元素被覆盖垂直外边距重叠等列多高。第四,和 fc 的 区别, bfc 管快捷垂直牌用于解决布局问题, fc 管行内 水平牌处理文本排版。最后给个最佳时间,建议优先使用 overflawhead 创建 bfc, 避免用影响布局的方式理解核心特性,别乱用。结合现代布局方案, 保证代码语言化和可控性。掌握这些 bfc 知识,大家以后写 css 解决布局问题会更轻松,代码也更健壮。今天的分享就到这,谢谢大家关注加私信领前端资料哦!

请解释一下 bfc 的 概念及其应用?近期需要全台面试同学建议来领取一份全台面试宝典,八卦文,性能优化、工程化、弹力等等都有非常详细的讲解与代码私密。 bfc 会计格式化上下文就是一个 格力的独立容器,容器里面的子元素不会影响到外面的元素,反之亦然。内部的 box 会在垂直方向一个间隔的放置,处于同一个 b f、 c 的 两个相邻 box 的 猫茧会发生重叠。计算 b、 f、 c 的 高度时,浮动元素也参与计算, b、 f、 c 的 区域不会与 float box 重叠。触发它的方式主要有 play、 flow、 route、 overflow head、 绝对定位或者浮动等。在实际开发中主要用来解决三个问题,第一,清除浮动,让副元素高度包含浮动元素。第二,解 决外边距重叠问题。第三,实现左侧固定,右侧自适应的两难布局。这里我们演示 bfc 的 三个最经典应用,解决勾勒他线,利用 bfc 避免毛茧重叠,自适应两难布局。来看代码。第一个例子,看这个红色的副容器里面的成色快浮动了。 找常规流程,浮动元素脱离文档流,复元素管不住它,高度就塌了,变成一条线。我们在复元素上加 display, float 或者 overflow head, 这就相当于给复元素开启的 bfc 模式。 bfc 计算高度时,必须把浮动 儿子也转进去,高度瞬间就撑开了。再看第二个面试参考题,怎么让垂直猫键不合并。你看这两个栏块本来应该 相距四十 ps, 结果只有二十 ps, 这就是猫键。加 boost, 给其中一个块套个负极,给这个负极加 overflow head 触发 bfc。 原理很简单, bfc 是 个隔离容器,现在 box 二被关在笼子里了,它的猫键跑不出这个笼子,自然就没法跟外面的 box 一 发生重叠。最后这个是两难布局的老手艺,左边定宽浮动,右边怎么自动填满?剩下的给右边这个粉色盒子加个 overflow head 触发 b f c。 因为 b f c 有 个特性叫不和浮动元素重叠,他发现左边有个浮动的,他就只能缩回来占剩下的空间,这比用瞄见 left 算距离要灵活得多。


那如果是服务端型的呢,那就会更复杂了,那它不光是可能用前端,那可能需要,比如说有一些呃跟 ai 相关的,你得去通过 python 来去做处理啊,就比如说我们其实给它呃之前呢,就是在有些施令里面呢,我写了很多呃那部分的处理,就比如说一些自动自动化的处理吧, 通过自动化的处理呢?自动化批处理呢?可以去做这些事情啊,就比如说你在啊本地自己再去结合一些呃那个 自动化的工具啊,自动化工具,比如像我们,我们知道,比如你用 python 去写一些脚本来去实现,那是属于服务端型或者说 ai 自动化型的产品,它的这个具体使用啊,好。然后呢,还有第三点,其实就是 生成式 ai 的 工作流程引擎的实现,那这部分呢,其实它里面的内容是类似的,大家可以发现啊,比如说它有文本生成节点,有数据分析节点,有图像的生成节点,那这些 case 给到之后,它就可以去调用对应的服务来实现 对应调用对应的服务。这种整个流程机制呢,都属于在前端执行啊,那如果说整个流程都是在后端执行的话,那这些代码呢?其实都不会在前端调用啊,都可以通过后端去调用。你前端调的话只会调一个 run, 那 run 了之后中间调到哪一个环节,调到哪一个节点,它是由后端来去通知前端的, 前端跟数据完全是没有交互的啊那种形式。那比如说像这种,那我们现在再去执行的时候,你就会发现啊,比如说我把它呃拖个位置吧, 拖个位置啊,或者说我先暂时把这个大模型的这个节点删掉啊。好,可以先把这个去掉,我在这个里面呢去加一个插件。加个什么插件呢?比如说图片理解,我输入一个图片 url, 然后呢它来告诉我内容啊,我,啊,请, 请,根据我给出的这个图片链接啊,链接,呃,梳理重要内容,并输出 markdown 格式数据。哎,那我现在来讲一下,我去考一个啊,我看去哪里考一个内容呢啊?我,我就考这个了。好,当然它需要在线化的,在线化的内容呢,我们可以随便去考一个其他的吧,比如说 我们找一个图片啊,就假设这个,这个应该是一个, 我去搜一个图片链接过来之后给它粘过来。啊, 好,大家稍等一下。嗯,找一个比较 好。复制一下图片地址啊,这个时候我其实就复制了一个图片地址过来了啊,这个图片地址过来之后呢,接下来我就可以去执行,它执行出来之后把结果给到结束节点,然后呢我们来看一下它的最后的输出。好,我们点一下试运行,然后呢这个音符的什么的我们其实都不用输入啊,不用管,我们直接点试运行一下, 等他把结果输出出来之后,我再来告诉大家,他的这个最后生成的内容是什么啊?就是我给他的图片是什么,大家可以看到吧?现在他根本不知道啊。当然这个做法其实比较挫的啊,就通过 ajax 轮询的方式,你看 get a process, get a process, get a process 相当于前端,他不知道你后端执行的这个效果是什么样子的,所以他需要不断地去给后端去拉状态,来确定我当前前端执行的状态是什么样子的。 最后执行完之后呢?我才拿到最后的结果啊。那我们来看一下最后的结果是什么?展开内容来看一下点整个调用呢,肯定是成功了,那么他的输出结果是什么呢?我们来看一下他的结果还是很厉害的吧。他说这个面试官问的问题,第一个,你会选择做前端吗?第二个,你的前端岗位是做什么的?第三个,你觉得前端岗位需要具备哪些技能?第四个等等, 我给大家看一下图片是什么?我刚才输给他的是这个啊,我刚才输给他的图片是这个,然后他帮我处理完成之后生成的 markdown, 是 这个, 很厉害了啊,这个就比较厉害了。那么接下来其实你能够做的内容也非常多,通过这个视频呢,我就给他介绍了通,呃,这个 ai 引擎的。 呃,比如说服务端型的话,那都是在服务端执行。刚才给大家演示到了他前端拿不到状态,拿不到内容,他只能够通过 get process, get process, get process 来去拿到后端的这个执行的进度啊,拿进度,拿进度,这个时候他都会给它返回进度,你看从这边可以返回进度, 你整个执行的耗时,呃,耗时了十三秒啊,对吧?这个 work for id 就是 你整个工作流执行的一个实力化的 id, 还有 token and const, 就是 我执行这个内容到底花了多少个 token 啊?他都能够看到。还有就是这个 node result 啊,同学们,我们骗大家吧,所有的这个执行的节点,它的内容类型完全都是一样的,节点和编 是一样的啊,节点是这个 no the result, 每个节点都有自己的 result, 比如说第一个节点执行完成之后,它会输出一个 output, 第二个节点输出完成之后,它也会输出一个 output, 第三个节点执行之后,它也会输出一个 output, 那 所以每个节点有输入,有输出,它的整体的数据协议就是这个样子的,这个是属于运行时的数据协议啊,我们刚才说的这种呢,是属于数据存储层的数据协议, 这个只属于执行层的数据协议,这个我们要把它拆分开单独来去讨论啊。好,这部分呢,我们就先给大家说到这了,总之呢,它的整体的实现如果到这里啊,大家理解之后,那么其实你接下来去面试说工作流跟工作流引擎跟自动化引擎这方面的知识点的时候呢,我相信对于大家, 呃,这个难点难度应该不大了啊,如果说大家现在没有太跟上的同学呢,可以回头到时候再来看一看。

有网友让我聊一下客户端,首先客户端就是前端,只是不同行业叫法不一样,前端开发的要求这个视频已经讲了,你可以去看一下,下面说一下客户端开发的薪资和前景适合哪些人? 客户端的薪资在一线城市薪资存几千到两万左右,发展前景很多网友问我是不是前端已死?首先这个纯属谣言,说这个的是没有做过前端开发的,或者是有其他企图制造焦虑。 ai 时代,前端没有死, 是要求变高了,从界面实现转向智能体验的构建,这适合哪些人?如果你代码能力不强,可以做客户端开发。总结一下,客户端开发没有死,无论你做哪个端的开发,这里面都有水人,也都有大神。 客户端服务端没有高低贵贱之分,无论你是 it 行业的哪个岗位,只要你认真干上十年,你就能做到专家,那个时候薪资都不会低的。

他在那个 build 的 时候呢,我们来过来看一下,接下来还有深层内容啊, flat 呢,其实已经跟他大概讲完了,但是底层的内容还没给他介绍这个底层这一块呢,我知道啊,因为时间关系呢,可能给大家来不及讲。呃,很多同学呢,可能之前都没有了解过 flat 底层的原理,我给大家做了几张图,大家可以下去之后自己去了解一下。 呃,特别要注意的是 sky, sky, 这个呢,我之前很早很早之前都讲过啊,不管是 sky 还是 skyline, 这些其实都是非常精尖的内容。在这一层就是渲染引擎的啊,渲染引擎这部分的内容, sky 呢,是非常有 竞争力的,并且呢也非常深度的一个技术啊,叫 sky。 呃,如果你不会用 c 加加去写这个这个酷相关的 a p i 去做相关的出发,没关系,有一个东西叫那个 canvas canvas, 这个呢,同学们,每位同学都会 canvas kate, 这个 canvas kate 呢,它底层是 sky 加 web assembly 的 结合啊,它在上层做了封装,你用这个库画出来东西,哪怕你的这个实现的算法呀,什么?呃,很烂,那是没关系,它能够带给你非常多的 性能方面的提升啊。 sky 这个呢,同学们可以下去了解一下啊。对于它的一些这个架构设计啊这一类的问题呢,我给大家已经列到这了,包括 flutter 的 整个生命周期状态啊,还有最后一个图是这个,当然这个是官方的啊,这个是我从官方拿过来的, 底层框架是 amder 这个 platform special special specific, 这一层呢,有。呃,这个渲染层的接口抽象,包括接口启动,还有底层插件的,插件的支持, app 打包,多县城的出场和 invenode, 呃,就是我们说的事件循环啊,然后在引擎层是用 c 加加去实现的,这层呢,有文本的呃,渲染就是 text layout, 还有一些帧的流水线处理, frame, schedule, 关于调度方面的。 再再到上层呢,就是我们边写的什么 widget, rendering, animation, painting, gestures, foundation 啊,就是这在我们这一层,就是我们这里看到的这些代码啊,它们比如说叫 widget 啊,叫 state 这些呢,其实都属于在这一层的内容啊,属于这一层的内容。 好,这是关于呃框架原理方面的,当然这里呢,还有个更进阶的一一点的这个原理啊,就从 u i straight dart 开始启动到构建位阶的数。同学们如果学过 前端的呃浏览器的渲染原理的话,对于这一块看起来可能不会陌生。它的整个流程处理呢,很相似,首先是 go g widget, 然后呢, go widget 会转换为 render object, 然后再处理布局和渲染, 然后再通过 sky 渲染引擎去做这个渲染处理好这一层呢,当然底层啊,肯定绕不开 open g o 或者是 vulcan 来去汇聚到屏幕中间,包括用户输入事件,其他的处理,在这一块呢,又会接收到事件触发状态,以此来重新。我们叫 rerender 整个处理啊,它的整个阶段,从 ui 线层到引擎层到 gpu 三层,就是 gpu 线层层层,这个是我们抽象出来这个 sky 这一层啊,再到平台 底层,平台啊, platform three, 所以 你看,不管是浏览器的渲染原理还是 flutter 底层的原理?它都绕不开多线层或者是多进程,那进程之间通信,进程之间通信,它们各自负责什么职责?为什么做这样的分层?为什么做这样的设计?这就是架构师需要去理解的内容啊。 好,那然后呢,针对于 tarot 这部分的内容啊,因为我刚才其实看很多同学呢,可能对于 tarot 这部分基基本上之前没有太多的了解啊,那 tarot 这部分其实也给大家做了一个图片啊,编一时跟运行时做一个分离, 编一时他做什么?原代码的抽象转换,依赖分析构建依赖图和代码转换,转换之后到运行时,他需要去做生命周期的映射啊,这些在什么样的代码里面会出现呢? 我,因为这个早期啊,所有的关于 terra 方面的啊,圆满呢,其实我都有有参与过一部分啊,包括呢,对于你们的内容呢,比较了解。呃, 早期呢,在二零二一二一年吧,二一年出出版过一本这个 terra 多端开发的书啊,当然是二点 x 版本的,当时三点 x 版本还没有出来,那会呢,其实多端开发还是呃 比较迫切的一个框框架需求啊。这里呢,我是站在作者的角度给大家去呃,详细详明了为什么在编辑层和在生成层这两者之间需要做这样的转移, 不管是代码生成还是前期做组件转换,你看从 react 组件转成小程序,从 taro api 转成微信 api, 为什么要这样去转?这个转的过程他又是怎么样通过编原理去实现的?那这个就是编原理 ast, ast 这部分如果说没有看的同学去看一看背薄编原理这部分的内容啊,这是公开课的内容,大家可以去看一下。

好,我们就从这样几个问题呢来给大家展开,我们先来看到第一个问题,就是多多端开发有没有了解过啊?呃,主要呢,我们会从 tarot, terry 跟 flutter 来展开,在讲这个概念之前呢,我们先把这个内容复制过来之后给大家先提示一点啊,他们各自的用途。 tarot 有 没有同学知道他是拿来开发什么的? 虽然说都是多端开发啊,他是用什么代码来写,然后翻译成什么样的代码,它的主要价值体现在什么地方?这个有同学知道吗? carol 呢?对于大部分同学来说啊,你可以用 react view 代码编写,然后呢编译为小程序 h 五,还有原生应用啊,原生应用主要是这样几块,当我们聊原生应用的时候,说的就是 android, 还有呢 ios 啊,哎,说的是这样个,当然了,这个里面呢还涉及到一个东西,就是 home 啊, harmony, 鸿蒙,鸿蒙 os 好, 本来想用 homeworks, 但是一想国产的对吧?国产的,呃,操作系统我们还是得用中文 好。 terro 呢,是 react view 代码编辑,然后编为小程序 h 五,原生应用,如果同学们现在有这个,呃,小程序 h 五,原生应用想你一个人开发,比如说你现在老板压榨你,让你一个人去开发小程序 h 五,那你就可以考虑到 terro 这个方案好,然后呢,是这个 terry, terry 呢,我们现在聊是聊的 terry 二点零版本啊,它是基于 rust 的, 基于 rust, 然后呢,可以让你在前端啊使用。呃,当然,这个就随意啦,不管你是用 react 还是用 view 编辑界面, 然后呢,通过这个 bridge, 通过 bridge 连接底层啊,链接底层来实现。呃,桌面端应用开发 啊,具体的详细的细节呢,我们等一下再给大家去展开啊,就是这个框架,然后呢再是 flutter, flutter 我 们聊的是 flutter 三点 x 版本啊,三点 x 版本,然后呢,我们用的是 dart, 所以 说大家其实可以看得出来。呃, terry 跟 flutter 这两个呢,其实它的学习曲线是有的,为什么 rust 大 部分同学现在基本上没有了解过啊,如果有兴趣的同学呢,可以去看一看。我们之前在给大家讲那个构建 原理的时候,给大家有简单去介绍一点点关于 rust 的 啊,怎么样用 rust 去开发那个?呃,比如说工具链啊,像同学们都知道的字节的 r s pack, r s pack, 不知道有没有同学用过啊? r s pack 相关的所有的工具链啊,就这些呢?呃, web web in from 下面的这个 r s pack, r s build, r s press, r s live, r s doctor 啊,这些内容啊,这个都是基于 rust 的 工具链来去做的,包括呢,前面给大家讲过 o 叉 c 跟那个 ro dong 啊, 鱿鱼须呢,都已经这个开公司去了啊,这个呢就是他们通过 rust 来构建的一系列 connection of javascript tools 啊,就是基于 rust 的 好,所以如果有同学有兴趣的话,你觉得这个自己呢很能卷,那 rust 呢,肯定是推荐大家去学一学的 dart, dart 这个语言啊,我还是 这个持保留意见啊,如果说你有这方面的需求的话,可以去看一看,我待会给大家看一看这个德尔特的语法。呃,就是你没有写的时候呢,觉得,哇,这个语法太恶心了,但是你写一段时间之后你会发现,哎,这种申明式 u i 的 感觉好像还可以哦,对吧?就比如说有同学写过鸿蒙的这个代码,那其实鸿蒙的跟 flutter 的 很像, 包括那个呃, swift u i 啊,就是开发 ios 的 swift u i, 它们的语法其实都比较相近,这种范式呢,称之为申明式 u i。 声明式 u i 啊,写起来其实还是可以的。像国外有一款产品叫 flutter flow, 那 个 flutter flow 呢?呃,它 是一个低代码平台,非常强大,它能够让你通过编排引擎去编辑对应的这个界面,之后直接生成一个 ios 跟安卓的应用,非常厉害啊,所以你看国外有很多基于这个产品去做独立开发的,去做副业的非常多啊,知道的 有课间啊,同学们不要着急,这个课间呢,待会下去之后找咨询老师去领取。我等一下都会分享给大家啊,所有的所有的都会分享给大家。 vs code 的 插件推荐一下这个我们之前有一个呃,文档里面啊,好像给大家已经分享过,大家可以去找一找啊。这里呢,比较多,因为我这个插件比较多,非常多这些插件,到时候呢,大家可以去看一下啊。 呃, flutter 不 支持教程学啊?我,我接着讲啊,这个地方呢,是支持 ios, android 还有呢? desktop 啊, desktop 就是 桌面端,桌面端还有 web, 但是啊,这个 web 呢,我跟大家说一下,这个 web 它基于呃这个 web assembly 技术,所以我认为啊,这个 web 的 话不考虑。这个不考虑 啊,这个不考虑。好吧,没有哪个去用 flutter 开发 web, 就 哪怕你现在用 flutter 去开发跨端,我认为啊,它的主要用武之地在 ios, 安卓跟桌面端啊。 web 呢,不考虑,还有在这个基础上。呃,有没有其他的呢?再没有了 啊,再没有基本上呢,就是这些。所以小程序肯定是不支持的啊。小程序不支持好,这是它的主要的使用的场景跟它们的作用啊。