新手问题 现在 Rails 怎么写 JavaScript 的 template literals?

cqcn1991 · 2017年05月07日 · 最后由 xfstart07 回复于 2017年05月08日 · 1685 次阅读

因为涉及到地图,所以要在 js 里写一个 marker 的 html template

比如下图里面的 marker

现在写来是这样子,非常变扭

var arrayLength = bookGeoInfoArray.length;
for (var i = 0; i < arrayLength; i++) {
  var bookGeoInfo = bookGeoInfoArray[i];
  var myIcon = L.divIcon({
    className: 'map-icon',
    html: '<div class="book-num ' +  bookGeoInfo.marker_id + '">'+ bookGeoInfo.number + '</div>'+
    '<h6 class="item-info">'+bookGeoInfo.item+'</h6>'
  });
  L.marker(bookGeoInfo.position, {icon: myIcon}).bindPopup("I am a red leaf.").addTo(mymap);
}

貌似现在 ES6 可以写 template literals, 不需要再用这种 + 号连接了。

查了一下,只有以前的一些解决方案,不过最近 Rails 不是发 5.1 了?不知道现在应该怎么解决这个问题?

你用 webpacker 管理 js 的话,直接用 `${}` 就行了,自带 babel-loader 会转换的

saiga 回复

主要是看到 webpack 还不是默认选项,不知道官方推荐不推荐....

如果不使用 webpack,可以添加 Gem sprockets-es6 来支持 es6 语法,不过我觉得应该 webpack 是趋势了

CoffeeScript

xfstart07 回复

可以用 sprockets 的 4.0.0.beta4 版本,那个 sprockets-es6 gem 说明就是为 4.0 做一些技术验证的,不过话说 Rails 宣布拥抱 JS 之前 sprockets 的迭代慢很多了,4.0 难产有两年了

jasl 回复

确实很慢,我用 sprockets-es6 都一年多了,sprockets 兼容 ES6 还是 bete 版😅

需要 登录 后方可回复, 如果你还没有账号请 注册新账号