Rrule: 如何加载规则?

创建于 2019-06-03  ·  11评论  ·  资料来源: jakubroztocil/rrule

这是一个非常基本的问题,但我没有看到有人在已关闭的问题中提出这个问题,所以我要尝试 - 你如何将rrule.js到浏览器? 我已经尝试将它添加到codepen 中,但尽管尝试了许多不同的要求/导入模块的方法,但我似乎无法让它工作。

即我一直在控制台中看到这个错误
image

我什至尝试将它加载到 observable 中,但似乎也无法正常工作。 欢迎任何帮助,谢谢:)

最有用的评论

嗯,所以我自己从来没有理由直接将 ES6 模块导入浏览器(尽管这可能是一个 UMD 模块),但看起来以下代码适用于 codepen:

// This imports everything in the `rrule` namespace
import "https://jakubroztocil.github.io/rrule/dist/es5/rrule.min.js"

console.log(rrule)

// Create a rule:
const rule = new rrule.RRule({
  freq: rrule.RRule.WEEKLY,
  interval: 5,
  byweekday: [rrule.RRule.MO, rrule.RRule.FR],
  dtstart: new Date(Date.UTC(2012, 1, 1, 10, 30)),
  until: new Date(Date.UTC(2012, 12, 31))
})

// Get all occurrence dates (Date instances):
console.log(rule.all())

所有11条评论

在浏览器中使用 rrule 的方法有很多种。 如果您只想在浏览器中玩弄 / 测试规则,您可以使用类似stackblitz 的东西,它允许您从 npm 导入模块。

您遇到了问题,因为您试图从 codepen 的服务器导入相对文件路径(“rrule”)(虽然我从未使用过 codepen,但我怀疑 codepen 是否已使rrule可用于它在某种程度上是用户)。 如果您不打算自己提供,则需要从 CDN 导入 javascript。

@thefliik ,非常感谢您的评论:)

stackblitz 看起来不可思议。 Codepen 很像 stackblitz,因为它是构建网页的游乐场,让您可以从不同的 CDN 加载脚本。 我已经通过 codepen 的settings对话 > Javascript > 加载了我的脚本,然后输入我的托管脚本的文件路径。

image

我目前在https://s3.amazonaws.com/appforest_uf/f1559527195623x315562171275647800/rrule.min.js托管规则。

这是我通过 a

从“ https://s3.amazonaws.com/appforest_uf/f1559527195623x315562171275647800/rrule.min.js/ ”导入{ RRule, RRuleSet, rrulestr }

我看到您尝试过的代码是正确的 ES6 语法(尽管您的代码看起来可能缺少逗号)。 看起来 S3 正在阻止访问尝试(如果您查看控制台,它会以 403 禁止状态代码进行响应)。

这是一个导入了规则的简单项目: https ://stackblitz.com/edit/js-bbaffe

太奇怪了,S3 肯定是在我的控制台中加载资源
image

据我了解,我不需要加载其他依赖项,对吗(我尝试添加打字稿,但这似乎无关紧要)?

如果我有一个 npm 环境,我会复制你提供的那个可爱的 stackblitz 项目,但不幸的是我仅限于客户端代码:/

根据Google 的说法,文件扩展名对模块很重要。

关于文件扩展名的说明
您可能已经注意到我们为模块使用了.mjs文件扩展名。 在 Web 上,文件扩展名并不重要,只要文件使用 JavaScript MIME 类型text/javascript 。 由于 script 元素上的 type 属性,浏览器知道它是一个模块。

看起来我的文件不是作为text/javascript而是作为application/javascriptapplication/x-javascript 。 这可能是问题吗? 这里的任何人都有一个托管版本的 rrule 以 MIME 类型text/javascript提供它?

嗯,所以我自己从来没有理由直接将 ES6 模块导入浏览器(尽管这可能是一个 UMD 模块),但看起来以下代码适用于 codepen:

// This imports everything in the `rrule` namespace
import "https://jakubroztocil.github.io/rrule/dist/es5/rrule.min.js"

console.log(rrule)

// Create a rule:
const rule = new rrule.RRule({
  freq: rrule.RRule.WEEKLY,
  interval: 5,
  byweekday: [rrule.RRule.MO, rrule.RRule.FR],
  dtstart: new Date(Date.UTC(2012, 1, 1, 10, 30)),
  until: new Date(Date.UTC(2012, 12, 31))
})

// Get all occurrence dates (Date instances):
console.log(rule.all())

太奇怪了,S3 肯定是在我的控制台中加载资源

也许您在计算机上登录了您的亚马逊帐户

这就是我的想法,但不,我可以从隐身模式和无法访问的第二台计算机访问该文件。 如这里所见,我什至尝试从jsdeliver加载脚本,

@zeluspudding你没看到我之前的评论吗?

import "https://jakubroztocil.github.io/rrule/dist/es5/rrule.min.js"在 codepen 上对我有用。

哦,对不起 - 我确实错过了你的评论。 是的! 它确实有效:)

非常感谢! 我真的很感谢所有的帮助。

我建议使用您的代码片段更新入门指南(对于直接将 ES6 模块导入浏览器的情况)。 如果您愿意,我可以提交拉取请求

对于任何有兴趣在 observable 中使用 rrule 的人,请访问此链接

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

Prinzhorn picture Prinzhorn  ·  15评论

agordeev picture agordeev  ·  16评论

grigio picture grigio  ·  7评论

anthwinter picture anthwinter  ·  11评论

jimmywarting picture jimmywarting  ·  9评论