Javascript 从URL而不是在<;中导入API;头>;

Javascript 从URL而不是在<;中导入API;头>;,javascript,ecmascript-6,Javascript,Ecmascript 6,通过向头部添加脚本标记,可以使用许多web API: <html lang="en"> <head> <script src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&libraries=places"></script> </head> <body> <div id="root" style="height: 100%">

通过向头部添加脚本标记,可以使用许多web API:

<html lang="en">
<head>
  <script src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&libraries=places"></script>
</head>
<body>
  <div id="root" style="height: 100%"></div>
</body>
</html>
退回的东西该怎么办?把它贴在头上

更新:

错误:
ReferenceError:未定义google

我是否在错误的时间加载脚本

const loadScript = (src) => {
  const script = document.createElement("script")
  script.type = "text/javascript"
  script.src = src
  document.getElementsByTagName("head")[0].appendChild(script)
}


class Geosuggest extends React.Component {

  constructor(props) {
    super(props)
    loadScript('https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&libraries=places')
  }

  componentWillMount() {
    this.autocompleteService = new google.maps.places.AutocompleteService();
  }

}

html:


对救援作出反应

class Geosuggest extends React.Component {
  componentWillMount() {
    this.autocompleteService = new google.maps.places.AutocompleteService();
  }
}

const wrap = () => <div>
  <Helmet script={[{"src": GoogleMapsApiUrl}]}/>
  <Geosuggest />
</div>

export default wrap
类geosugest扩展React.Component{
组件willmount(){
this.autocompleteService=新的google.maps.places.autocompleteService();
}
}
常量换行=()=>
导出默认换行

你也可以这样做,ES6不会改变在HTML中添加脚本的方式。我的意思是在JS.Uhm中完成所有操作,然后用JS插入脚本标记?您无法使用客户端JS获取跨源资源,而且在服务器端获取它似乎没有多大意义?您似乎正在使用
require
,这意味着require.js的一些实现?因此您想重新发明轮子,因为它“似乎不合适”?这里是否解决了实际问题?“插入一个带有JS的脚本标记”很有意义,但缺少明显的问题。Scott,当使用分形项目结构时,将一个组件所需的代码以html文件的方式放在该组件的目录范围之外是非常不合适的。
<div id="map_canvas" style="height:200px"></div>
function loadScript(src, callback) {

  var script = document.createElement("script");
  script.type = "text/javascript";
  if (callback) script.onload = callback;
  document.getElementsByTagName("head")[0].appendChild(script);
  script.src = src;
}


loadScript('http://maps.googleapis.com/maps/api/js?v=3&sensor=false&callback=initialize',
  function() {
    log('google-loader has been loaded, but not the maps-API ');
  });


function initialize() {

  log('maps-API has been loaded, ready to use');
  var mapOptions = {
    zoom: 8,
    center: new google.maps.LatLng(-34.397, 150.644),
    mapTypeId: google.maps.MapTypeId.ROADMAP
  };
  map = new google.maps.Map(document.getElementById('map_canvas'),
    mapOptions);
}

function log(str) {
  document.getElementsByTagName('pre')[0].appendChild(document.createTextNode('[' + new Date().getTime() + ']\n' + str + '\n\n'));
}
class Geosuggest extends React.Component {
  componentWillMount() {
    this.autocompleteService = new google.maps.places.AutocompleteService();
  }
}

const wrap = () => <div>
  <Helmet script={[{"src": GoogleMapsApiUrl}]}/>
  <Geosuggest />
</div>

export default wrap