hel+发布了,一起体验原生跨端js模块联邦

Hel+,全新的Js模块联邦架构

当下大仓开发模式越来越流行,如何无痛接入模块联邦技术来让跨仓库、跨项目、跨运行环境的公共代码模块提高共享效率,并让模块可高效复用的同时还能够精细化地按不同策略来控制模块版本下发规则成为了巨大挑战,经过3年打磨,1000多此提交,Hel+ 应运而生,携带原生跨端大仓工程化双模驱动平台化等全新特性,为你带来极致且高效的Js模块联邦体验。

以下是部分特性简介,后续将通过多场分享解密hel+各项强大的能力。

原生跨端

新增 hel-micro-node 包,用于服务端模块动态更新

  • 安装 hel cli
bash 复制代码
npm i create-hel -g
  • 创建 demo 并启动
bash 复制代码
# 创建一个 node 服务端演示的目录 my-hel
hel init my-hel -t node-demo
cd my-hel
npm i
npm start

示例里 @hel-demo/mono-libs包体被 hel-micro-node 将映射后,将具备免服务重启就能动态更新的能力,并同时支持node, deno, bun 3大主流js运行时。

访问localhost:3000/update将人工触发版本切换

线上运行推荐搭配helpack来控制版本下发策略

双模驱动

@hel-demo/mono-libs既是hel模块也是普通的npm模块,当用户不使用 hel sdk映射时则固定使用来node_modules的代码,映射后则使用node_modules/.hel_modules的代码,一行配置文件即可完成两种模式的运行切换,是否采用微模块架构完全由用户决定。

大仓工程化

进化后的hel依然保留这工具链无关,接入简单的特点,并适配了流行的pnpm大仓开发模式,在相关工程化辅助包的支持下,用户靠编译模式即可觉得是否让前端工程采用微模块架构。

访问整体构建web应用,查看网络可看到无微模块拉取,表示大仓里的子模块随宿主打包到一起。

访问微模块构建web应用,查看网络可看到有微模块拉取,表示大仓里的子模块和宿主是各自独立部署的关系。

dom树上可看到微模块相关资源

以下是创建上述 hel 微模块大仓工程相关步骤。

  • 创建 react-hel 大仓
bash 复制代码
hel init my-react # 创建后按提示启动工程
cd my-react
pnpm i
# 普通模式运行
pnpm start hub
# 微模块模式运行
pnpm start hub:hel

工程里将宿主和子模块分别放置到不同的目录。

其他ui框架如vue,svelte等均可参照此工程搭建。

  • 编译
bash 复制代码
# 普通模式编译
pnpm start hub build
# 普通模式编译(同时生成 hel-meta.json 元数据)
pnpm start hub build:helm
  • 创建新的宿主、模块
bash 复制代码
# 创建新的宿主应用 my-hub
pnpm start .create my-hub
# 创建新的ts子模块 my-lib,同时包名命名为 @my/lib(可选)
pnpm start .create-mod my-hub -n @my/lib
# 创建新的react组件子模块 my-comp
pnpm start .create-mod my-comp -t react-lib
  • 编译、发布子模块

编译为同时具有 npm模块和hel模块特征的包体并发布

bash 复制代码
cd packages/my-lib
pnpm run build:nbsm
pnpm publish

注意一定要使用 pnpm publish 发布.

平台化

helpack已开源,你可以私有部署来管理你的 hel 模块了,从而避免模块托管到unpkgjsdelivr等公网cdn服务。

bash 复制代码
git clone https://github.com/Tencent/hel
cd hel/helpack
  • 启动helpack服务
bash 复制代码
$ cd server
$ npm i
$ npm run build        // 先编译ts文件
$ npm run start        // 再启动编译好的工程(默认启动快速模式的管理台)
  • 启动使用hel的后端
bash 复制代码
cd hm-node-user
npm i
npm start:h 			// 连接本地 helpack
  • 启动使用hel的前端
bash 复制代码
cd hm-browser-user
npm i
npm start:h 			// 连接本地 helpack

然后就可以按下图所示去切换前后台工程里运行的hel 模块的版本了

相关推荐
天人合一peng15 小时前
Unity中button 和toggle监听事件函数有无参数
前端·unity·游戏引擎
方也_arkling15 小时前
别名路径联想提示。@/统一文件路径的配置
前端·javascript
毕设源码-朱学姐16 小时前
【开题答辩全过程】以 基于web教师继续教育系统的设计与实现为例,包含答辩的问题和答案
前端
web打印社区16 小时前
web-print-pdf:突破浏览器限制,实现专业级Web静默打印
前端·javascript·vue.js·electron·html
RFCEO16 小时前
前端编程 课程十三、:CSS核心基础1:CSS选择器
前端·css·css基础选择器详细教程·css类选择器使用方法·css类选择器命名规范·css后代选择器·精准选中嵌套元素
Amumu1213816 小时前
Vuex介绍
前端·javascript·vue.js
We་ct17 小时前
LeetCode 54. 螺旋矩阵:两种解法吃透顺时针遍历逻辑
前端·算法·leetcode·矩阵·typescript
2601_9494800617 小时前
【无标题】
开发语言·前端·javascript
css趣多多17 小时前
Vue过滤器
前端·javascript·vue.js
理人综艺好会18 小时前
Web学习之用户认证
前端·学习