在浪费了大量的时间在如何导入jQuery上之后,我在HTML中找到了以下两种方法:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
具有本地路径或CDN的IN JS:
var script = document.createElement('script');
script.src = 'https://code.jquery.com/jquery-3.4.1.min.js';
script.type = 'text/javascript';
document.getElementsByTagName('head')[0].appendChild(script);
但不幸的是,上述两种方法在LWC中都不起作用,并且没有关于如何做同样事情的文档。
下面的方法在我的index.html页面中很好地将jQuery导入我的lwc项目。
<script src="./resources/js/jquery-3.5.1.min.js"></script>
我也浪费了这么多的时间在如何导入CSS的lwc,因为有没有关于导入第三方CSS也可用的文档,但一些我如何管理导入CSS使用下面的代码
constructor() {
super();
const styles = document.createElement('link');
styles.href = './resources/css/bootstrap.css';
styles.rel = 'stylesheet';
this.template.appendChild(styles);
}
所以我尝试了一些类似的方法来导入JS,这在控制台日志中没有给予任何错误,但同样的方法根本不起作用,在构造函数和connectedCallback中都尝试了,但没有成功。
connectedCallback() {
const jq = document.createElement('SCRIPT');
jq.src = './resources/js/jquery-3.5.1.min.js';
jq.type = 'text/javascript';
this.template.appendChild(jq);
}
如果任何人有任何关于如何在开源LWC中导入JS库的想法,请让我知道,将非常感谢您的帮助。
2条答案
按热度按时间cgyqldqp1#
我知道现在回答OP问题为时已晚,但Salesforce会阻止第三方脚本引用,即使它已添加到CSP受信任的站点。他们指出,从本文开始,您必须手动下载并作为静态资源上传。
框架的内容安全策略要求必须将外部JavaScript库上载到Salesforce静态资源。有关静态资源的详细信息,请参阅Salesforce联机帮助中的"静态资源"。
来源:developer.salesforce.com
muk1a3rh2#
我们需要做的第一件事是在静态资源中添加JQuery JS文件。静态资源应该如下所示:
JQuery Static Resource
在LWC(Lightning Web组件)中包含JQuery
在JS控制器中,我们首先需要导入loadScript()方法
lightning/platformResourceLoader模块。如果我们想包含一个外部CSS文件,我们也可以包含loadStyle方法。
导入我们之前创建的静态资源。检查这个实现以在Lightning Web Component中包含静态资源。
最后,在renderedCallback方法中,调用我们之前导入的loadScript,并传递对当前模板(this)和静态资源的引用。此方法返回Promise。如果Promise已解析,则将调用then()函数。如果出现错误,则将执行catch()函数。我们使用renderedCallback是因为我们希望在加载组件并在UI上呈现后加载脚本。
现在,要访问Lightning Web Component中的JQuery方法,有一些陷阱。理想情况下,有多种方法调用JQuery方法。最常见的方法如下:
这将隐藏class ="className"的元素。但是在Lightning Web Component中,我们必须像下面这样使用它:
就这样,我们只需要使用queryLocator引用元素,然后就可以调用JQuery方法了。
在这里,我使用了slideToggle()和animate()JQuery方法来添加一些动画。