新社区网站

通常情况下,你会在正确的位置,但我们最近推出了一个全新的社区网站…为了社区,靠社区。

耶……带我去社区!

社区博客是社区成员的个人观点,绝不是DNN公司或DNN平台的官方立场。这是一个表达个人对DNNPlatform、社区及其生态系统的想法的地方。你有有用的信息,你想分享与DNN社区的特色文章或博客?如有,请联系

社区博客的使用由我们的社区博客指南-请在评论或张贴前阅读。


在DNN中使用JavaScript库

2013年12月,DNN平台发布了7.2版本,其中包含了一种新的扩展类型——JavaScript库。在Engage,我们发现这在许多情况下对我们非常有用,我们一直在投资创建一个坚实的库体,但我不认为许多其他开发人员或主题设计师意识到这一点,以及他们如何利用它。

JavaScript库包看似简单。在某种程度上,它们只是打包一个JavaScript文件。然而,这个包的存在提供了一些直接的好处:

  1. DNN允许多个版本的JavaScript库包被安装,所以不同的扩展可以请求不同的版本
  2. 但是,如果扩展不同在同一页上请求不同的版本,最高的版本获胜减少脚本冲突
  3. 该库定义了关于JavaScript库的元数据,例如它包含在文档的什么地方(如。html5shiv自动包含在页面的< >头,但大多数其他库可以等到> < /形式,加快初始渲染时间)
  4. 此外,一个CDNURL可以包含在JavaScript包中,允许主机管理员切换并受益于脚本的全球分布式版本(这还提供了域分片).与此同时,还要测试一个JavaScript表达式如果CDN无法访问,那么DNN可以回退到脚本的本地版本。

那么,我如何在我的DNN网站上获得这些美妙的福利呢?第一步是检查关于JavaScript库的wiki文章的用法部分,看看在自己的扩展中使用JavaScript库是什么样子。一旦准备好使用它们,就需要让它们对您可用。Engage已经为我们正在使用的库创建了一些包(在锻炉上看到他们),但我确信这并不包含你可能在你的网站或扩展中使用的所有库。如果你有一本我们的JavaScript库在GitHub上,其中有一个PowerShell脚本,用于根据来自的信息生成一个包鲍尔.联系推特上的我如果您有兴趣贡献更多的软件包。

当网站中越来越多的组件使用JavaScript库时,JavaScript库的真正好处才开始显现。让我或其他在DNN或MVP小组工作的人知道你需要更好地利用DNN提供的这些功能,这样我们就可以为你的web应用程序创建最好的平台。如果你有兴趣帮忙,在Engage的GitHub存储库中的README有一个路线图部分有一些想法。

评论

乔纳森细胞株
库系统仍然不能处理多文件依赖关系,是吗?我想要使用这个特性的大多数库都有一个css文件。

许多库还包含一个核心库和额外的可选文件。如果不处理这个问题,必须为每个论文创建一个单独的库,这似乎是一件笨拙的事情。
乔纳森细胞株 2015年1月23日星期五下午5:39 (链接)
布莱恩公爵
我完全同意,当这些库可以轻松地将CSS与JavaScript文件打包在一起时将会更好;然而,我认为即使你自己包含CSS,你仍然可以从JavaScript库中获得好处,即使你没有从CSS中获得额外的好处。

你指的是Bootstrap之类的东西,它有一个单独的JS文件,其中包含许多不同的插件。你可以只包含一个插件,或者一个包含所有插件的文件。在这种情况下,我认为每个单独的插件都有一个JavaScript库,然后,也许,一个库可以代表所有这些(参见https://github.com/EngageSoftware/DNN-JavaScript-Libraries/releases/tag/jQuery.cycle_2.1.5的例子;JavaScript库代码可以更好地处理这个问题,但它可以工作)。你的问题仅仅是很难为每个插件创建一个包吗?还是别的什么?

谢谢你的反馈,我很感激让更多的人考虑这些。
布莱恩公爵 2015年1月23日星期五下午5:49 (链接)
乔纳森细胞株
我认为更像AngularJs,它有核心库angular.js,但有版本相关的插件,如angular-sanitize或angular-route

我不确定它是否有意义,为每个单独的文件创建一个包,而不是一个包,可以包括他们所有。(假设你还不能这么做)
乔纳森细胞株 2015年1月23日星期五下午6:10 (链接)
布鲁斯·比尔
我也一直在尝试使用这个特性,但由于缺乏对css和细粒度脚本文件的支持而感到沮丧。
布鲁斯·比尔 2015年1月24日星期六下午12:01 (链接)
布莱恩公爵
所以,这只是一个包装问题,还是你认为你与API的交互将会有所不同?我们绝对可以创建一个包含许多JS库的压缩包(我不知道为什么我没有想过用jQuery来做这件事。cycle2例子);它只是一个包含许多包元素的清单。这听起来像是你要找的吗?

@Bruce和@jsheely,你能给我一个想法,你想看到CSS文件包括吗?我们将添加CSS库扩展类型,还是将CSS文件与JavaScript库关联?它是自动包含在页面上,还是您会明确地请求它?
布莱恩公爵 2015年1月26日星期一上午11:23 (链接)
乔纳森细胞株
在理想的情况下,我希望看到这样的API。然后,资源包只需要允许这种类型的API。

1.加载整个包。如果有10个资源添加到清单,它将加载所有10 (css,javascript)
ResourceManager.Load(“AngularJS”);

2.加载一个特定的版本。仍然会加载与此版本包相关的所有文件。
ResourceManager.Load(“AngularJS”、“1.3”);

3.从资源包中加载特定文件。而不是加载所有东西,你只得到你想要的。
ResourceManager.Load(“AngularJS”、“1.3”、“角”);
ResourceManager.Load(“AngularJS”、“1.3”、“angular-sanitize”);

我可以在重载中看到一些额外的灵活性,可能只加载所有CSS文件或所有Javascript文件。我不喜欢这种重载的可变顺序/输入,但我认为它表达了我的想法。
乔纳森细胞株 2015年1月26日星期一上午11:41 (链接)
马克。麦卡沃伊
如果你可以输入一个GitHub url,其中包含一个维护的常用库列表,你可以将其安装到DNN中,那就太好了。有点像NuGet为Visual Studio所做的。
这将使添加所有这些公共库变得轻而易举。

@jsheely我很喜欢关于如何用多个文件/css/包加载库的想法
马克。麦卡沃伊 2015年1月26日,星期一,中午12:30 (链接)
布莱恩公爵
@Mark熔炉不为DNN提供这个吗?

@jsheely如果我要创建一个angular包,它没有自己的JS文件,但依赖于"angular-core"和"angular-sanitize",我可以调用JavaScript.RequestRegistration("angular"),并获得与该包相关的所有资源。对我来说,这比必须从包中传递特定文件要好得多。这是你想要的吗,还是我错过了?

因此,我们需要能够定义CSS库,并定义不同客户端资源库类型之间的依赖关系。然后是一个统一的API,除了JavaScript API。声音对吧?
布莱恩公爵 2015年1月27日星期二下午5:17 (链接)
丹尼尔·梅特勒
@Brian
谢谢你让这些问题浮出水面。我们在这方面遇到了很多问题,因为在尝试创建现成的应用程序时,它非常复杂。例如,将脚本与应用程序打包在一起,以确保应用程序工作-如果没有其他模块或皮肤恰好在我们的应用程序做一些事情之前对页面做一些事情。

问题是,只有每个人都使用它,它才有效。否则就会失败。我正在考虑组装dnn -最佳实践,这听起来像一个必须有的!
丹尼尔·梅特勒 2015年1月30日星期五上午5:21 (链接)

评论形式

只有注册用户才能发表评论。

NewsArchives


艾德森·奥利维拉(22岁)
亚历克·惠廷顿(11岁)
亚历山德拉·戴维斯(3)
亚历克斯·雪莉(10岁)
安德鲁·霍弗林(3)
安德鲁·纳斯(30岁)
安迪·特里巴(1)
安东尼·格伦赖特(5岁)
安东尼奥·沙古里(28岁)
阿什·普拉萨德(37岁)
本·施密特(1)
本杰明·赫尔曼(25岁)
伯努瓦·萨顿(9)
贝丝·菲尔博(12岁)
比尔·沃克(36岁)
鲍勃·克鲁格(5)
Bogdan Litescu (1)
布莱恩·杜克斯(2)
布莱斯·雪(1)
布鲁斯·查普曼(20岁)
布莱恩·安德鲁斯(1)
卡萨尔·康诺利(55岁)
查尔斯·纳斯(163)
克里斯·哈蒙德(213岁)
克里斯·帕特拉(55岁)
克林特·帕特森(108岁)
Cuong Dang(21岁)
丹尼尔·巴塞洛缪(2)
丹尼尔·梅特勒(181岁)
丹尼尔·瓦拉达斯(48岁)
戴夫·巴克纳(2)
大卫·波因德克斯特(12岁)
大卫·罗德里格斯(3)
丹尼斯·萧(1)
道格·豪厄尔(11)
埃里克·范·巴列戈伊(30岁)
恩斯特·彼得·塔明加(80岁)
弗朗西斯科·佩雷斯·安德烈斯(17岁)
杰夫·巴洛(12岁)
乔治·阿拉特拉什(12)
吉福德·沃特金斯(3)
吉尔·勒·小猪(3)
伊恩·罗宾逊(7岁)
以色列·马丁内斯(17岁)
简·布隆奎斯特(2)
简·乔纳斯(3)
Jaspreet Bhatia (1)
珍妮·梅里菲尔德(6岁)
乔·布林克曼(274)
约翰·米切尔(1)
乔恩·亨宁(14岁)
乔纳森·希利(4)
乔丹·库珀史密斯(1)
约瑟夫·克雷格
侃妈(1)
凯万·贝吉(3)
凯利·福特(4岁)
肯·格里尔森(10岁)
凯文·施赖纳(6岁)
利·波波特(31岁)
洛林·杨(60岁)
马利克·汗(1)
马特·拉特利奇(2)
马提亚斯·施罗曼(16岁)
毛里西奥Márquez (5)
迈克尔·多克西(7岁)
迈克尔·托比什(3)
迈克尔·华盛顿(202岁)
米格尔·加特梅坦(3)
迈克·霍顿(19岁)
米切尔·塞勒斯(40岁)
内森·罗孚(3)
Navin V Nagiah (14)
Néstor Sánchez (31)
尼克·卡利亚尼(14岁)
奥利弗·海因(1)
帕特里西奥·f·萨利纳斯(1)
帕特里克·瑞恩(1)
彼得·唐克尔(54岁)
菲利普·比德尔(135岁)
菲利普·贝克(4)
理查德·大仲马(22岁)
罗伯特·J·柯林斯(5)
罗杰·塞尔温(8)
鲁本·洛佩兹(1)
瑞恩·马丁内斯(1)
Sacha Trauwaen (1)
Salar Golestanian (4)
桑杰·梅赫罗特拉(9)
斯科特·麦卡洛克(1)
斯科特·施莱西尔(11)
斯科特·威尔金森(3)
斯科特·威尔海特(97岁)
塞巴斯蒂安·利乌波尔德(80岁)
肖恩·沃克(237)
肖恩·梅哈菲(17岁)
斯蒂芬·卡尔曼(12岁)
斯蒂芬·坎普伊斯(12岁)
史蒂夫·法比安(31岁)
史蒂文·费舍尔(1)
蒂莫·布鲁梅尔霍夫(24岁)
托尼·亨里奇(3)
Torsten Weggen (3)
第谷·德·沃德(4)
Vicenç Masanas (27)
文森特·阮(3)
维塔利·科扎达耶夫(6岁)
威尔·摩根威克(40岁)
威尔·斯特罗尔(180岁)
威廉·塞弗伦斯(5)
什么是液体含量?
找出
什么是液体含量?
找出
什么是液体含量?
找出
Baidu
map