云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

轻量服务器_阿里云控制台登录_年度促销

小七 141 0

轻量服务器_阿里云控制台登录_年度促销

Requirejs是一个开源JavaScript模块加载器,主要用于改进脚本文件加载时间和简单地添加外部库。例如,通常所有声明的脚本对象(贡献.xml)将在应用程序启动时预先加载。Requirejs使SDK开发人员能够按需加载库。这个简短的介绍就足够了,因为我的目标是展示如何将库集成到DesignStudio扩展中。

当您在阅读《开发人员指南》之后立即开始编码时,您很可能会尝试通过将外部库放置在SDK文件夹结构中并在您的应用程序中引用它们来加载它们贡献.xml. 到目前为止还不错,但是当你打开你最喜欢的浏览器的开发工具时,你可能会注意到一条来自DesignStudio的内置requirejs插件的错误消息:不匹配的ANONYMOUS DEFINE()模块(这个问题并不适用于所有的库,但是它太广泛了,现在无法解释所有的可能性)。直到最近,这还不是真正的问题,因为errow只在devel模式下显示,前提是您确保所有外部库都以正确的顺序加载。但是IE开始将这个requirejs错误作为一个标准的DesignStudio错误公开。这时我认为是时候解决这个问题了。

下面的代码示例是受Mike Howles和Karol Kalisz的启发,我与他们合作开发了SCN DesignStudio SDK库。我选择了传单和OpenStreetMap来显示集成。

首先你要做的是,从数据库中删除所有的库贡献.xml要使用requirejs加载的文件。然后把你的代码包起来组件.js如下:

第一节在运行时(本地和平台模式)定位SDK文件夹结构,以便稍后处理外部库文件(第22-27行)。下一节配置按需加载过程的requirejs(第30-44行)。请注意,文件引用缺少"js"文件扩展名(默认情况下,Requirejs将提供它)。关于"垫片"部分的简短说明。传单提供者是一个传单插件,负责加载免费提供的OpenStreetMap图块。这个插件依赖于全局传单变量"L",它在库加载完成时公开。因此,我们需要为这个插件定义一个依赖项,确保库加载顺序和全局变量声明对于插件是正确和透明的。JavaScript方法调用sdkReqs实际上加载定义的库。请注意,我没有暴露"prv"的应用程序代码。但是您可以在第46行中为函数闭包指定一个附加变量,物联网技术,或者将库加载到如下变量中:var prv=require("prv");

最后您只需确保在顶部打开的所有函数闭包再次关闭(第53-54行)。现在,乏味的不匹配匿名定义错误应该不会再出现了

使用requirejs玩得开心,并且随时可以问很多后续问题。

在GitHub上找到完整功能的示例项目和源文件:https://github.com/MartinPankraz/DesignStudioSDK-Components

您的

马丁

参考资料:

•     https://github.com/org-scn-design-studio-community/sdkpackage

嘿,服务器租用,马丁,

很好的帖子,我希望这有助于消除一些神秘的需求。我不断学习新的东西,云市场,它可以做自己!

谢谢分享

很棒的东西,我现在有一些学习要做

嗨,马丁,

正确的是,RequireJS模块不能用标签加载-因为你会得到匿名定义。但是,与其在SDK处理程序中复制所有这些特定于实现的东西,不如使用内置的sap.zen.Dispatcher文件.实例.require函数,正如designstudio1.4sdk中所描述的那样。

这可能会让您将主代码更改为回调,但我相信这在几乎所有情况下都是可能的,e、 g.

sap.designstudio.sdk.组件.子类("com.sap.sample示例.coloredbox.coloredbox",什么是物联网,function(){

var that=this;

这个.init=函数(){

sap.zen.Dispatcher文件.实例.require(单张"],函数(l){

//您是否使用所需的模块在这里进行渲染。

});

});

};

谢谢,

雷纳。

嘿雷纳,

实际上我试过使用你建议的"需要来电"sap.zen.Dispatcher文件但由于缺乏路径配置灵活性(外部CDN路径和回退路径)和填充配置,所以我提出了"sdkReqs"的"hack/workaround",它基本上实现了sap.zen.Dispatcher文件的require call(暂停、require callback,恢复)以便我们可以对require设置有更多的控制禅宗调度员需要包装器函数,数据和大数据的区别,如果我遗漏了什么,那就太好了。

问题是我们可能需要更改的内部功能sap.zen.Dispatcher文件.要求,例如1.5。因此,克隆它将导致不兼容。

正确的做法是,您不能使用垫片-并且您将坚持相对于调用处理程序的固定路径配置。但这是否会妨碍您成功使用require模块?E、 g.Shim可以在您的回调中用一个小的"window.L=L"来模拟。

公平地说,从1.4和1.5开始,这种风险已经发生在我们身上,正如您在这里所描述的:DesignStudio 1.5SDK中"不兼容更改"下的新功能,无论我们使用建议的解决方法还是不建议的解决方法。

因此,这是我愿意接受的考虑点/风险,以便充分利用我们目前所知的要求以及未来可能发生或不发生的情况