SegmentFault 最新的文章 |
| Posted: 13 Jan 2022 03:02 AM PST 最近前端圈掀起了一阵 rust 风,凡是能用 rust 重写的前端工具就用 rust 重写,今天介绍的工具就是通过 rust 实现的 bable:swc,一个将 ES6 转化为 ES5 的工具。 而且在 swc 的官网,很直白说自己和 babel 对标, 使用 rust 的一个优势就是快,比如我们之前的一个项目,将 babel 替换成 swc 后,编译速度从原来的 7 秒提升到了 1 秒,效率直接爆炸。 上手swc 与 babel 一样,将命令行工具、编译核心模块分化为两个包。
通过如下命令,可以将一个 ES6 的 JS 文件转化为 ES5。 下面是 代码中囊括了 ES6 的两个特性, 配置文件swc 与 babel 一样,支持类似于 babel 的插件系统被 swc 整合成了 Node APIs通过在 node.js 代码中,导入 打包代码除了将代码转义,swc 还提供了一个简易的打包能力。我们新建一个 可以看到 然后在命令行运行: 打包成功后,会在 可以看到,不仅将 能不能用?babel 毕竟经过了这么多年的发展,不管是 bug 输了,还是社区活跃度都远远优于 swc。所以,如果是小产品试水还是可以试一下 swc 的,旧项目如果已经使用了 babel 还是不建议进行迁移。 在使用的过程,还是发现了一些小问题。比如,如果我使用了 调用 swc 编译后,代码如下: 这个结果看起来是没问题的,但是 swc 与 babel 类似,也有 helpers(@swc/helpers),同时提供了 而 swc 正好有个 [issue [https://github.com/swc-projec...]](https://github.com/swc-projec...) 在讨论这个问题。 除了上面说的这个问题,其实还有一点,就是作者觉得之前的架构有问题,正在加紧重写 2.0 版本,感觉可以期待一下,另外提一句,swc 的作者是一个 97 年的韩国小哥,目前大学都还没毕业,最后我也只能说一句:牛逼! | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Posted: 09 Jan 2022 05:57 PM PST 14 世纪,英格兰的逻辑学家奥卡姆在他的《箴言书注》中说「不要浪费过多的东西,去做那些用较少的东西同样可以做好的事情」。后来这句话被简化为「奥卡姆剃刀原理」,即:如无必要,勿增实体。奥卡姆剃刀在各个领域都有他的运用,他不是一个公理,没有严谨的推导过程,但他却是一个在实践中被证明非常有效的解决问题的手段。 在编程世界里,有太多我们习以为常的东西,我相信存在即合理,同时我也相信存在都有前提,而前提会随着时间变化甚至消失。下面我想跟大家探讨下,我们前端项目中那些应该被剃刀剃掉的东西。 前端项目里的 service 层在一个前端项目中,一般包含以下文件目录:
我们的业务代码基本都在 containers components 里,utils 和 routes 也是必不可少的,但仔细思考我们就会发现,这里有个 services 文件夹,他被称为数据服务层,是我们跟后端打交道的。这一层真的需要吗? 从上面的代码我们可以看出,services 文件下基本是一些模板代码,偶尔有少见的一些数据转换。这些内容对于我们的业务代码来说,都是非业务相关的,写这些模板性的控制代码真的有必要吗? service 里包含什么?
数据转换逻辑 converHandler:并不通用,有的一个请求在不同的页面需要走不同的转换逻辑,这些转换逻辑一般会写在调用位置的代码里,我也建议这么做,因为数据转换也是这块某个 container 的功能,而且为了方便测试,建议添加 handler.js 将转换逻辑抽离出来。 数据请求工具 request:主要是封装各种请求,这部分需要统一。非业务相关,可以提出来。 请求地址定义 url:这部分是强业务相关的,不应该放到 service 里,而是作为 service 的一个配置,由外部输入。 全局拦截器 interceptor:处理一些通用的业务状态码,比如编辑成功 10001,这部分也是强业务相关的,而且相对比较复杂,但是可以通过配置 schame 来描述,后面再讲。 附加功能 openAPI:如果你系统的接口想让别的系统复用,比如 MTEE 基础平台的接口需要复用给运营平台,那么前端需要提供领域物料,领域物料里会发请求,发请求要解决跨域、登陆、授权的问题,openAPI 应运而生。 综上可以看出,service 层只需要一些统一的逻辑处理和配置文件就能描述清楚,甚至我们可以把 Service 层简化为 $$service = request + config$$ 我的 service 包由此,我希望能设计这样一个 service 包,他需要包含下面的功能: 请求支持常见的 get post jsonp 请求,以及对于这些请求的附加方法,比如 debounce、throttle、缓存、loading 等功能。也可以提供大家比较喜欢的 hooks API。 接口配置一个接口包含域名 domain,地址路径 path,请求方法 method,参数 params,一些常见功能的开关,比如开启防抖 { debounce:true } 。参数的配置里,可以添加该参数的基本属性,比如是否必选 { require: true } ,这样包内可以对参数做必要的校验,这样可以保证非法数据传入后台。 环境切换环境切换是一个非业务相关的功能,他不应该硬编码到代码里,带到线上。他应该只是一个配置,尽量与代码脱离,因此是用浏览器插件来切换,就是一个很好的方法。可以设计 service 包接收一个 domainMap,这个 domainMap 来自 window.GlobalConfig 下的某个变量,浏览器插件可以动态改变这个变量,就可以做到环境的切换了。 网关转发我们写代码追求复用,从代码块的复用到组件复用,再到业务能力的复用,而业务能力复用的一个载体就是领域物料。一个领域物料里很有多个接口请求,如果我们把原来在业务代码里的组件拆出来作为领域物料的话,就不得不把项目里的 service 层也要打包进去,这样才能发送请求和处理一些统一的异常。上面的我提到的把是service 层做成一个包,别人在使用的时候,只需要传配置进来,也是出于领域物料这个场景。 接口文档我们在接手别的项目的时候,总是不容易找到他的接口文档,因为文档和代码是割裂的,文档的维护也有滞后性,甚至慢慢文档的链接也找不到了。因此,代码和文档应该在一起,最好是代码即文档。大家可能觉得用注释就可以了,但程序员总是要求别人写注释,但自己却不爱写。写注释如果可以像写代码一样,或许能规范这部分的行为。例如: 这里用配置文件的方式规范了文档的形式,还可以与浏览器插件相结合,通过插件来查看当前用的接口文档。 异常拦截异常分为服务器异常和业务异常,服务器异常一般是用 http 状态码,400、500等;业务异常则需要是用 body 里的 code 来表示。在真实的业务实践中,我们发现对于服务器异常我们是很容易写出通用的拦截器做一些处理的,但是对于业务异常,就相对比较复杂了,这里面存在几个问题:
这里的 message 是可以根据不同语言环境返回不同语言文字的,showType 表示了前端的动作类型,这个是可枚举的,其中肯定有一种动作是,不做动作,直接透传。这个第三方系统,就可以配置不同编码的动作,有利于精细化的管理异常,给用户更好的体验。 落地实践是检验真理的唯一标准,基于上面的理想,我的 service 包也已经成型,使用他非常简单。只需要两步: 配置引入包调用 API同时基于浏览器插件,可以快速的切换环境,查看接口文档等。 想想边界开头,我们说到奥卡姆剃刀,如无必要,勿增实体,这个的前提是,有清晰独立的实体,如果我们的实体之间相互勾连耦合,那又如何剃掉不必要的实体呢。 作者:ES2049 / 黑石 文章可随意转载,但请保留此原文链接。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Posted: 12 Jan 2022 04:35 PM PST 前言2021 年 3 月,《中华人民共和国国民经济和社会发展第十四个五年规划和 2035 年远景目标纲要》正式发布。"开源" 被首次写入国家 "五年规划",云计算、大数据、智能制造等关键词被多次提及。 "十四五" 是我国开启全面建设社会主义现代化国家新征程的第一个五年,全球新一轮科技革命和产业变革深入发展,软件和信息技术服务业迎来新的发展机遇。 回首这一年,我们看到了数字经济的蓬勃发展,而这背后离不开无数开发者和科技企业夜以继日的付出。他们面对不断变化的外部环境,扎根行业,他们信奉技术力量,敢于技术创新,践行技术信仰,他们是技术先锋,探索改变世界的方向。 SegmentFault 思否作为中国领先的新一代开发者社区,依托数百万开发者用户数据分析,及各科技企业和个人在国内技术领域的行为、影响力指标,推出了第三届"中国技术先锋"年度评选。 本次评选共设SegmentFault 思否年度 TopWriter、SegmentFault 思否年度技术团队、中国开源先锋 33 人、中国新锐技术先锋企业榜、中国技术品牌影响力企业榜、最受开发者欢迎的技术活动榜等。其中TopWriter、年度技术团队、开源先锋 33 人已在本周发布,明天我们还将继续发布最受开发者欢迎的技术活动榜单。 无论是积极输出优质 UGC 内容的技术作者,还是高质量技术活动的主办方、在开发者生态上积极投入的科技企业,都是推动社会创新的 "先锋力量",我们推荐大家在 2022 年关注他们的发展和动态。 中国技术品牌影响力企业评选标准
2021 中国技术品牌影响力企业
当开发者生态和技术品牌受到越来越多企业的重视,我们希望让开发者看到那些真正坚持长期价值,积极输出优质技术内容、坚持产品创新、为开发者创造价值和便利的企业或团队,帮助他们获得更多关注,也推动更多企业加大在开发者生态的投入,帮助开发者成长和成功。 关于 SegmentFault 思否SegmentFault 思否作为中国领先的新一代开发者社区和专业技术媒体,是国内 DGC (Developer Generated Content) 内容最丰富、技术问答板块最活跃的开发者社区。 目前已经覆盖和服务了超过 1000 万开发者和上千家科技企业,帮助开发者解决了超过数百万个技术问题,用户原创产生的优质技术文章已累积超过 50 万篇,上千家科技企业技术团队入驻。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Posted: 12 Jan 2022 04:36 PM PST 前言2021 年 3 月,《中华人民共和国国民经济和社会发展第十四个五年规划和 2035 年远景目标纲要》正式发布。"开源" 被首次写入国家 "五年规划",云计算、大数据、智能制造等关键词被多次提及。 "十四五" 是我国开启全面建设社会主义现代化国家新征程的第一个五年,全球新一轮科技革命和产业变革深入发展,软件和信息技术服务业迎来新的发展机遇。 回首这一年,我们看到了数字经济的蓬勃发展,而这背后离不开无数开发者和科技企业夜以继日的付出。他们面对不断变化的外部环境,扎根行业,他们信奉技术力量,敢于技术创新,践行技术信仰,他们是技术先锋,探索改变世界的方向。 SegmentFault 思否作为中国领先的新一代开发者社区,依托数百万开发者用户数据分析,及各科技企业和个人在国内技术领域的行为、影响力指标,推出了第三届"中国技术先锋"年度评选。 本次评选共设SegmentFault 思否年度 TopWriter、SegmentFault 思否年度技术团队、中国开源先锋 33 人、中国新锐技术先锋企业榜、中国技术品牌影响力企业榜、最受开发者欢迎的技术活动榜等。其中 TopWriter、年度技术团队、开源先锋 33 人已在本周发布,明天我们还将继续发布最受开发者欢迎的技术活动榜单。 中国新锐技术先锋企业榜主要面向成立时间较短、融资轮次在 B 轮及 B 轮前的技术型初创公司,要求公司研发团队人数占比不低于 60% ,关注开发者生态、积极在社区贡献,在开发者群体中具备一定关注度及良好口碑,拥有较高成长性。 2021 中国新锐技术企业
中国新锐技术先锋企业是推动社会创新的 "新锐力量",富有朝气和活力,我们推荐大家在 2022 年关注他们的发展和动态。 关于 SegmentFault 思否SegmentFault 思否作为中国领先的新一代开发者社区和专业技术媒体,是国内 DGC (Developer Generated Content) 内容最丰富、技术问答板块最活跃的开发者社区。 目前已经覆盖和服务了超过 1000 万开发者和上千家科技企业,帮助开发者解决了超过数百万个技术问题,用户原创产生的优质技术文章已累积超过 50 万篇,上千家科技企业技术团队入驻。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Posted: 11 Jan 2022 07:20 PM PST 很多老照片或者电影受时代技术所限制,只能以黑白形式保存;经过编辑后的黑白视频和图片早已丢失彩色原图,这对于保存者来说都十分遗憾。如何能将单一乏味、陈旧斑驳的黑白照片变成鲜活亮丽的彩色照片,从照片中重新获取更多的特征细节,让观看者产生更强的代入感和情感共鸣呢? 华为视频编辑服务(Video Editor Kit)全新上线的"AI着色"能力,为开发者提供了黑白一键着色的解决方案。应用在集成视频编辑服务"AI着色"能力后,用户只需要上传一张黑白照片或者一段黑白视频,即可获得鲜活多彩的彩色照片或视频。 操作简单,效果也很不错! 快来看下集成步骤吧! 集成代码1 开发准备详细准备步骤可参考华为开发者联盟官网: 2 编辑工程集成2.1 设置应用的鉴权信息 可以通过api_key或者Access Token来设置应用鉴权信息。
License ID是进行管控的有效凭证,您要保证设置License ID的唯一性。 2.2.1初始化Editor运行环境 创建编辑工程,需要首先创建Editor对象并初始化其运行环境。当离开编辑工程时,应释放Editor实例。 (1) 创建Editor对象 (2) 指定预览窗口的布局位置 预览窗口负责视频图像画面的渲染,由视频编辑原子能力SDK内部创建SurfaceView来实现。在创建窗口之前,需要在您的App中指定预览窗口的布局位置。 (3) 初始化运行环境,如果License鉴权失败,会抛出LicenseException。 当Editor对象创建之后,此时还没有占用实际的系统资源,需要手动选择其环境初始化的时机,此时视频编辑原子能力SDK内部会创建必须的线程和定时器等。 2.2.2添加视频、图片 创建一条视频泳道,然后往泳道上添加图片或者视频素材。图片和视频素材需要通过文件路径添加到泳道上。 3 AI着色集成AI着色支持图片和视频资源,视频大小限制为100M。 Demo演示集成开发过程中,您有任何问题都可以在线提单,将有专人为您解答。 了解更多详情>> 访问华为开发者联盟官网 关注我们,第一时间了解 HMS Core 最新技术资讯~ |
| You are subscribed to email updates from SegmentFault 最新的文章. To stop receiving these emails, you may unsubscribe now. | Email delivery powered by Google |
| Google, 1600 Amphitheatre Parkway, Mountain View, CA 94043, United States | |
No comments:
Post a Comment