AEM中的 Libraries(js、css)

本文介绍如何在Adobe Experience Manager(AEM)中配置客户端库(clientlib),包括创建clientlib节点、设置categories属性以及组织JS和CSS资源。同时,详细讲解了如何创建一个带有验证功能的新组件,通过编写JS代码实现对组件中altText字段的条件性验证。

客户端库允许我们管理客户端代码,包括JS和CSS,并提供调试、缩小、合并和gzip客户端代码的选项。

创建clientlibs节点

  • 转到CRXDE中的项目文件夹(/apps/wknd/clientlibs/),创建一个名为wknd-common的节点,类型为cq:ClientLibraryFolder
    在这里插入图片描述
    在这里插入图片描述
  • 现在我们需要为clientlib添加类别。Categories是一个标识符,用于从内容页面直接包含这个clientlib或将其嵌入到其他clientlib中。我们可以使用这个属性来轻松地对clientlib进行分类,并只加载我们需要的文件。categories属性是多值的,它允许一个库文件夹属于多个类别。将categories属性添加到wknd-common节点。
    在这里插入图片描述在这里插入图片描述
    在这里插入图片描述
  • 在wknd-common文件夹中创建以下结构
    在这里插入图片描述
  • 如你所见,我们已经创建了js和css文件夹(所有js文件将在js文件夹下,所有css文件将在css文件夹下),以及两个文本文件js.txt和css.txt.

创建一个新组件

  • 在项目文件夹中创建一个新组件,如下所示
    在这里插入图片描述
  • 在组件下创建类型为nt:unstructured 名称为 cq:dialog 的一个新节点。现在按照下面的配置创建它的子节点。
    在这里插入图片描述
<?xml version="1.0" encoding="UTF-8"?>
<jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0"
          xmlns:nt="http://www.jcp.org/jcr/nt/1.0"
          jcr:primaryType="nt:unstructured"
          sling:resourceType="cq/gui/components/authoring/dialog">
    <content
            jcr:primaryType="nt:unstructured"
            sling:resourceType="granite/ui/components/foundation/container">
        <layout
                jcr:primaryType="nt:unstructured"
                sling:resourceType="granite/ui/components/foundation/layouts/tabs"
                type="nav"/>
        <items jcr:primaryType="nt:unstructured">
            <tab1
                    jcr:primaryType="nt:unstructured"
                    jcr:title="Properties"
                    sling:resourceType="granite/ui/components/foundation/container">
                <layout
                        jcr:primaryType="nt:unstructured"
                        sling:resourceType="granite/ui/components/foundation/layouts/fixedcolumns"/>
                <items jcr:primaryType="nt:unstructured">
                    <columns
                            jcr:primaryType="nt:unstructured"
                            sling:resourceType="granite/ui/components/foundation/container">
                        <items jcr:primaryType="nt:unstructured">
                            <imageSrc
                                    jcr:primaryType="nt:unstructured"
                                    sling:resourceType="cq/gui/components/authoring/dialog/fileupload"
                                    autoStart="{Boolean}false"
                                    class="cq-droptarget field-bgvalue"
                                    fieldDescription="请上传图像"
                                    fieldLabel="Image"
                                    fileNameParameter="./imageName"
                                    fileReferenceParameter="./imageRef"
                                    id="file-upload-special"
                                    mimeTypes="[image]"
                                    multiple="{Boolean}false"
                                    name="./image"
                                    title="Image"
                                    uploadUrl="${suffix.path}"
                                    useHTML5="{Boolean}true"/>
                            <altText
                                    jcr:primaryType="nt:unstructured"
                                    sling:resourceType="granite/ui/components/foundation/form/textfield"
                                    class="field-prereq"
                                    fieldDescription="请描述图像信息."
                                    fieldLabel="Alt text"
                                    id="alt-special"
                                    name="./altText"
                                    validation-error-msg="This field is required when the Image is set."
                                    validation-prereq=".field-bgvalue img"
                                    validation-prereq-attr="src"/>
                        </items>
                    </columns>
                </items>
            </tab1>
        </items>
    </content>
</jcr:root>


  • 该组件有一个fileupload小部件和一个textfield。我们的目的是对altText文本字段进行控制。我们希望仅当我们在fileupload小部件中生成图像时,才需要altText文本字段。
  • 需要验证,我们必须编写一些JS代码。因此,在js文件夹中创建一个名为validation.js的新文件,并在文件中粘贴以下代码。
$(window).adaptTo("foundation-registry").register(
    "foundation.validation.validator", {
        selector : "#alt-special", // 验证特定的alt字段
        validate : function(el) {
            debugger;
            var $el = $(el);
            var $form = $el.closest('form'); // 获得表单
            var $upload = $form.find("coral-fileupload[name$=image]"); // 找到文件上传小部件
            if ($upload.hasClass('is-filled') && !$el.val()) { // 如果类存在,则返回验证消息
                return "Enter Alt text";
            } else {
                return;
            }
        }
    });
  • 此代码将搜索所需的类,如果找到该类,则验证通过,编辑对话框将被保存,否则不会保存。
  • 现在打开js.txt文件并在其中粘贴以下代码。
#base=js
validation.js

备注:

  • 第一行确定JS文件相对于js.txt的路径

  • 第二行确定所需要加载到JS客户端库中的js文件。我们想要加载的每个JS文件都必须写在这个文件中。

  • 现在打开对话框,上传图像后保存它,但Alt text字段是空的。对话框将不保存并显示验证错误。
    在这里插入图片描述

  • 因此,我们的js被加载调用。类似地,我们可以编写CSS并将其配置在css.txt中。

Clientlib 配置文件

如果您导航到 http://localhost:4502/system/console/configMgr 并搜索Adobe Granite HTML Library Manager并打开它,那么您将看到 Minify、Debug和GZip 等其它配置。
在这里插入图片描述

源码下载地址: https://pan.quark.cn/s/a4b39357ea24 在电磁模拟技术中,CST(Computer Simulation Technology)是一种被广泛采纳的软件工具,它主要用于电磁场、微波、天线以及射频系统的设计工作。本资料将详细分析CST软件中离散端口的具体配置方法,这些方法对于提升仿真结果的精确度和专业水准具有决定性作用。离散端口在CST软件中扮演着模拟信号输入或输出的重要角色,它们构成了仿真模型不可或缺的部分。在配置离散端口时,一个核心的原则是保证端口的方向与网格线保持一致,这是因为这样做能够有效降低计算过程中产生的误差,并确保仿真数据的有效性。如果未能遵循这一指导原则,可能会引发未知的计算问题,进而导致仿真结果失去可靠性。 在CST软件中配置离散端口,通常需要借助“Pick Points”这一功能。通过选择“Pick Edge Center”选项,端口将被设定在模型边缘的中心位置上。然而,这种做法并不总是能够确保端口与网格线保持平行。在某些特定情形下,模型的几何构造可能不允许直接选取一个与网格线平行的边作为端口的安装位置。 为了克服这一挑战,可以采用多种不同的策略。如果模型本身已经包含一条与馈电口平行的边,那么可以直接利用这条边来建立端口,此时CST软件会自动调整端口使其与网格线对齐。另一种可选的方法是,当模型不具备现成的平行边时,用户可以手动构建一个几何结构,比如一个立方体,并使其边缘与馈电口平行。通过这种方式,新建立的几何结构的边缘就可以作为端口的位置,从而确保端口与网格线的平行关系。 在实施上述操作时,必须关注端口尺寸的合理性和物理意义的一致性。端口的尺寸应当依据实际天线馈电部分的尺寸进行适当调整,过大的端口或...
代码下载链接: https://pan.quark.cn/s/a4b39357ea24 【使用TensorFlow进行图像识别】 图像识别作为计算机视觉领域的关键任务之一,其核心在于通过算法解析和理解图像所包含的信息。在此资源中,我们将集中探讨如何借助功能强大的深度学习框架TensorFlow来执行手写数字识别。手写数字识别构成了众多实际应用的基础,例如自动支票处理、光学字符识别(OCR)等场景。 TensorFlow是由Google创建的一个开源库,它主要用于数值运算和机器学习,尤其在深度学习方面表现卓越。其核心优势在于可以构建并训练复杂的神经网络架构,并且在多种硬件环境中实现高效执行,涵盖CPU和GPU平台。 在此实践项目中,我们将运用TensorFlow来构建一个卷积神经网络(CNN)模型,这种架构是处理图像数据的理想选择。CNNs通过模仿人脑视觉皮层的运作机制,能够自主地提取图像中的关键特征,进而达成识别目标。在手写数字识别的特定情境下,这些特征可能涉及笔画的几何形态、走向以及相互间的连接模式。 对于CNN的基础结构,我们需要具备相应的认知,其通常由卷积层、池化层、全连接层以及激活函数等部分组成。卷积层借助滤波器(亦称卷积核)对图像进行扫描,以捕捉局部特征;池化层则用于降低数据维度,同时保留核心信息;全连接层将特征向量映射至各类别的概率分布;而激活函数如ReLU则通过引入非线性元素,使模型能够学习更为复杂的模式。 在此案例中,建议采用MNIST数据集,这是一个广泛用于手写数字识别的标准测试集。该数据集包含60,000个训练样本和10,000个测试样本,每个样本均为28x28像素的灰度图像,代表0到9这十个数字中的某一个。为了训练模型,必须首先加载数据,并...
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

编程秀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值