我努力了:
import 'maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css';
但它会产生错误。如何将 CDN 链接导入到我的app.js
文件中?
我努力了:
import 'maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css';
但它会产生错误。如何将 CDN 链接导入到我的app.js
文件中?
您可以在 html 文件中包含这些行:
<script src="https://code.jquery.com/jquery-3.1.1.slim.min.js" integrity="sha384-A7FZj7v+d/sdmMqp/nOQwliLvUsJfDHW+k9Omg/a/EheAdgtzNs3hpfag6Ed950n" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/tether/1.4.0/js/tether.min.js" integrity="sha384-DztdAPBWPRXSA/3eYEEUWrWCy7G5KFbe8fFjk5JAIxUYHKkDx6Qin1DkWx51bBrb" crossorigin="anonymous"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.6/js/bootstrap.min.js" integrity="sha384-vBWWzlZJ8ea9aCX4pEW3rVHjgjt7zpkNpZk+02D9phzyeVkE+jo0ieGizqPLForn" crossorigin="anonymous"></script>
或者,您可以导入包含导入指令的本地样式表文件。请参阅以下示例:
应用程序.js
import './App.scss';
应用程序.scss
@import url('https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css');
你没有在你的 JS 中捆绑 CDN 的东西,这违背了将它放在 CDN 上的目的:)。如果这是 JS,我会要求你使用externals,但对于 CSS,你可以使用https://github.com/jso0/html-webpack-cdn-plugin代替。
我想我们可以写一些这样的函数
const fetchJsFromCDN = (src, externals = []) => {
new Promise((resolve, reject) => {
const script = document.createElement('script')
script.setAttribute('src', src)
script.addEventListener('load', () => {
resolve(externals.map(key => {
const ext = window[key]
typeof ext === 'undefined' && console.warn(`No external named '${key}' in window`)
return ext
}))
})
script.addEventListener('error', reject)
document.body.appendChild(script)
})
}
fetchJsFromCDN('//cdn.jsdelivr.net/npm/eruda', ['eruda']).then(([eruda]) => eruda.init())
如果没有类似的功能require
,CDN 源可能会注入对象,window
因此我们可以通过给定的名称获取它
CSS
用这种方式导入文件会更容易
我不知道它是否适用于这种情况,但我使用以下方法加载 CDN 源以备不时之需。仅当页面上出现相应元素时,我才使用一些库:
const lazyLoadFromCDN = (callback: Function) => {
const mathJax = document.createElement('script');
mathJax.setAttribute('src', 'https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-chtml.js');
mathJax.addEventListener('load', () => callback());
document.head.appendChild(mathJax);
}