如何在 React 项目中使用 CDN 导入
How to use CDN Imports in a React-Project
我的项目基于create-react-app,现在我想使用Here Maps。他们的文档建议使用 CDN 加载模块,但我找不到任何 NPM 包。我现在的问题是:如何正确加载 CDN?
我知道可以将 CDN link 放入我的 index.html 文件中,但我认为这似乎不是正确的解决方案。
您可以通过编程方式添加 JS 脚本标签。这是一个例子
function loadScript( {src, id, callback} ) {
if(id && document.getElementById(id)){
return; // don't accidentally re-add
}
const script = document.createElement( 'script' );
if(callback){
script.onload = callback;
}
if(id){
script.setAttribute( 'id', id );
}
script.setAttribute( 'src', src );
document.body.appendChild( script );
}
使用示例
componentDidMount(){
loadScript({
src: 'http://js.api.here.com/v3/3.0/mapsjs-core.js',
id: 'script-mapsjs-core',
callback: () => this.setState({mapsjsCoreLoaded: true})
});
}
在尝试了一些东西之后,我找到了这个用例的解决方案。
我安装了这个包 "html-webpack-externals-plugin".
您所要做的就是阅读您的用例的文档。 "CDN-Use-Case"也有说明。
为了从外部 JS-API 访问函数,您必须在函数前面放置一个 "window.",例如:
const map = new window.H.Map();
希望这对某人有所帮助!
我的项目基于create-react-app,现在我想使用Here Maps。他们的文档建议使用 CDN 加载模块,但我找不到任何 NPM 包。我现在的问题是:如何正确加载 CDN?
我知道可以将 CDN link 放入我的 index.html 文件中,但我认为这似乎不是正确的解决方案。
您可以通过编程方式添加 JS 脚本标签。这是一个例子
function loadScript( {src, id, callback} ) {
if(id && document.getElementById(id)){
return; // don't accidentally re-add
}
const script = document.createElement( 'script' );
if(callback){
script.onload = callback;
}
if(id){
script.setAttribute( 'id', id );
}
script.setAttribute( 'src', src );
document.body.appendChild( script );
}
使用示例
componentDidMount(){
loadScript({
src: 'http://js.api.here.com/v3/3.0/mapsjs-core.js',
id: 'script-mapsjs-core',
callback: () => this.setState({mapsjsCoreLoaded: true})
});
}
在尝试了一些东西之后,我找到了这个用例的解决方案。 我安装了这个包 "html-webpack-externals-plugin".
您所要做的就是阅读您的用例的文档。 "CDN-Use-Case"也有说明。
为了从外部 JS-API 访问函数,您必须在函数前面放置一个 "window.",例如:
const map = new window.H.Map();
希望这对某人有所帮助!