2.3k 2 分钟

# 国外超火的前端框架:Astro 5.0 正式发布!

Astro 5.0 带来了全新的 内容层 (Content Layer)服务岛 (Server Islands) 功能,实现了从任意来源加载内容的能力,并将静态缓存内容与动态个性化内容完美结合,进一步提升开发效率和网站性能。

# 什么是 Astro?

Astro 是专注于构建内容驱动型网站(如博客、营销和电商)的现代 Web 框架,以快速加载和优秀的 SEO 表现为核心优势。


489 1 分钟

# new URL(url, import.meta.url).href

new URL(url, import.meta.url).href

说明:第一个 url 为图片的相对路径

1.2k 1 分钟

在 Vue 3 中,你可以通过几种方式使用 SVG 图片。以下是一些示例: # 使用 <img> 标签直接引入 SVG 文件: <template> <img src="@/assets/your-image.svg" alt="Your Image"></template># 将 SVG 作为组件导入并使用: 首先,将 SVG 文件保存到你的组件目录中,并在 Vue 单文件组件中导入并注册为组件。 //...
1.5k 1 分钟

在 Vue 3 中, <keep-alive> 是一个内置组件,用于缓存动态组件的状态和 DOM。它的主要作用是避免组件被销毁和重新创建,从而保留组件的状态。然而,由于组件不会被销毁,某些生命周期钩子(如 mountedunmounted )不会被重新触发,这可能导致子组件的逻辑(如 JS 代码)没有被重新调用。

# 问题原因:

当组件被 <keep-alive> 包裹时:

  1. 首次加载:组件会正常挂载,触发 mounted 钩子。
  2. 切换到其他组件后返回:组件不会被销毁,而是从缓存中恢复,此时不会重新触发 mounted 钩子。
  3. 子组件逻辑未重新执行:如果某些逻辑依赖于 mountedcreated 钩子,它们不会再次执行。

2.5k 2 分钟

css 计数器就是采用 css 给一些 html 元素自动生成编号,比如类似 1.3.2 ,代码如下:

<style type="text/css">
#demo1 ol { counter-reset: section; list-style-type: none; }
#demo1 ol li { counter-increment: section; }
#demo1 ol li:before { content: counters(section, ".") ". "; }
</style>
<div id="demo1">
    <ol>
        <li>进风口的爽肤水
            <ol>
                <li>非进口商的</li>
                <li>非进口商的</li>
                <li>非进口商的</li>
            </ol>
        </li>
        <li>进风口的爽肤水
            <ol>
                <li>非进口商的</li>
                <li>
                    非进口商的
                    <ol>
                        <li>将咖啡色的开发商</li>
                        <li>将咖啡色的开发商</li>
                        <li>将咖啡色的开发商</li>
                        <li>将咖啡色的开发商</li>
                    </ol>
                </li>
                <li>非进口商的</li>
            </ol>
        </li>
        <li>进风口的爽肤水</li>
    </ol>
</div>

16k 15 分钟

封装组件,支持单选,多选,搜索,根据节点 id 默认选中对应的节点,勾选数据事件触发回调

效果图 (会不断更新 和修复一些 BUG 记得回来看看哦)

认真看组件配置属性,特别是传值的时候 defaultProps 配置的展示 key,因为最后有模拟 JSON 数据所以文章有点长

多选效果图:单选效果图:
imgimg

782 1 分钟

# 前言 开发基于 Vite + Vue3 的组件库,多个 .vue 文件需要动态加载! 注意 import.meta.globEager 已经弃用,请使用 import.meta.glob 来代替! # 使用 Glob # 异步方式 代码第 1 行,注意使用两个 **,匹配当前目录及其嵌套的全部子目录下的文件; 代码第 4 行,异步使用 Promise 加载,所以要在 then 中获取真正的组件对象; const modules = import.meta.glob('./src/components/**/*.vue');for (const path in...