当前位置: 首页 > Web前端 > JavaScript

ko在数据栈中的应用

时间:2023-03-27 16:08:18 JavaScript

介绍一项技术可以广泛应用,其中一个重点是工程。前端从一开始简单的写网页和样式,发展到需要处理复杂的逻辑。随之而来的问题是相关文件越来越多。单纯在网页中引用它们并不能解决问题,还需要相关的工程工具。处理和优化流程。前端社区也涌现了很多解决方案,比如rollup、parcel、webpack、esbuild等,在不同的情况下可以更好的处理问题。其中,webpack由于其微内核架构,在其核心功能稳定优秀的情况下,可以让开发者灵活控制各个进程,使其周边生态更加多元和完善,逐渐成为各种解决方案中的首选。但正是基于其微内核架构的灵活性和生态的多样性,使其复杂度直线上升。没有经验的工程师往往对它的配置了解不多,这会浪费大量时间解决配置问题,影响开发效率。同时,如何更好的优化打包效率也需要一定的积累。数据栈前端团队基于webpack对ko进行封装,先后实践优化了数据栈索引管理、业务中心、消息管理中心等产品线,最终使配置等问题更加简化,打包效率提高比之前翻了一倍。以上改进完美解决了上述问题。整体架构ko的整体架构如下:整体是一个monorepo,借助lerna和yarnworkspace方便管理包。其中:babel-preset-ko-app是给ko的babel预设,供babel-loader使用ko-config集成了lint相关的配置和依赖如eslint、prettier、stylelint等供ko-lints使用ko-lints集成了eslint、prettier、stylelint等lint相关工具,并集成了dev和build相关核心功能在数据栈中的应用。从整体架构来看,目前ko集成了打包格式化相关的功能,那么ko在数据栈中是如何应用的呢?我们以数据栈产品业务中心的整个研发流程为例。develop首先是开发过程,kodev相关的可配置项如下:-p,--port:配置端口号--host:配置host-t,--ts:typescript支持-a,--analyzer:使用webpack-bundle-analyzer分析打包结果。另外,与之相关的还有ko配置文件ko.config.js。我们只需要在配置文件中添加如下内容:module.exports={entry:['./src/app.tsx'],devServer:{proxy,host:'127.0.0.1',port:8082,},};在开发阶段指定几个必要的配置,执行kodev-t命令,可以在http://127.0.0.1:8082看到程序运行正常。codereview在数据栈的整个研发体系中,codereview会先用eslint检测代码的写法等,检测通过之后再进行后续的review步骤,代码的功能借助工具进行检测也已集成到ko中。koeslint相关的可配置项如下:-f,--fix:启用自动修复-c,--config:eslint自定义配置路径--ignore-path:eslint需要忽略的文件配置路径默认为.koignore。我们只需要执行koeslint或koes来检测代码格式等。ko默认集成了合理的eslint配置项,也可以使用-c,--config配置项自定义配置项。与koeslint类似的还有koprettier和kostylelint,分别使用prettier和stylelint对相关代码进行检测和格式化。用法和koeslint基本一样。构建开发和代码审查完成并通过测试后,我们就可以使用当前版本的内容发布到线上环境了。这时候就需要使用kobuild来打包当前版本的内容了。kobuild相关的可配置项如下:--hash:给包文件名添加hash-t,--ts,--typescript:typescript支持-e,--esbuild:esbuild支持,目前只使用esbuild压缩相关函数执行kobuild-t命令。等待一小段时间后,打包结果会输出到当前目录的dist文件夹中。至此,整个开发过程就结束了,可以看到ko高度参与了数栈的整个开发过程,涉及到开发、codereview和build三个重要阶段。效率提升在保证整个研发流程稳定性的情况下,ko在迭代版本的同时也优化了打包流程。优化结果如下:可以看到目前5.x版本的ko相比4.x版本ko在第一次打包和第二次打包的速度上有明显提升。未来方向前端还处于高速发展阶段,社区中涌现出Vite、Rome等新方案。不断尝试新技术应用和新方向。2022年,ko将尝试着重于以下几点来提高效率和易用性:依托webpack5新的模块联邦,尝试提高打包速度和微前端的实践更多尝试esbuild相关功能,改进打包效率,制定eslint等更细化的规则,服务于各个产品线乃至社区。展望2022年,ko会做的更好,为数栈前端团队乃至开源社区做出贡献。