支えなくて良い技術を支える技術
2018-12-12 BIT VALLEY -INSIDE- Vol.4deprecated
, obsoleted
な技術
例えば
TLS 1.0/1.1
のサポート停止Android 2.x - 4.x
大人の事情でまだまだ支えている
{
"browserslist": [
// Android 2.1 以上に最適化
"Android >= 2.1",
// iOS 8 以上に最適化
"iOS >= 8",
]
}
ターゲットブラウザに準じた変換が可能
export default class Human {
constructor(name) {
this.name = name || "Tom";
}
eat(food) {
console.log(`${this.name} eats ${food}`);
}
}
こんなのが
exports.__esModule = true;
var Human = (function() {
function Human(name) {
_classCallCheck(this, Human);
this.name = name || "Tom";
}
Human.prototype.eat = function eat(food) {
console.log(String(this.name) + " eats " + String(food));
};
return Human;
})();
exports.default = Human;
だがしかし。
このままでは
Android 2 系, 4.0 系までフォローできない
これでもう大丈夫やろ…(;´∀`)
まじかよ…(;´∀`)
object
のプロパティが
予約語となる場合エラーとなる...etc
// 下記の構文がエラーとなる
var obj = { class: true };
var obj.class = true;
// こうしないとだめ
var obj = { "class": true };
var obj["class"] = true;
ファイルサイズ膨れ上がってきたんだが…(;´∀`)
ここまでやったんならさすがにもう大丈夫やろ…(;´∀`)
Uncaught TypeError: Cannot assign to read only property '__esModule' of #<Object>
なにこれ…(;´∀`)
回避パッチで何とかなりそう
// Android 4.x support
var defineProperty = Object.defineProperty;
Object.defineProperty = function (exports, name) {
if (name === '__esModule') {
exports[name] = true;
return;
}
return defineProperty.apply(this, arguments);
};
全身ちぎれて血まみれになりながらまとめた