// ==UserScript== // @name .packed.js で Template literals が正しく扱われない件の回避策 // @description TL;DR: ` のすぐ内側に " or ' を入れる。内部でそれらを使う時はエスケープ。 // ==/UserScript== /* * @title .packed.js で Template literals が正しく扱われない件の回避策 * @description TL;DR: ` のすぐ内側に " or ' を入れる。内部でそれらを使う時はエスケープ。 * @license MIT License * @javascript_url */ /* === まとめ === * バッククォートのすぐ内側に " or ` を入れる (ES5的にはそれらによる文字列リテラル、ES6的にはTemplate literalになる) * 同じ引用符をテンプレート内で使いたい時はエスケープする (ES5的には必要なエスケープ、ES6的にはあっても困らないエスケープになる) (プレースホルダで文字列リテラルを使う時はエスケープできないので、もう片方の引用符で) * 改行もそのまま書いてOK (ES5的にはNGだけどJavaScript::Squishは通る、ES6的にはTemplate literal内なので) (ちなみに .packed.js でも改行がそのまま出力される。@javascript_url では %0D%0A に変換される。) * 余分な引用符の存在は Template literal の評価に影響を与えないので、 評価後に .slice(1, -1) するだけでよい。 */ { let LET_ID = "foo"; alert(`'