超极简主义前端组件框架PHC发布

广告位招租
扫码页面底部二维码联系

大家好,我又来发布新作品了,这次带来非常转载请注明出处:www.tangshuang.net著作权归作者所有,禁止商业用途转载。有意思的前端组件框架PHC。相信作为前端本文版权归作者所有,未经授权不得转载。【版权所有】唐霜 www.tangshuang.net开发者,你已经用过非常多的框架,例如vu【作者:唐霜】著作权归作者所有,禁止商业用途转载。e、react等,但是在你的工作中,你不转载请注明出处:www.tangshuang.net【原创不易,请尊重版权】得不去考虑更多的问题,而会接触类似nex【访问 www.tangshuang.net 获取更多精彩内容】【原创不易,请尊重版权】t、astro等更高层面的框架。可是无一【本文受版权保护】【转载请注明来源】例外,所以的这些框架都必须借助构建工具。【版权所有】唐霜 www.tangshuang.net转载请注明出处:www.tangshuang.net有没有一种可能,我们前端开发在某些场景中著作权归作者所有,禁止商业用途转载。【转载请注明来源】,或许应该返璞归真,不需要那么复杂的工程未经授权,禁止复制转载。【版权所有】唐霜 www.tangshuang.net体系呢?PHC就是这样一款没有新语法、新【原创不易,请尊重版权】【原创不易,请尊重版权】概念、新设计的轻量级框架,让你可以超快的【作者:唐霜】【访问 www.tangshuang.net 获取更多精彩内容】搭建自己的应用组件。

本文作者:唐霜,转载请注明出处。未经授权,禁止复制转载。【版权所有,侵权必究】

什么是PHC?【访问 www.tangshuang.net 获取更多精彩内容】

著作权归作者所有,禁止商业用途转载。【本文受版权保护】本文作者:唐霜,转载请注明出处。【关注微信公众号:wwwtangshuangnet】【转载请注明来源】

PHC是Hypertext Compon【访问 www.tangshuang.net 获取更多精彩内容】【关注微信公众号:wwwtangshuangnet】ent的缩写,是基于超文本语言文件的组件原创内容,盗版必究。【原创不易,请尊重版权】开发框架。说白了,就是用纯粹的原生web【版权所有,侵权必究】本文版权归作者所有,未经授权不得转载。开发语言来实现组件。2024年,前端开发【未经授权禁止转载】【本文受版权保护】领域已经进入一个新阶段,很多技术在发展过【版权所有】唐霜 www.tangshuang.net【本文首发于唐霜的博客】程中留下了很多债务,而社区存在一股力量,著作权归作者所有,禁止商业用途转载。【版权所有】唐霜 www.tangshuang.net趋向于返璞归真,回到web开发的本真道路转载请注明出处:www.tangshuang.net【原创内容,转载请注明出处】上,不忘初心,做出更有意思的web应用。原创内容,盗版必究。【版权所有】唐霜 www.tangshuang.net在这一背景下,我开发了PHC来让开发者可本文版权归作者所有,未经授权不得转载。【转载请注明来源】以更方便的实现自己的前端代码组织。通过P【原创内容,转载请注明出处】【转载请注明来源】HC框架,我们可以用纯粹的HTML、CS本文作者:唐霜,转载请注明出处。【版权所有】唐霜 www.tangshuang.netS、JavaScript来进行开发,也正未经授权,禁止复制转载。【版权所有】唐霜 www.tangshuang.net因如此,我们不需要花学习PHC,你可以在原创内容,盗版必究。本文版权归作者所有,未经授权不得转载。1分钟内了解它的全部,并开始上手开发。

本文版权归作者所有,未经授权不得转载。【关注微信公众号:wwwtangshuangnet】本文版权归作者所有,未经授权不得转载。原创内容,盗版必究。

PHC立足于纯粹的web技术,和vue、【版权所有】唐霜 www.tangshuang.net【访问 www.tangshuang.net 获取更多精彩内容】react等视图层的框架不矛盾,甚至可以【作者:唐霜】本文作者:唐霜,转载请注明出处。兼容,PHC的目标是提供web组件的开发框架,【作者:唐霜】【关注微信公众号:wwwtangshuangnet】但不限制组件的具体实现。也就是说,我们使用PHC的核心原因,是【转载请注明来源】【访问 www.tangshuang.net 获取更多精彩内容】我们希望快速写一个web组件,在我们已有原创内容,盗版必究。著作权归作者所有,禁止商业用途转载。的web应用中使用。但是,这个web组件著作权归作者所有,禁止商业用途转载。【原创不易,请尊重版权】具体怎么写,PHC没有做任何规定,它既不【原创内容,转载请注明出处】【未经授权禁止转载】提供新语法,也不提供任何写代码层面的规则【版权所有】唐霜 www.tangshuang.net转载请注明出处:www.tangshuang.net,组件代码本身怎么写完全是开发者自己决定未经授权,禁止复制转载。转载请注明出处:www.tangshuang.net的。你甚至可以在组件中同时使用vue和r未经授权,禁止复制转载。【本文首发于唐霜的博客】eact来作为视图驱动,实现在组件中响应著作权归作者所有,禁止商业用途转载。本文版权归作者所有,未经授权不得转载。式编程,当然,也可以使用纯粹的js来修改【原创内容,转载请注明出处】未经授权,禁止复制转载。DOM实现界面变更。总而言之,PHC只关本文版权归作者所有,未经授权不得转载。【本文首发于唐霜的博客】心组件的组织形式,而不关心组件的写作方式【作者:唐霜】未经授权,禁止复制转载。

未经授权,禁止复制转载。未经授权,禁止复制转载。原创内容,盗版必究。【本文受版权保护】

与其他的框架相比,PHC具有以下优势:【关注微信公众号:wwwtangshuangnet】

本文版权归作者所有,未经授权不得转载。转载请注明出处:www.tangshuang.net著作权归作者所有,禁止商业用途转载。
  • 使用超文本(HTML)作为开发语言,无多【转载请注明来源】【关注微信公众号:wwwtangshuangnet】余知识,无高深的概念
  • 【原创内容,转载请注明出处】【转载请注明来源】转载请注明出处:www.tangshuang.net【未经授权禁止转载】本文作者:唐霜,转载请注明出处。
  • 快速查看组件效果,没有繁杂的构建体系【原创内容,转载请注明出处】
  • 【访问 www.tangshuang.net 获取更多精彩内容】【未经授权禁止转载】著作权归作者所有,禁止商业用途转载。
  • 单文件组件:用一个.htm 文件写一个组本文作者:唐霜,转载请注明出处。【版权所有】唐霜 www.tangshuang.net件,独立部署到 CDN,不需要打包或编译
  • 未经授权,禁止复制转载。转载请注明出处:www.tangshuang.net本文版权归作者所有,未经授权不得转载。著作权归作者所有,禁止商业用途转载。
  • Web Components: 完全基于【转载请注明来源】未经授权,禁止复制转载。 customElements 实现,组【未经授权禁止转载】【原创不易,请尊重版权】件被放在 shadowDOM 中,支持样本文版权归作者所有,未经授权不得转载。【未经授权禁止转载】式隔离,支持向组件传标准的 slot
  • 转载请注明出处:www.tangshuang.net【版权所有,侵权必究】【作者:唐霜】转载请注明出处:www.tangshuang.net【作者:唐霜】
  • 没有 Virtual DOM,更新直接触著作权归作者所有,禁止商业用途转载。【转载请注明来源】达 DOM 节点
  • 【未经授权禁止转载】【未经授权禁止转载】【本文首发于唐霜的博客】
  • 异步按需加载:只拉出当前界面渲染需要的组转载请注明出处:www.tangshuang.net【版权所有,侵权必究】件,当前界面不需要的组件不会被拉取
  • 原创内容,盗版必究。本文作者:唐霜,转载请注明出处。未经授权,禁止复制转载。【访问 www.tangshuang.net 获取更多精彩内容】
  • 通过【版权所有】唐霜 www.tangshuang.net<link rel="sfc" as="custom-name">快速链接组件本文版权归作者所有,未经授权不得转载。
  • 【作者:唐霜】【原创不易,请尊重版权】本文版权归作者所有,未经授权不得转载。原创内容,盗版必究。
  • 组件可嵌套【访问 www.tangshuang.net 获取更多精彩内容】
  • 【原创内容,转载请注明出处】著作权归作者所有,禁止商业用途转载。【原创不易,请尊重版权】
  • 超快,底层基于vanilla.js驱动本文作者:唐霜,转载请注明出处。
  • 【原创不易,请尊重版权】【本文受版权保护】原创内容,盗版必究。【访问 www.tangshuang.net 获取更多精彩内容】原创内容,盗版必究。
  • 超小体积,5kb【原创内容,转载请注明出处】
  • 【关注微信公众号:wwwtangshuangnet】未经授权,禁止复制转载。【作者:唐霜】本文版权归作者所有,未经授权不得转载。
  • 支持所有支持ES5的浏览器本文版权归作者所有,未经授权不得转载。
  • 【作者:唐霜】【转载请注明来源】本文版权归作者所有,未经授权不得转载。未经授权,禁止复制转载。原创内容,盗版必究。

总结而言,PHC的特点就是:未经授权,禁止复制转载。简单、快!【关注微信公众号:wwwtangshuangnet】

【版权所有】唐霜 www.tangshuang.net【转载请注明来源】著作权归作者所有,禁止商业用途转载。

1分钟学会PHC著作权归作者所有,禁止商业用途转载。

【原创不易,请尊重版权】【版权所有】唐霜 www.tangshuang.net【本文首发于唐霜的博客】

首先,我们需要加载PHC的包文件到我们的【未经授权禁止转载】著作权归作者所有,禁止商业用途转载。web应用中。

著作权归作者所有,禁止商业用途转载。本文版权归作者所有,未经授权不得转载。【访问 www.tangshuang.net 获取更多精彩内容】【本文受版权保护】【本文受版权保护】
<script src="https://unpkg.com/phc"></script>

这样,我们的应用就载入了phc的包,我们【本文首发于唐霜的博客】【关注微信公众号:wwwtangshuangnet】就可以在我们的应用中使用phc作为组件框【访问 www.tangshuang.net 获取更多精彩内容】【本文受版权保护】架进行开发了。

【作者:唐霜】【版权所有,侵权必究】著作权归作者所有,禁止商业用途转载。【关注微信公众号:wwwtangshuangnet】著作权归作者所有,禁止商业用途转载。

接下来,我们开始写一个组件文件some.本文版权归作者所有,未经授权不得转载。转载请注明出处:www.tangshuang.nethtm:

原创内容,盗版必究。本文版权归作者所有,未经授权不得转载。【关注微信公众号:wwwtangshuangnet】著作权归作者所有,禁止商业用途转载。
<style>
.container {
  margin: 10px;
}
</style>

<div class="container">
  <main></main>
</div>

<script>
  const doc = new Document();
  doc.querySelector('.container main').innerText = 'Hello PHC!';
</script>

最后,我们在我们的应用(或者某个其他的p【原创内容,转载请注明出处】【本文首发于唐霜的博客】hc组件中)引入和使用这个组件:

本文版权归作者所有,未经授权不得转载。【版权所有】唐霜 www.tangshuang.net【原创内容,转载请注明出处】【原创内容,转载请注明出处】
<link rel="phc" href="./some.htm" as="some-x" />
<some-x></some-x>

在使用时,我们通过link引入该组件,并【作者:唐霜】【未经授权禁止转载】通过as对组件在当前上下文中进行命名,接【作者:唐霜】【原创不易,请尊重版权】下来就是使用该组件(像使用普通的 web原创内容,盗版必究。【本文首发于唐霜的博客】 component 一样使用它)。

【访问 www.tangshuang.net 获取更多精彩内容】著作权归作者所有,禁止商业用途转载。著作权归作者所有,禁止商业用途转载。【本文受版权保护】原创内容,盗版必究。

你需要学习什么?本文版权归作者所有,未经授权不得转载。

原创内容,盗版必究。【本文首发于唐霜的博客】本文版权归作者所有,未经授权不得转载。

对于PHC而言,我们没有任何新语法,只是【访问 www.tangshuang.net 获取更多精彩内容】转载请注明出处:www.tangshuang.net在原有的web接口的基础上,进行了扩展。本文版权归作者所有,未经授权不得转载。未经授权,禁止复制转载。具体如下:

【作者:唐霜】著作权归作者所有,禁止商业用途转载。本文作者:唐霜,转载请注明出处。【版权所有】唐霜 www.tangshuang.net【版权所有】唐霜 www.tangshuang.net
  • const doc = new Document() 在组件中 new Document()【关注微信公众号:wwwtangshuangnet】未经授权,禁止复制转载。 将获得当前组件的上下文文档(以进行组件【版权所有】唐霜 www.tangshuang.net【未经授权禁止转载】内的文档操作),且 doc.rootElement 将读取组件实例化后的DOM对象【版权所有】唐霜 www.tangshuang.net
  • 原创内容,盗版必究。原创内容,盗版必究。【原创不易,请尊重版权】本文版权归作者所有,未经授权不得转载。
  • <link rel as> 我们新增了 转载请注明出处:www.tangshuang.netphc 这个 rel,并且需要你提供 as 作【访问 www.tangshuang.net 获取更多精彩内容】【关注微信公众号:wwwtangshuangnet】为(web component)组件名,转载请注明出处:www.tangshuang.net【访问 www.tangshuang.net 获取更多精彩内容】需要注意,<link> 需提前声明,不【版权所有】唐霜 www.tangshuang.net本文版权归作者所有,未经授权不得转载。可以动态添加
  • 【版权所有,侵权必究】【原创内容,转载请注明出处】【本文首发于唐霜的博客】
  • const win = new Window() 在组件中通过 new Window()原创内容,盗版必究。本文版权归作者所有,未经授权不得转载。 来获得当前浏览器窗口
  • 【本文受版权保护】【访问 www.tangshuang.net 获取更多精彩内容】【版权所有,侵权必究】【访问 www.tangshuang.net 获取更多精彩内容】
  • 在组件内使用 【本文受版权保护】document本文版权归作者所有,未经授权不得转载。window 意义不大,没有实际作用,不推荐读取转载请注明出处:www.tangshuang.net
  • 【访问 www.tangshuang.net 获取更多精彩内容】【未经授权禁止转载】【版权所有,侵权必究】【原创内容,转载请注明出处】【版权所有】唐霜 www.tangshuang.net

以上就是PHC的所有知识。没有其他了,为本文作者:唐霜,转载请注明出处。本文作者:唐霜,转载请注明出处。了让PHC足够简单,除了无法克服的Doc【未经授权禁止转载】【版权所有,侵权必究】ument和Window,我把所有前期设本文作者:唐霜,转载请注明出处。本文版权归作者所有,未经授权不得转载。想过的语法、功能、概念,全部去除了。也正【本文受版权保护】【本文首发于唐霜的博客】是这种对极简的追求,最后框架的包代码被压未经授权,禁止复制转载。【作者:唐霜】缩在5kb,经过gzip压缩之后还会更小著作权归作者所有,禁止商业用途转载。原创内容,盗版必究。

未经授权,禁止复制转载。本文作者:唐霜,转载请注明出处。原创内容,盗版必究。

在PHC组件中使用Vue未经授权,禁止复制转载。

本文版权归作者所有,未经授权不得转载。【本文首发于唐霜的博客】【版权所有】唐霜 www.tangshuang.net

虽然我推荐使用纯粹的js来进行编程,但是本文版权归作者所有,未经授权不得转载。【原创内容,转载请注明出处】为了展示phc的兼容能力,下面我将写一个【版权所有】唐霜 www.tangshuang.net【转载请注明来源】用vue作为视图驱动的组件:

本文版权归作者所有,未经授权不得转载。本文版权归作者所有,未经授权不得转载。未经授权,禁止复制转载。
<script src="https://unpkg.com/vue@3/dist/vue.global.prod.js"></script>

<div id="app" style="display: none;">
    <span>{{ message }}</span>
    <button @click="change">change</button>
</div>

<script>
    const { createApp, ref } = Vue;
    const doc = new Document();
    const root = doc.querySelector('#app');

    createApp({
        setup() {
            const message = ref('Hello vue!')
            const change = () => message.value = 'I am changed';
            return {
                message,
                change,
            }
        }
    }).mount(root)
    root.style.display = 'block';
</script>

在这个组件中,我们引入了vue的包文件,【关注微信公众号:wwwtangshuangnet】【版权所有,侵权必究】并按照vue的写作方法来启动DOM的加载转载请注明出处:www.tangshuang.net【本文首发于唐霜的博客】和变更。通过vue我们可以实现响应式编程【关注微信公众号:wwwtangshuangnet】【原创不易,请尊重版权】,这样可以使用状态来驱动我们的界面变更。

本文版权归作者所有,未经授权不得转载。【本文首发于唐霜的博客】转载请注明出处:www.tangshuang.net

与微前端框架的区别【转载请注明来源】

原创内容,盗版必究。【原创内容,转载请注明出处】著作权归作者所有,禁止商业用途转载。【关注微信公众号:wwwtangshuangnet】【作者:唐霜】

通过上面的vue组件的例子,你可能会产生原创内容,盗版必究。【作者:唐霜】一个疑问,这和微前端有什么差别呢?感觉很【转载请注明来源】【原创内容,转载请注明出处】像。虽然……但是,PHC和微前端是两个层【版权所有】唐霜 www.tangshuang.net【未经授权禁止转载】面的事物,解决不同的问题,微前端解决巨石【本文受版权保护】【转载请注明来源】应用的重构问题,以做到跨技术栈为主要技术【本文首发于唐霜的博客】【转载请注明来源】实现;PHC解决快速启动web开发问题,【原创内容,转载请注明出处】【版权所有,侵权必究】以让开发者可以在短时间内实现多页面应用编【版权所有,侵权必究】原创内容,盗版必究。程问题。对于微前端而言,子应用无需关心外本文版权归作者所有,未经授权不得转载。【本文受版权保护】部环境,可以被无感集成到基座应用中。而P未经授权,禁止复制转载。【未经授权禁止转载】HC组件必须按照框架的设定来编写和使用,【版权所有,侵权必究】著作权归作者所有,禁止商业用途转载。虽然在写作上有非常大的自由度,但还是有非【转载请注明来源】【本文受版权保护】常小的前置约束。作为技术框架,一旦选择P【未经授权禁止转载】未经授权,禁止复制转载。HC,就很难再将技术栈切换到其他技术栈上转载请注明出处:www.tangshuang.net【原创不易,请尊重版权】,因此,你需要在技术选型时提前评估。不过本文作者:唐霜,转载请注明出处。【版权所有】唐霜 www.tangshuang.net由于PHC的宽广自由度,对PHC组件进行【本文受版权保护】【关注微信公众号:wwwtangshuangnet】简单改造即可被迁移到其他微前端框架中使用【转载请注明来源】【原创内容,转载请注明出处】,或者将其他微前端子应用作少量改造,就可原创内容,盗版必究。【转载请注明来源】以被作为PHC组件使用。

原创内容,盗版必究。著作权归作者所有,禁止商业用途转载。【访问 www.tangshuang.net 获取更多精彩内容】转载请注明出处:www.tangshuang.net【转载请注明来源】

在技术实现上,微前端框架需要解决子应用之本文版权归作者所有,未经授权不得转载。未经授权,禁止复制转载。间、父子应用之间抢资源(样式、JS运行时本文版权归作者所有,未经授权不得转载。本文版权归作者所有,未经授权不得转载。等)的问题,因此,发展出了各种沙箱机制,【本文首发于唐霜的博客】【版权所有,侵权必究】使得代码在沙箱中运行,从而解决抢资源问题【关注微信公众号:wwwtangshuangnet】【本文受版权保护】。但这会带来另外的问题,就是性能的下降,原创内容,盗版必究。未经授权,禁止复制转载。特别是像qiankun这样依赖代理实现的原创内容,盗版必究。【转载请注明来源】沙箱机制,会使得应用运行过程中产生很多不【原创不易,请尊重版权】【版权所有】唐霜 www.tangshuang.net可预料的问题。而PHC虽然也做到了隔离,著作权归作者所有,禁止商业用途转载。著作权归作者所有,禁止商业用途转载。但是由于没有这些隔离机制,没有多余的实现转载请注明出处:www.tangshuang.net【访问 www.tangshuang.net 获取更多精彩内容】,因此也就不存在对应的问题。按照PHC框【本文首发于唐霜的博客】本文版权归作者所有,未经授权不得转载。架写组件,就能发挥组件代码的原始性能。

【本文首发于唐霜的博客】【访问 www.tangshuang.net 获取更多精彩内容】原创内容,盗版必究。

结语【版权所有,侵权必究】

著作权归作者所有,禁止商业用途转载。未经授权,禁止复制转载。【原创内容,转载请注明出处】

由于PHC过于简单,且没有什么高深的学问【转载请注明来源】【原创不易,请尊重版权】,对PHC的介绍就到此结束。前端开发技术【本文受版权保护】【未经授权禁止转载】在过去几年,过于沉浸在工程工具层面,而忽本文作者:唐霜,转载请注明出处。【本文首发于唐霜的博客】视了很多表层的体验问题,随着大模型时代的【本文受版权保护】本文作者:唐霜,转载请注明出处。到来,工程问题会慢慢被机器替代,唯有做出原创内容,盗版必究。著作权归作者所有,禁止商业用途转载。优秀的体验需要人的创造力。PHC追求极致【关注微信公众号:wwwtangshuangnet】本文作者:唐霜,转载请注明出处。的简单,或许看上去单薄,但却是回归本真的【访问 www.tangshuang.net 获取更多精彩内容】【未经授权禁止转载】一次大胆尝试。有兴趣的同学,可以在github关注本项目未经授权,禁止复制转载。,一起讨论。【转载请注明来源】

原创内容,盗版必究。著作权归作者所有,禁止商业用途转载。【版权所有,侵权必究】未经授权,禁止复制转载。

2024-01-19 3759

为价值买单,打赏一杯咖啡

本文价值37.59RMB