gpt4 book ai didi

javascript - 如何在 Ektron v9 中使用 JS.RegisterJSInclude()?

转载 作者:行者123 更新时间:2023-11-28 01:33:02 26 4
gpt4 key购买 nike

我有一个小部件,其子文件夹包含一些 css 和 JS。我想通过小部件而不是外部注册这些文件。

首先,我把它们放在哪里。 page_load、预渲染、初始化???

这是我的注册脚本函数,我尝试从页面加载和预渲染中调用它,但没有成功。

  private void RegisterScripts()
{
var api = new CommonApi();
var sitepath = api.SitePath;
Css.RegisterCss(this, sitepath + "widgets/mywidget/mything.css", "MyCSS");
JS.RegisterJSInclude(this, sitepath + "widgets/mywidget/thing.min.js", "MyJS1");
JS.RegisterJSInclude(this, sitepath + "widgets/mywidget/otherthing.js", "MyJS2");
JS.RegisterJSInclude(this, sitepath + "widgets/mywidget/morethings.js", "MyJS3");
}

我很确定我已经完成了这里列出的所有操作: http://documentation.ektron.com/cms400/v8.50/mobile_help/Advanced/Content/Widget%20Chapter/Customizing%20Widgets/Customizing_Widgets.htm

最佳答案

我不记得是在8.5之后还是之前,但是最新的Register方法使用包进行注册。打包 CSS 和 JavaScript 可以实现更好的缓存和资源利用率,并有助于确保过去因“ key ”中的拼写错误而最终注册多个 EktronJS 副本的日子已经一去不复返了。它还将多个脚本和 CSS 请求聚合为单个请求以提高性能。

future 注册脚本和 CSS(包括 v9)的新方法是使用 Ektron.CMS.Framework.UI 方法。包允许您创建可重用的 block ,然后可以通过一次调用在多个位置注册这些 block 。如果其中的任何文件已经注册,则不会再次包含它们(在过去您会遇到欺骗)。但是,您仍然可以注册单个脚本,并且有一种方法可以这样做。

string sitePath = new Ektron.Cms.CommonApi().SitePath;
Ektron.Cms.Framework.UI.JavaScript.Register(this, sitePath + "/widgets/myWidget/js/script.js");

当您使用打包方法时,您可以选择使用内置资源或自定义资源。最大的优点是重复利用。例如,如果您在 CustomPackages 类中创建小包,并且想要组合项目,则可以,并且任何已被其他小部件或项目引用的项目将仅包含一次。它还允许您创建框架/模型来创建和快速部署 future 的小部件。此方法的一个简单示例:

string sitePath = new Ektron.Cms.CommonApi().SitePath;
Ektron.Cms.Framework.UI.Package widgetRes = new Ektron.Cms.Framework.UI.Package()
{
Components = new List<Ektron.Cms.Framework.UI.Component>()
{ // all built-in ektron packages
Ektron.Cms.Framework.UI.Packages.EktronCoreJS,
Ektron.Cms.Framework.UI.Packages.jQuery.jQueryUI.Datepicker,
Ektron.Cms.Framework.UI.Packages.jQuery.jQueryUI.Dialog,
Ektron.Cms.Framework.UI.Packages.Ektron.JSON,
Ektron.Cms.Framework.UI.JavaScript.Create("/widgets/myWidget/js/script.js"), // custom JS
Ektron.Cms.Framework.UI.Css.Create(sitePath+"/widgets/myWidget/css/myStyles.css") // custom CSS
}
};
widgetRes.Register(this); // register everything
widgetRes.RegisterJS(this); // register JS only
widgetRes.RegisterCss(this); // register CSS only

Bill 提供的链接是一个自定义库,它建立在 Ektron 构建的打包之上,并允许您在注册方法的位置、可用的包以及如何处理缓存方面有更多的自由。 Ektron 方法始终在页面头部包含脚本,因此自定义库允许您指定一个占位符之类的控件来注册它们。然而,它是建立在现有 Ektron 封装结构之上的,并且新的封装和注册方法最终是您想要使用的而不是解决方法。

关于javascript - 如何在 Ektron v9 中使用 JS.RegisterJSInclude()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21884466/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com