16/09/03 20:22:54.41 N47o0j5/.net
>>293
>>babelを使うと古いブラウザを切り捨てるタイミングを
>>自由にコントロールできる。
いやー一年前まではそう思ってましたよ。
上でも書いたけれど、君の発言を見てると一年前二年前の若い自分を思い出す。
でもそうじゃなかったから使ってないの。まだ分からない?
理由は大体書いたよ。
babelただ使うだけで使わないよりも『より良くなる』時代ってのはもう終わったの。
あんまり踏み込んで欲しくないので書かなかったことを少しだけ言うと、
ウチではES6基本というのは実は嘘。今はもうES2016基本にしかけてる。
で、そのために、『より良くする』ためにbabelではないがトランスパイラ+ポリフィル使ってる。
が、これもES2016の重箱の角はつつけていないので、本当は使わないで済むなら使いたくないのよ。
モダンなコードを書くメリットと、重箱の角を心の隅で気にしないといけないコストと、若干の好奇心のつり合いを見て今はこういう形になっている。
だから本当に100%ES2016で開放された気分で書けてるのかというとそうではない。
あれだけ変更の少ない2016->2015でもそうなんだよ?
babelのES5変換なんて満足できていたのは最初だけ、ブラウザの対応が未熟だった頃だけだよ。
当初君と同じ夢を見ていたウチのメンバーは一年くらいかけて
実は古いブラウザというしがらみから逃れるために、babelというしがらみに縋ってただけだって気がついたの。
今はbabel使って後から外�
301:キなんて夢物語だよ。黒歴史。 実はそういった試みで始めたものいくつかあったんだが、まともに活用しきれない。 多くは実らず捨てることになって、一部は泣きながらリファクタリングしてる最中。
302:デフォルトの名無しさん
16/09/03 20:24:00.35 N47o0j5/.net
>>293
でもまあ、ふと思ったけど、俺も今のbabelは触ってないからな。精々半年前の感覚のままだ。
今はもしかしたら殆ど完璧になってて、憂いが減ってんのかな?
そこはちょっと反省。
どうしてbabelで旧ブラウザの対応するのを見限ったかって言うとね、
そもそも、babelのバグや細かい非互換のせいで大きいコードがしばしばまともに通らなかったからだよ。
だから、笑えるけどbabelで通るように書き換えてたの。当然歪になってるから使い回せない、使い回したくないの。
でも今babelの対応状況改めて見てみたらやっぱり無理だ。
マイナーかもしれないけれど、毎度一箇所は使うだろう点が残ってる。
やっぱり痛いのはプロトタイプの設定や、サブクラス化かなぁ。
めっちゃ使うということは無いが、ここらを我慢するのはやっぱりES6使ってるとは俺は思えないわ。
303:デフォルトの名無しさん
16/09/03 20:26:29.35 EZVA2rF2.net
>>297
あんた自分で言ったセリフ思い出してね。
> Safariはモダンブラウザに含めていない。
> ウチではずっとChrome第一Firefox第二、近頃はEdge第三。
Safariに対応できてない、IEに対応できてない。
対応できるブラウザは6割。
それがお前が今できることの限界だよ。
304: ◆SEdFBOkLSw
16/09/03 20:27:46.15 YIu9WVDu.net
>>295
無意味な中傷せんと、皆の意見を真摯に聞いとけ。
だいたい同じ事言ってる。
あとな、動作が同じって、それは違うからな。
いくら時間がかかっても良いから同じ結果を出します、ってのは、結果同じでも動作違うからな。
万回以上呼ばれだしたら体感で速度変わるし。
>>278に対してだけど。
305:デフォルトの名無しさん
16/09/03 20:28:02.67 EZVA2rF2.net
>>298
> そもそも、babelのバグや細かい非互換のせいで大きいコードがしばしばまともに通らなかったからだよ。
> だから、笑えるけどbabelで通るように書き換えてたの。当然歪になってるから使い回せない、使い回したくないの。
だったらbabelで通るように書き換えないで、
その機能を使わなければいいだけでは?
だってそもそもbabelを使わないならば
その機能は使えないんだからさ。
その機能を使わないと言う選択肢をとることはできるはずだ。
306:デフォルトの名無しさん
16/09/03 20:28:44.55 EZVA2rF2.net
>>300
今はお前と話はしてない。
お前のみんなの扱いはすでに決まってるんだよ。
おバカさんw
307: ◆SEdFBOkLSw
16/09/03 20:30:06.63 YIu9WVDu.net
>>298
そう。だから、結局同じ構文で書いた、ただのbabelって処理系用の言語なんよね。
>>301
それは、babel用のコードを書くに、他ならなくないか?
babel無視したら、そんな回避コード書かんで良いんだから。
俺が仕事でES5書いてるのとレベル全く変わらんじゃないか。
308:デフォルトの名無しさん
16/09/03 20:30:30.26 EZVA2rF2.net
>>297
言ってることが抽象的すぎて
具体例が一つもないよね。
問題があるという前提で話をしているが、
そもそも、お前が言う問題は本当にあるのか?って話。
まず、具体的な問題があることが前提だから
どういうときに問題があるのかを言ってくれないか?
309:デフォルトの名無しさん
16/09/03 20:31:13.84 EZVA2rF2.net
>>303
> それは、babel用のコードを書くに、他ならなくないか?
ぜんぜん違う。その言語はES6でそのまま動く
ES6用とbabel用に違いはない。
310: ◆SEdFBOkLSw
16/09/03 20:31:17.36 YIu9WVDu.net
>>302
お前の中だろ。
問題を極端に矮小化したり拡大解釈したり、一般化したり特殊化すんのは良くないぞ。
311:デフォルトの名無しさん
16/09/03 20:32:03.05 EZVA2rF2.net
> 俺が仕事でES5書いてるのとレベル全く変わらんじゃないか。
わざわざES6のコードを避けるほうが大変だろwww
どちらがどれだけ大変かの話をしてる。
babelを使えば、避ける必要性が大きく減る。
312:デフォルトの名無しさん
16/09/03 20:32:49.45 EZVA2rF2.net
>>306
あっちのスレでもお前、馬鹿にされてるじゃんwww
自覚しとけ。
お前は俺に反論できないことはたくさんあったが
それはお前にほとんどレスしてるだろw
313: ◆SEdFBOkLSw
16/09/03 20:33:04.45 YIu9WVDu.net
>>305
ES5もES6でそのまま動くよw
babel用に使えないものがあるから使わないのは、ES6のサブセットじゃん。
babel用に使えないものを避けて書いたのと、気にせず書いたES6は違うコードなんじゃねえの?
314: ◆SEdFBOkLSw
16/09/03 20:33:43.02 YIu9WVDu.net
>>308
明後日のレスだけして、それで答えた気になってたらしゃーないわ。
315: ◆SEdFBOkLSw
16/09/03 20:36:11.49 YIu9WVDu.net
>>307
避ける方が大変?なんだそりゃ。
言語仕様把握せずに開発してる訳でもあるまい。
規約が無い訳でもあるまい。
子供のバイトみたいな話しないでくれ。
316:デフォルトの名無しさん
16/09/03 20:37:02.13 EZVA2rF2.net
>>309
> ES6のサブセットじゃん。
ん? 各ブラウザのES6の実装度を知らないのかな?
どのブラウザでも使えるのはES6のサブセットでしか無いんだけど?
317:デフォルトの名無しさん
16/09/03 20:38:01.48 EZVA2rF2.net
>>311
> 避ける方が大変?なんだそりゃ。
そりゃそうだろ。
どのブラウザで、どの機能が使えるかをいちいち把握しないといけない。
お前アロー関数がSafariで使えないことを把握していたか?
そういった細かい機能を把握する必要がなくなる。
318:デフォルトの名無しさん
16/09/03 20:38:52.88 EZVA2rF2.net
言語仕様を把握していても、アロー関数がSafariで
動かないってことを知ることは出来ないんだよ。
319: ◆SEdFBOkLSw
16/09/03 20:41:04.47 YIu9WVDu.net
>>312
そうだね。
だから、ブラウザごとに要件定義すんじゃんね。
そこに、これまたbabelって処理系が入る、と。
お前の理屈破綻してるのわかる?
どこが、一つのES6で良いの?w
最大公約数で書けば良い、なら、
ホントに最大公約数で書けばいいじゃん。ES5。
要件定義できるなら、その最大公約数で書けばいいだけ。
中途半端に先端気取って無駄な事なの。
320:デフォルトの名無しさん
16/09/03 20:41:56.59 EZVA2rF2.net
ES6を完全サポートしているブラウザを100とすると、
babelを使わないと、
1~100までのすべてのブラウザを考慮しなければいけなくなる。
babelを使えば80以下のブラウザがすべて80にまで底上げされるから
80~100のブラウザだけを対応すれば良くなる。
321: ◆SEdFBOkLSw
16/09/03 20:43:55.93 YIu9WVDu.net
>>313
してたよ。
ついでに言うとOperaも対応してない。
Android標準ブラウザは4系でも全滅。IEも11でも使えない。
322: ◆SEdFBOkLSw
16/09/03 20:45:13.51 YIu9WVDu.net
>>316
ES5で書けば100のブラウザ相手に書けんじゃん。
底上げしたから、何もしなくて良いわけでもないし。
骨折り損。
323:デフォルトの名無しさん
16/09/03 20:45:14.45 N47o0j5/.net
>>299
何が言いたいのか、いやもう建設的な話し合いをする気は無いんだろうけど、
一応会話してみるか。
対応するときはES5で書く。それだけでしょ?
そして、その話は本題と関係ないでしょ?
古いブラウザを見限っていいから、Babelを使うなと言ってるんじゃないから。
古いブラウザを見限らないとしても、ウチではBabalは使わない。ただES5で書くだけ。
まさかウチではもう今年度からピュアES6しか書きませんと言ってるのだと思ってた?
誤解させてごめんね。
で、本題はBabalの吐くコードはES_Babalであって、ES6とは遠からず近からずなものでしかないということ。
ES6を使いたいから、後々外せばいいだけだから便利、な感覚でBabelを使うと怪我するよと言ってるの。
Babalを使うのなら、あくまでES_Babelというalt JSを使うんだという認識・覚悟で居たほうが正しい。
そして副題として、俺はそれは嫌ということ。ここは個人的な部分だし、環境なので異論は認めるし、批判は受け付けていない。
二極化提案については、まだ実験中で良し悪し分からず、オススメする気もなくポロッと言ってしまっただけだし、
あまり深入りしてほしくないのでこれ以上話したくない。
324:デフォルトの名無しさん
16/09/03 20:45:47.57 EZVA2rF2.net
>>315
> だから、ブラウザごとに要件定義すんじゃんね。
> そこに、これまたbabelって処理系が入る、と。
ブラウザは実行環境、
babelはトランスパイラ。
違うものを混ぜるなって何度も言っただろ。
お前はES6に対応していないブラウザを一つずつ何個も
この機能は使える?使えない?って悩んでいるのだろうが
babelを使うと、多くのブラウザの最低レベルが揃うんだよ。
お前の言葉で言う最大公約数がES6に底上げされる。
最大公約数5よりも最大公約数10の方がいいだろw
325:デフォルトの名無しさん
16/09/03 20:46:33.45 N47o0j5/.net
おいおい……俺がちょっと推敲してる間に20も進むとか……
326:デフォルトの名無しさん
16/09/03 20:49:51.97 EZVA2rF2.net
>>319
なんか一人二役ご苦労さんって感じになってきたな。
わざとらしく大文字小文字を使い分けてるのかい?www
> 対応するときはES5で書く。それだけでしょ?
そのES5をES6に書き換えるコストは誰が払うんだ?ずっとES5のまま?
なんで可読性、メンテナンス性が低いコードを今のタイミングで量産するのさ?w
長期的なバージョンアップっていうのが考慮されてないぞ。
> で、本題はBabalの吐くコードはES_Babalであって、ES6とは遠からず近からずなものでしかないということ。
なんでそこでbabelの吐くコードを気にしないといけないのかわからん。
そもそもbabelの吐くコードはES5だ。ES_Babelなんてものはない。
babelは言語ではなくて単なるトランスパイラ。言語はES6そのもの
327:デフォルトの名無しさん
16/09/03 20:50:46.13 EZVA2rF2.net
>>318
> ES5で書けば100のブラウザ相手に書けんじゃん。
ただし可読性とメンテナンス性が低いコードになる。
328:デフォルトの名無しさん
16/09/03 20:52:05.59 EZVA2rF2.net
>>317
> ついでに言うとOperaも対応してない。
> Android標準ブラウザは4系でも全滅。IEも11でも使えない。
そっかー、babel使ってテストにもちゃんと通って
手動でも確認したときも問題なく動いていたから知らんかったわーw
まあ嘘だけど、このようにいちいち把握する必要がなくなる。
329:デフォルトの名無しさん
16/09/03 20:52:33.02 vfo9HhT2.net
この板ってどのスレでも定期的にこういう事起こるよね
C#のラムダ禁止おじさんとか
330: ◆SEdFBOkLSw
16/09/03 20:52:38.94 YIu9WVDu.net
>>322
一人二役って、アホな発言にも程があるわ。
言うに困ったらそれか。
>>322
言語は、そのものじゃなくてサブセットなんじゃねえの?
331: ◆SEdFBOkLSw
16/09/03 20:53:35.43 YIu9WVDu.net
>>323
お前が下手なだけ。
>>324
必要が無いのと、無責任なのは違うよ。
あと、letも、ずっとSafariだけ未対応だった。
332: ◆SEdFBOkLSw
16/09/03 20:54:01.45 YIu9WVDu.net
>>325
ラムダは積極的に使えば良いのにな。
333:デフォルトの名無しさん
16/09/03 20:56:57.70 EZVA2rF2.net
>>326
> 言語は、そのものじゃなくてサブセットなんじゃねえの?
そうだなES6の殆どが使えるがサブセットだなw
それよりもES6に完全対応してないブラウザの方が
より大きな問題だよ。
334:デフォルトの名無しさん
16/09/03 20:58:33.36 N47o0j5/.net
もういい。
俺はともかく、ES6ってそんなレベルじゃねーぞって変なこだわり言ってるだけだから。
とりあえずBabel使うとES6でガッツリ書けます。将来的には外すだけみたいに言わないでくれれば他はどうだってよかった。
相手が建設的な話し合いする気がないどころか、現実逃避始めちゃったので、今となってはそれすらどうでもいい。
>>320
>>babelを使うと、多くのブラウザの最低レベルが揃うんだよ。
そう。いいこと言った。
最初からこのくらいに収めてくれてれば俺が駄スレで駄レス重ねる必要もなかったのに。
結局会話にならなかったし、ほんと、無駄な時間過ごしちゃったな~
335:デフォルトの名無しさん
16/09/03 20:59:03.26 EZVA2rF2.net
>>327
> 必要が無いのと、無責任なのは違うよ。
誰が無責任でいられるって言ったんだよ。
アホかw
ちゃんとテストコード書いて問題なく動くことを確認してる。
それが責任を果たすということだろ。
> あと、letも、ずっとSafariだけ未対応だった。
せっかくより良くなったES6を
全く使えない状況になるんだよねw
336:デフォルトの名無しさん
16/09/03 21:01:48.79 EZVA2rF2.net
>>330
> とりあえずBabel使うとES6でガッツリ書けます。将来的には外すだけみたいに言わないでくれれば他はどうだってよかった。
もちろん将来的には外すだけじゃねーよw
しっかりテストコード書いて、テストする。
これは、babelとは関係なく、ブラウザのバージョンアップでも
急に動かなくなったりする可能性があるのだから当然するべきこと。
babelを外してもし動かなくなるのなら、その部分だけの修正で済むだろ。
今からbabelを外して動くかどうかもテストしてればいいんだよ。
それをやってるから、ES6で書いてbabelを使っても使わなくても
同じように動くコードになるって言ってるの。
337:デフォルトの名無しさん
16/09/03 21:09:12.58 N47o0j5/.net
>>332
だからね。君が言ってるそれは、BabalがES6のコードを完璧にES5に変換できるということ前提なの。
実際はね、ES6ではなく、ES_Babalで書かないといけないの。
ES_BabalというのはES6から機能と安定性を取り去った言語なわけ。
で、それを将来ES6か何かに書き換えるわけ。
それがES5のしがらみとどっちが強いかは人次第なのかもしれない。
君はそれに十分満足していて、俺は不満。ただそれだけなのかもしれない。
でも、ES6を使いこなしていったらすぐに俺の考えに近くなるんじゃないかなという想像。
無駄なおせっかいだったのよ。それだけ。
338:デフォルトの名無しさん
16/09/03 21:13:20.81 EZVA2rF2.net
> 実際はね、ES6ではなく、ES_Babalで書かないといけないの。
だから書かなくて良いんじゃないですかねぇw
ES6で完璧に書けないものは書かなくていい。
なんでES6を使うって言ったら、babelで使えない機能まで
ES6を使おうってするんだ?w
どうせテスト書くだろ。完璧に動かなくてもテストで通る範囲が動けば問題ないんだよ。
そもそもブラウザですらES6に完全に対応していない。
どちらにしろES6に完全対応していない環境と言う前提のもとで、
正しく動くアプリを作るんだよ。作るのが仕事なの。
そしてより可読性、メンテナンス性に優れたコードを今すぐ書くということ。
339: ◆SEdFBOkLSw
16/09/03 21:15:25.72 YIu9WVDu.net
>>331
テストコード書いて問題なく動く、そこが違うんだよなぁ。
こっちは仕様と実装からテスト仕様書いてて、
お前は仕様からしか書いてないんだもの。
>>332
お前は本当に何を問題とされているかわかんねえやつだな。
340:デフォルトの名無しさん
16/09/03 21:17:26.35 EZVA2rF2.net
テストコード書いて問題なく動く、そこが違うんだよなぁ。
こっちは仕様と実装からテスト仕様書いてて、
え? だからそのテスト仕様書通り動けばいいだろ?
何言ってるのかさっぱりわからんwww
341:デフォルトの名無しさん
16/09/03 21:18:06.86 EZVA2rF2.net
> こっちは仕様と実装からテスト仕様書いてて、
あ、実装を書かないとテスト仕様書が書けないタイプ?
342:デフォルトの名無しさん
16/09/03 21:21:04.16 EZVA2rF2.net
実装からテストを書くっていうのは、
要するにprivateメソッドを書いてから
そのテストコードを書くって言ってるのかな?
まあまた意味不明なことを言い出したなって
思ってますよw
343:デフォルトの名無しさん
16/09/03 21:23:23.04 EZVA2rF2.net
実装のテストっていうのは、その実装が変われば
同じ動作をしていてもアプリは問題なく動いていても
失敗するものってことでいいんですか?
344: ◆SEdFBOkLSw
16/09/03 21:24:59.62 YIu9WVDu.net
>>337
当たり前だろ。。
>>338
違うよ。
コードを書く/書いてもらう前に、何もかも分かった状況にして、こうすれば書けるから、と実装に対する詳細設計を起こすよね。
その詳細設計から書くじゃん、テスト。
実装、がもしかして食い違ってる?
お前が書く内容、って意味じゃなくて、処理系の実装、な。
しかし、改めてbabel見てみたが、末尾再帰もできんままか。
345: ◆SEdFBOkLSw
16/09/03 21:26:13.79 YIu9WVDu.net
>>339
何言ってるのかわからん。
その処理系でテストを完了していない限り、失敗も成功もないだろ。宙ぶらりん。
だからテストすんじゃん。
346:デフォルトの名無しさん
16/09/03 21:28:37.51 EZVA2rF2.net
いつの話をしてるのやらw
URLリンク(teppeis.hatenablog.com)
2015-03-29
BabelとTraceurでES6末尾再帰最適化を試す
ちょっと前にBabelに末尾再帰最適化が入って話題になったけど、同じくTraceurにもv0.0.85で最適化が入ったので試してみた。
347:デフォルトの名無しさん
16/09/03 21:28:59.57 N47o0j5/.net
>>334
うん。だから君は、ES6を、モダンで良い言語で書きたいから使ってるわけではなく、
「Babelが対応してる機能」を「Babelが対応してるから」使ってるだけでしょ?
普通はES6で書いて動かすためにトランスパイラを試す筈だが、
君はおそらくBabelをES6入門用的に使っているのだろう。
Babelはもう成長しないが、君はどうするの?
うーん。もしかして、ES2017や18の時代になっても、
Arrayのサブクラスすら作れないなんちゃってES2017で書くの?
ES6-サブクラス+デコレータ-hogehoge+fugafuga
みたいなおかしな言語で書き続けるの??
そこに無理があると言ってるのよ。
君ももし本当にES_BabelをES6と信じてるのなら成長したほうが良いよ。
で、Babelは使うのは良いが憂いができるだけ少なくなるようにした方がいい。
348:デフォルトの名無しさん
16/09/03 21:32:40.61 EZVA2rF2.net
>>340
337 自分:デフォルトの名無しさん[sage] 投稿日:2016/09/03(土) 21:18:06.86 ID:EZVA2rF2 [83/86]
> こっちは仕様と実装からテスト仕様書いてて、
あ、実装を書かないとテスト仕様書が書けないタイプ?
340 返信: ◆SEdFBOkLSw [sage] 投稿日:2016/09/03(土) 21:24:59.62 ID:YIu9WVDu [24/25]
>>337
当たり前だろ。。
この流れで、↓これとか
> コードを書く/書いてもらう前に、何もかも分かった状況にして、こうすれば書けるから、と実装に対する詳細設計を起こすよね。
> その詳細設計から書くじゃん、テスト。
・・・馬鹿なのか?
1. 実装に対する詳細設計を書く
2. つまり詳細設計は実装を書くよりも前に存在する。
3. (実装を書く前の)詳細設計からテストを書く。
実装を書かなくてもテスト仕様書は書ける。
349: ◆SEdFBOkLSw
16/09/03 21:35:40.90 YIu9WVDu.net
>>342
おお、if文のあとの再帰で死ぬやつ治ってんだ。
ちなみに、その話のあと、一旦disabledになったのよ。
350: ◆SEdFBOkLSw
16/09/03 21:38:38.17 YIu9WVDu.net
>>344
だから。もう。
お前がどう書くかは関係ねえの。
それからテスト書いたら意味ねえじゃん。
ホワイトボックスで、それが検証可能な事には意味があるけど、そうじゃねえよ。
処理系の実装だよ。
351:デフォルトの名無しさん
16/09/03 21:41:34.55 EZVA2rF2.net
>>343
> 「Babelが対応してる機能」を「Babelが対応してるから」使ってるだけでしょ?
違う。ES6の機能のうち、babelで変換しても確実に動くものだけを使ってる。
だから「ES6が対応している機能」のうち「babelでも対応しているもの」を使っている。
が正解。
そしてそれは普段から書いている「実際のブラウザで問題なく動くか?」という
テストがあれば追加工数は必要なくテストできる。
> Babelはもう成長しないが、君はどうするの?
成長してないと判断したところはどれ?
見ての通りes2017に対応したプリセットもある。 URLリンク(babeljs.io)
仮にbabelが成長しなくても、今書いているコードはそのままES6対応ブラウザで動くし
ES5ブラウザでも動く。今のやり方はそのまま続けられるじゃん。
場合によっては古いブラウザを切り捨てることで、babelが無くても動く。
将来の心配をしなくて済む。そこがAltJSとの違い。
> ES6-サブクラス+デコレータ-hogehoge+fugafuga
> みたいなおかしな言語で書き続けるの??
と言われてもね。現実に存在するブラウザが、そんな感じでしょw
ES6の全てに対応していない。あんた今、そんなおかしな言語で書いてるんだよw
> うーん。もしかして、ES2017や18の時代になっても、
> Arrayのサブクラスすら作れないなんちゃってES2017で書くの?
Arrayのサブクラスを使わないでES2017で書くよ。
お前は古いブラウザを切り捨てるんだろ?
それが要件として認められるならば、俺古いブラウザを切り捨てるだけだよw
352:デフォルトの名無しさん
16/09/03 21:46:47.80 EZVA2rF2.net
>>346
またマッチ・ポンプ?w
テストは実装前に書くって話でいいんだよね?w
俺が言いたいのは、>>335でお前が言った
> こっちは仕様と実装からテスト仕様書いてて、
実装からテスト仕様書くなやってことなんだけど?
で、俺は仕様と詳細設計からテスト仕様書書いて
それをテストコードにしてるから、
実装が変わっても問題ないって話をしてるんだけど。
353: ◆SEdFBOkLSw
16/09/03 21:51:24.54 YIu9WVDu.net
>>348
だから、処理系の実装だってば。
お前話の流れが読めないやつだな。
前のレス見ればわかんじゃん。
>>347
だから、それがbabel用のコードなんじゃねえの?
ES6と同じ構文で書いたES6のサブセットな、babelにコンパイルさせる為の言語。
ただ、そのまま他の環境でも動くだけで。
それは、ES5を書いて、これはES6の仕様範囲内だから、ES6です、って強弁するのと変わらんではないか。
354:デフォルトの名無しさん
16/09/03 21:54:03.20 N47o0j5/.net
>>347
うーん。君のポリシーがよくわからないね。
今のブラウザがES6の全てに対応していない?
そりゃそうだ。ES5すら全てに対応してるわけではないからね。
ということは、それより遥かに劣るBabelは極めて不完全って認めるわけなの?
さっきも言ったが俺はそここそが一番気になるんだから。
いや違うか、君は不完全でも気にしないと言ってるわけだ。
ES6とES_Babelの見分けなんてつかないよと、
いや、Babelで変換できないES6の機能なんてES6と認めないよと言ってるわけだ。
やっぱり君はBabel志向なんだよ。
それは違う、とにかく対応を広げるために機能の劣るBabelを仕方なく使ってるんだっていうなら
やっぱりES6ではなくES_Babelを書いてるってことを認めないといけない。
それか、実はES6なんて理解してなくてBabel志向なだけですというのも理屈が通る。
そのどちらか。
355:デフォルトの名無しさん
16/09/03 21:57:03.42 EZVA2rF2.net
>>349
> だから、処理系の実装だってば。
処理系の実装ってなに?
お前は処理系の実装のテストを "書いている" といった。
そうわざわざ言うってことは、当然普段から書いているのだろう?
ブラウザの場合お前はbabel等を使わない。
ってことは当然処理系の実装のテストというのは、
ブラウザが持っているJavaScript実装。
ChakraやSpiderMonkeyやV8という処理系であるはずだ。
お前はこれらのJavaScriptエンジンを
わざわざ開発元がやってるはずのテストを
JavaScriptエンジンの開発や検証という段階でもないのに、
アプリの開発という仕事の中でやってるということか?
そういう話でいいのか?
356:デフォルトの名無しさん
16/09/03 21:59:14.75 EZVA2rF2.net
>>349
> だから、それがbabel用のコードなんじゃねえの?
> ES6と同じ構文で書いたES6のサブセットな、babelにコンパイルさせる為の言語。
ES6のサブセットという言語はない。
俺がES6のサブセットを使っているだけ。
そもそもどのブラウザもES6に完全対応してないのだから
俺だけじゃなくてみんなES6のサブセットを使ってる。
お前、SafariでES6のサブセットを使ったら、
それをSafariで動かすための言語っていうのかよwwww
それぐらいわからんかなw
357:デフォルトの名無しさん
16/09/03 22:05:42.45 EZVA2rF2.net
>>350
> 今のブラウザがES6の全てに対応していない?
> そりゃそうだ。ES5すら全てに対応してるわけではないからね。
>
> ということは、それより遥かに劣るBabelは極めて不完全って認めるわけなの?
そこが話がつながってない。
babelはES6に対応していないブラウザをES6対応に近づけるものであって、
ブラウザとES6対応度で競争しているわけじゃない。
ブラウザは他のブラウザとES6対応度で競争しているかもしれない
その競争でどこそこのメーカーのブラウザが劣っているか劣っていないかって
いう話をするのならわかる。
だがbabelの目的は、劣っているブラウザを救済する所にある。
babelと比較するのであれば同じ目的のTraceurやClosureだろう。
あんたはES6を使いたいとしか思ってないようだが、
俺が一番に考えているのは、より多くのユーザーが使ってるブラウザで動かすということだ。
その上で可読性やメンテナンス性を上げるという理由で出来る限りES6を使うって話をしてるんだよ。
358: ◆SEdFBOkLSw
16/09/03 22:15:50.24 YIu9WVDu.net
>>351
文盲なの?
そのエンジンと自社製品の組み合わせのテストだよ。
>>352
最後。
その通り、Safariの為の言語だよ。その時点では。
SafariとFireFoxの為に書いたのであれば、SafariとFireFoxの為の言語。
359:デフォルトの名無しさん
16/09/03 22:17:06.63 EZVA2rF2.net
ん? まさかと思うが、もしかして◆SEって
ブラウザごとにソースコード書き換えてるのか?
あるサイトを作ったとして、
Chromeはアロー関数を使ったコードで
Safariはアロー関数を使わないコード。
一つのコードで複数のブラウザに対応するのではなく
各ブラウザごとに書き換えたを変えてるのか?
まさかな。babelを使うと一つのコードで
複数のブラウザに対応できるぞwww
360:デフォルトの名無しさん
16/09/03 22:18:28.08 W9R0/4bk.net
バベル君面白いw
バベル君の事が理解出来る様に、オレも少しかじってみるわw
361:デフォルトの名無しさん
16/09/03 22:18:34.81 EZVA2rF2.net
>354
> そのエンジンと自社製品の組み合わせのテストだよ。
言い方がおかしいな。
普通は
そのエンジンと自社製品の組み合わせ「で」テストをするという。
確認するが
そのエンジンと自社製品の組み合わせ「の」テストを書いているという意味か?
362:デフォルトの名無しさん
16/09/03 22:19:06.56 N47o0j5/.net
>>353
うん。それならいい。
あくまでES6を意識したBabelScriptという下駄を古いブラウザに履かせるという認識ならいい。
裏切りを知らないサンタクロースを信じる子供か、黒歴史を未経験な魔法に憧れる中二病患者かと思ったから忠告したけど、
そうでないのなら尽く良い。
その他いろんな話をしたが、もうそれに関しての共通理解は諦める。
363:デフォルトの名無しさん
16/09/03 22:20:31.06 EZVA2rF2.net
>>354
◆SEくんおもしろいw
> その通り、Safariの為の言語だよ。その時点では。
じゃあブラウザとバージョンの数だけ別の言語があるってことかい?
364:デフォルトの名無しさん
16/09/03 22:21:58.64 EZVA2rF2.net
>>358
> 裏切りを知らないサンタクロースを信じる子供か、黒歴史を未経験な魔法に憧れる中二病患者かと思ったから忠告したけど、
だからテストコードを書いている。
このテストコードはbabelを使った場合と使わない場合の両方で動く。
裏切られる前提で、裏切られてもすぐに修正できるように
ちゃんと対策をしている。
365:デフォルトの名無しさん
16/09/03 22:24:51.69 EZVA2rF2.net
◆SEの理屈ではJavaScriptという言語は無いってことになるだろうね。
なぜならばどのJavaScriptでも同じブラウザでも
バージョンが違えば、わずかながらでも違いがあるから。
ECMAScriptという仕様を完全に見対している言語もない。
そういえばC++も仕様を完全に満たしている処理系はないっていわれてるな。
つまり、それぞれの処理系で別々の言語が実装されている。それはC++とは呼ばないw
366: ◆SEdFBOkLSw
16/09/03 22:29:30.55 zOLpCpsC.net
>>355
基本は両方同じ、かつネイティブに処理されるコードを書いて欲しいね。
依存部分はライブラリで吸収するから。
>>359
え?うん。
お前も認めてたじゃん。どのブラウザもサブセットだって。
367: ◆SEdFBOkLSw
16/09/03 22:30:37.47 zOLpCpsC.net
>>361
え?MSの2012でコンパイルできる、cppのソースコード、以外の、現実に則した表現あるの?
368:デフォルトの名無しさん
16/09/03 22:31:28.65 EZVA2rF2.net
>>362
> お前も認めてたじゃん。どのブラウザもサブセットだって。
お前、毎度毎度、重要な単語を抜き取るよなw
わざとやってるだろ。
どのブラウザも「JavaScript(ECMAScript)という言語の」サブセットだって
言ったんだよ。別の言語であればそれはサブセットとはいわない。
369: ◆SEdFBOkLSw
16/09/03 22:31:56.90 zOLpCpsC.net
>>357
そうよ。おかしかったらパッチ書いてプルリクするもの。
370:デフォルトの名無しさん
16/09/03 22:32:33.75 N47o0j5/.net
>>360
そこに関しては納得してる。
俺が違和感があるのは、よくそれで問題にならず我慢できるなってこと。
よくArrayのサブクラスとか作らないで済むね?
Proxy使ったこと無い?@@系は?
当然独自クラスシステムフレームワーク構築するのに
プロトタイプ書き換えるとか当然やったこと無いんだろうな~
って感じ。
そういう驚きと、同じ世界に居ない悲しみ。そんなとこ。
371: ◆SEdFBOkLSw
16/09/03 22:32:54.26 zOLpCpsC.net
>>364
重要な単語も何も、本家とサブセットは関係が定義できようが、
サブセット同士はただ違うものとしか。
372:デフォルトの名無しさん
16/09/03 22:33:53.31 EZVA2rF2.net
>>362
> 依存部分はライブラリで吸収するから。
アロー関数は文法なんだから、JavaScriptファイルを
分離しないと、構文エラーになるんだが?
そのライブラリはブラウザごとに読み込むファイルを分けるのか?
またパフォーマンスが落ちそうなことをwww
373:デフォルトの名無しさん
16/09/03 22:35:25.80 EZVA2rF2.net
>>367
だから、そうやって重要な単語を抜き取って焦点をぼかすのはやめろ。
とある言語の、サブセット同士が違うものであっても
それはとある言語のサブセットであって、言語としては同じだろうが。
BASICはどの実装でもBASICであり
COBOLはどの実装でもCOBOLだ。
374:デフォルトの名無しさん
16/09/03 22:37:05.23 EZVA2rF2.net
>>366
> よくArrayのサブクラスとか作らないで済むね?
といわれてもね。長年やってるからね。
長いES5の時代にArrayのサブクラスをつくらないで
やってきた人間に、そんなこといわれてもねw
その他も同じ。
お前のほうがやってきた経験少ないんじゃね?
375:デフォルトの名無しさん
16/09/03 22:41:45.37 EZVA2rF2.net
>>366
そうだな。君、何かのポリフィルを自分で考えたことある?
特定のブラウザでは簡単にできないことを、
別の方法を使って実現するってことをやったことある?
そういう経験がないんじゃないかな?
バッドノウハウといわれるけど、仕事ではそれをやらないといけない。
Arrayのサブクラスが作れないからできませんって
簡単に泣き言を言ったらだめだよ。
Arrayのサブクラスを作ることが目的になることはまずない。
別の方法で顧客の要求を実現するんだよ。
これって発想力の問題かなぁ、それとも問題解決能力?
376:デフォルトの名無しさん
16/09/03 22:56:19.81 N47o0j5/.net
>>370
当然俺もいきなり活用できたわけじゃない。
折角の機能活用できるようになろうとここ1,2年実験・研究を人一倍積み重ねてきたのよ。
いや、違うか。それより前から、特にES4の頃からかなぁ
JSなんてと言われる声が大きかった時でも、
これからはJSの時代だ。JSを深く知ろう、そしてJSの良さをもっと知ってもらおう。
JSを良くしていこう。とずっとずーっと思ってたのよ。
だからES6の盛り上がりには喜んだし、
MLも当初から参加して全て読んで、細部だが提案にも参加した。
そして実装される前から、トランスパイラではなく、エンジン毎実装されているエミュレータでテストしたりしてきたのよ。
ブラウザに機能がコミットされたら、いやされる直前に自分でローカルでコミットして即ビルド。
とにかく誰よりもよくES6を知り、よく使えるようになろうと努力した。
というのは多少大袈裟だが、そのくらいの熱はあるよ。
377:デフォルトの名無しさん
16/09/03 22:59:14.75 N47o0j5/.net
つかArrayのサブクラスもできるんだけどね。
__proto__がサポートされていれば。
378: ◆SEdFBOkLSw
16/09/03 23:12:05.52 YIu9WVDu.net
>>369
いや、それは言語名を拡大解釈しすぎだろ。
379: ◆SEdFBOkLSw
16/09/03 23:14:31.28 YIu9WVDu.net
>>371
お前どう聞いてもそのノウハウないんだけど。
なんか書いたことある?アーキとしてライブラリ。
>>368
うん、文法上無理なものは、無理に使わないよ。
ライブラリはブラウザごとに違うよ?
当たり前だけど、そのブラウザ用に書いてるからパフォーマンス高いよ(笑)
380:デフォルトの名無しさん
16/09/04 01:41:38.94 dQFc65WQ.net
そもそも、ブラウザのソースをむっちゃ細かく読み、ブラウザごとに誤差レベルのパフォーマンスのためにプログラムをかき分け、利用者にはKBのバージョンまで指定する
そんならネイティブで書いたほうがいっそ早くね?
381:デフォルトの名無しさん
16/09/04 01:42:25.34 dQFc65WQ.net
↑ネイティブっていうのはブラウザ上じゃなくてって意味ね
それだと今度はOSのソースを読み出すのかな?
382: ◆SEdFBOkLSw
16/09/04 02:09:57.16 OwMR9jkC.net
>>376
クラサバの話?
だいたい似たようなもんだよ。
社内端末は、何処の会社でもそうだろうけど、標準品のパターンしか無いから。
クラサバは基本的にはあんまり作らんけどね。
標準品があるがゆえにが、何かにもインストールするのは難しい。
毎月10日に数万人が同時使用するようなものもあるから、ウェブ向きのもあるんだけどね。
383: ◆SEdFBOkLSw
16/09/04 02:11:11.84 OwMR9jkC.net
>>377
案件次第だけど、RedHatと、MSは調査させることができる保守契約だから、
ソースは見なくて済むよ。
384:デフォルトの名無しさん
16/09/04 02:40:24.68 dQFc65WQ.net
よくよく考えると、ハードウェアにも依存するよね
テストだけじゃなくてソースまで読むとなると、CPUとかグラフィックカードの設計図まで見ながら実装や結果が異なるかもしれない!とか言いながら開発してるのかな?
これとかは面白かったな
URLリンク(www.sophos.com)
385: ◆SEdFBOkLSw
16/09/04 02:52:39.61 puAB8LUN.net
ハードウエア依存するね。
そのへんはウェブ屋がよくまとめてくれてるよ。
このCSSをONにしたら、アニメーションがGPU使ってる行われるので、適宜利用可能そうであれば取り込んでください、とかたまり来るな。
386:デフォルトの名無しさん
16/09/05 21:45:07.44 g6CwjeFO.net
こういうwebアプリってどうやってつくってるんですか
pdgを縮小とかって、どうやってやってるのでしょうか?
javascriptは関係ありますでしょうか?
URLリンク(smallpdf.com)
387:デフォルトの名無しさん
16/09/05 23:05:01.84 La2BdvKf.net
void func(int a)
{
388:デフォルトの名無しさん
16/09/05 23:10:26.66 La2BdvKf.net
未使用変数への対処ですが、C言語だと
void func(int /*a*/)
{
....
}
void func(int a)
{
(void)a;
....
}
こんな風にしますが、JavaScriptだと定石みたいなのはありますか?
$('#element').on('mousedown', function(/*event*/) {
});
でよさそうな気がしますが、アロー関数の時は
$('#element').on('mousedown', /*event*/() => {
});
こんな風にしないとだめでかっこ悪いきがします。
389:デフォルトの名無しさん
16/09/06 00:15:41.30 vTB9MQXO.net
>>384
未使用変数を必ず対処しないといけないということはない。
例えばイベントハンドラで引数にeventやeを取るのは「形」だ。
型宣言みたいなもんで、それを書いてあるからといって必ずしも
eventを利用しないことは皆知っている。
むしろその関数が別定義されていても、eventを受ける関数、
イベントハンドラの定義なんだと瞬時にわかるので意味がある。
つまりイベントハンドラとしてイベントを受け取るということだけで、
機能が満たされて意味的に「未使用」ではないとも見れる。
もしくは本当にイベントをトリガーとして関数を呼び出したいだけであれば、
引数を書かないでおくべき。
コメントアウトする文化はないのでけしてしてはいけない。
上で述べた引数をあえて書く、書かないは、関数の機能やニュアンスを表すための
弱い動的型付け言語における読み手に対する情報の追加だ。
しかしコメントアウトは書き手にとってのメタ的な情報でしか無い。
読み手に未使用変数の情報を伝えても何のプラスにもならないし、
何らかのニュアンスの提示かと思わせて混乱させるだけだ。
390:デフォルトの名無しさん
16/09/06 03:32:45.25 R2NwcGdU.net
キモい ◆SEは死んだ?w
391:デフォルトの名無しさん
16/09/06 03:37:28.46 s5Bd4cPT.net
>>384
使用してない変数なら書かなければいいだけ。
使わないのに引数を省略出来ないっていうのは
C言語特有の問題だ。C言語特有の問題を持ち込まないように
392: ◆SEdFBOkLSw
16/09/06 08:18:45.82 aJS2GtR8.net
>>386
そんなに否定されるか不安なのか?
>>384
その定石は要はコンパイラが未使用変数だよ、と警告上げてくるから、使ってるフリするやつじゃないの?
長々誰かが説明してるけど、結論どっちでも良いよ。
書いても書かなくても。
393:デフォルトの名無しさん
16/09/06 09:41:59.19 KC/iVCRe.net
>>385, >>387, >>388
ありがとうございます。
すみません、言葉足らずでしたが、>>388さんの通りC言語の
コンパイラの警告と同じような意味合いでの
eslintなどのunused-varsへの対処方法の相談でした。
引数消せばそれで良さそうとは思いましたが、それだと>>385さんの通り
eventとか意味を持った引数がわかりにくくなりそうなので、定石みたいなのはあるのかなと。
結論はどちらでも良いとのことで好きなようにやっておきます。
394:デフォルトの名無しさん
16/09/06 13:11:41.52 vTB9MQXO.net
>>389
一番いいのはそういう警告は殆どOFFにするか、無視すること。
正直言って本当に厄介なバグは見つけてくれない気休め程度のもの。
気休めに気を使うことくらい馬鹿らしいことはないと思わないか?
どちらでもいいと言われてるのは書く/書かないであって、
コメントアウトは3つの選択肢の中では最低と思った方がいい。
395:デフォルトの名無しさん
16/09/08 07:45:15.23 O7PwNYbW.net
プロミスって簡単に探したら、種類がいっぱい有るんですね。
現在対象にしているのが、WinJS。
timeoutなんてのが有って驚いた。
これだと非同期ロジックにシーケンス書ける。
396:デフォルトの名無しさん
16/09/08 14:31:46.31 OkMPKk85.net
標準Promiseは機能が少ないので、async/awaitを使って補うのがベストプラクティス。
もしくはextendsしても良いが、やや大変で難しいと思う。
一応キャンセルの案は入るのでtimeoutとかは簡単に実装できるようにはなる。
CancelToken型になりそうなのがまたちょっとアレだが、まあ拡張としては最適なのだろう。
URLリンク(github.com)
397:デフォルトの名無しさん
16/09/08 23:37:57.85 Vzj7Ghpg.net
ちなみにasync/awaitに対応しているブラウザは少ないので
必然的にbabelを使うということである。
398:デフォルトの名無しさん
16/09/08 23:41:49.64 Vzj7Ghpg.net
なお、俺はasync/awaitを使いたいならbabelと言っただけで
async/awaitを使うと機能が増えるとは言ってない。
その話は言ったやつに聞け
399:デフォルトの名無しさん
16/09/09 00:04:44.99 4wEFuM4p.net
>>393
ブラウザの話だけでいうのもどうかと思うよ。
WinJSが出てくるのならNW.jsとかNode系V8系の環境の話も十分考えられる。
V8系ならフラグオンで使えるわけだからね。
というかすぐ、互換性が~とか言い出したり、実務を必ず伴わせようとするのは悪い癖だと思う。
ここはESスレなんだし、仕様やAPIの宙に浮いた話だって良いじゃない。
web制作板だったら確かに互換性や実際に世のブラウザで動く話は無視できないかもしれないけれど、
ここはプログラム技術板なんだし、
JSはそれこそ自分用のブラウザ拡張機能を作るためだったりするのにも使えるわけだし、
別に実験や遊びとしてこういった技術を扱う前提であってもいいと思う。
400:デフォルトの名無しさん
16/09/09 16:45:04.06 dcApvFQ/.net
lengthって名前の関数を作るときなんですが、
var Sample = function() {
this.length = function() {
return 100;
}
};
Sample.length = function() {
return 100;
};
let sample = new Sample();
console.log(sample.length()); // これは OK
console.log(Sample.length()); // これは エラー
っていう動作になるのはこういう仕様でしょうか?
401:デフォルトの名無しさん
16/09/09 16:46:02.70 dcApvFQ/.net
すみません、 使えなかった
こちらです。
var Sample = function() {
this.length = function() {
return 100;
}
};
Sample.length = function() {
return 100;
};
let sample = new Sample();
console.log(sample.length());
console.log(Sample.length());
402:デフォルトの名無しさん
16/09/09 17:42:46.36 mXWYcTT5.net
何がしたいの?w
403:デフォルトの名無しさん
16/09/09 18:03:02.38 dcApvFQ/.net
>>398
具体的には
VectorUtil.length = function(x, y, z) {
return Math.sqrt(x*x + y*y + z*z);
};
これがしたかったです
404:デフォルトの名無しさん
16/09/09 19:06:00.54 R/34hIbI.net
Function.lengthは引数の数で定義済なんで無いの
405:デフォルトの名無しさん
16/09/09 19:15:39.77 4wEFuM4p.net
>>399
class構文を使えばできる。
class Sample {
static length() { return 100 }
}
Sample.length()
406:デフォルトの名無しさん
16/09/09 21:42:09.18 mcpsSWXB.net
画像収集の際にGreasemonkeyを利用してa要素+download属性を生成し、
整理しやすいように画像掲載ページのタイトル等から名前をつけて保存しているのですが、どうにかしてクロスドメインの画像に対してもリネームさせられないものでしょうか?
iframeを利用するというのも試してみましたが、元ページ側のタイトル変数などを受け渡すことが出来ず挫折してしまいました
407:デフォルトの名無しさん
16/09/09 21:52:24.77 dcApvFQ/.net
>>400
そういう仕様っぽいような気がしました。
なぜ上書きできないのか、わかってないですが。
>>401
なるほど、ありがとうございます。
classって糖衣構文だと思ってるんですが
内部的にはどうやってるのでしょう(調べてみます)
408:デフォルトの名無しさん
16/09/09 22:11:57.62 4wEFuM4p.net
>>なぜ上書きできないのか
[[Writable]]: false だから
URLリンク(tc39.github.io)
ただし[[Configurable]]: true なのでディスクリプタセット系メソッドで上書きはできる
>>内部的にはどうやってるのでしょう
コンストラクタが定義され、その時点では上記のようにlengthプロパティを持っているが、
その後PropertyDefinitionEvaluation→ディスクリプタセット系によって上書きされる
URLリンク(tc39.github.io)
409:デフォルトの名無しさん
16/09/09 22:27:00.10 Ml2lLB3N.net
>>403
babelで変換したらこうなったよ。
Object.definePropertyが鍵のようだ。
"use strict";
var _createClass = function () {
function defineProperties(target, props) {
for (var i = 0; i < props.length; i++) {
var descriptor = props[i];
descriptor.enumerable = descriptor.enumerable || false;
descriptor.configurable = true;
if ("value" in descriptor) descriptor.writable = true;
Object.defineProperty(target, descriptor.key, descriptor);
}
}
return function (Constructor, protoProps, staticProps) {
if (protoProps) defineProperties(Constructor.prototype, protoProps);
if (staticProps) defineProperties(Constructor, staticProps); return Constructor;
};
}();
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
var Sample = function () {
function Sample() {
_classCallCheck(this, Sample);
}
_createClass(Sample, null, [{
key: "length",
value: function length() {
return 100;
}
}]);
return Sample;
}();
410:デフォルトの名無しさん
16/09/09 22:47:46.14 dcApvFQ/.net
>>404 >>405
ありがとうございます。
勉強になりました。
411:デフォルトの名無しさん
16/09/10 11:41:02.99 bPnbAneW.net
わざわざインスタンス作るまでのことじゃない
という夢を見た
412:デフォルトの名無しさん
16/09/12 00:16:46.01 MSYFEfr8.net
>>407
あ
413:デフォルトの名無しさん
16/09/14 11:42:56.90 7fc5lKN8.net
<body onLoad="document.getElementById(id).style.display = 'none'">
でページを読み込んだとき表示させたくない部分を隠せるのだけど
ブラウザで何回もリロードしていると隠れている部分が一瞬表示されることがあります
これを防ぐ方法あったら教えてください
414:デフォルトの名無しさん
16/09/14 11:55:36.48 T/00QwAr.net
>>409
どうしてonLoadにしているのかが分からない
最初からidの要素に対してやればいいのでは?
415:デフォルトの名無しさん
16/09/14 21:09:29.93 jzervOJ/.net
>>409
表示に関することはCSSでやれ
416:デフォルトの名無しさん
16/09/15 04:07:08.15 3ffkfw2U.net
>>409
そりゃonLoadで消す処理の前に描画処理が走ってしまうと表示されるだろうな
まずonLoad は画像等の外部リソースがすべて読み込まれるまで発火しないので、そういう場合どちらかと言えばDOMContentLoadedで呼ぶ方がいい
一瞬でも見せたくないならcssなど外部リソースへのリンクをすべて切った状態で表示されない状態であるべき
表示したい時にそのエレメントを作るまたは流し込む、あるいは非表示にしてあるものを必要に応じて表示にする方が好ましいと思う
417:デフォルトの名無しさん
16/09/15 05:14:15.52 ql+kvaik.net
先にCSSで、非表示に設定しておいて、JSで表示すればいい
418:デフォルトの名無しさん
16/09/15 05:20:33.69 ql+kvaik.net
正しいかどうかは知らないけど、
漏れは、<head>内で、CSSを読み込ませて、
<body>の終了直前で、JS, jQuery, jQueryUI を読み込ませている
419:デフォルトの名無しさん
16/09/15 08:25:11.28 snQtI1Af.net
>>409
JS有効/無効関わらず、適用させるべきなら静的に外部CSSを適用する
JS有効時のみ適用させるなら
1. JSで動的に外部CSSを挿入する
2. JSで動的にstyle要素を挿入する
3. JSで動的にdocument.styleSheetsを操作する
420:デフォルトの名無しさん
16/09/15 08:35:03.76 snQtI1Af.net
回答しておいてなんだが、これはES限定の質問ではないので下記スレで質問すべきだな
+ JavaScript の質問用スレッド vol.122 + [無断転載禁止]©2ch.net
スレリンク(tech板)
そもそも、このスレがvol.121の後継スレと銘打って立てるから、こういう勘違いした質問者が出てくるんだよな
「ECMAScript デス 6」として立てれば良かったものを…
421:デフォルトの名無しさん
16/09/15 16:12:55.70 3ffkfw2U.net
あっちは頭のおかしな子が常駐してるからなぁ
外部CSSでやった場合、その外部CSSを取得するためのhttpリクエストがコケたり読み込みが遅れた場合CSSが解釈される前に表示されてしまうよ
よって絶対に(一瞬たりとも)表示したくないならば外部CSSで隠すのではダメ
最低でもインラインCSSで静的に非表示にしておく事が最低条件で、可能ならそれを表示する必要が生じるまでDOM要素が存在しない状態にしておくべき
422:デフォルトの名無しさん
16/09/15 18:33:18.76 tL4oMhKi.net
>>417
> 外部CSSでやった場合、その外部CSSを取得するためのhttpリクエストがコケたり読み込みが遅れた場合CSSが解釈される前に表示されてしまうよ
link要素は基本同期読み込みだったと思うがな これ以上は該当スレでやってくれ
変な奴はどこにでもいるからスルーすればいいだけ
423:デフォルトの名無しさん
16/09/16 23:25:08.31 90O68WAb.net
JavaScript の Closure Compiler
URLリンク(googledevjp.blogspot.jp)
> Closure Compiler は、2009 年に元は Java でリリースされました。本日は、
> まったく同じ Closure Compiler がピュア JavaScript で Java を使わずに利用できる
> ことになったことをお知らせします。この仕組みは NodeJS 環境で実行するように設計されており、
> いくつかのよく使われているビルドツールをサポートしています。
> 初めて聞く方のために説明すると、Closure Compiler は JavaScript の最適化、トランスパイル、
> タイプチェックを行うツールです。これを使うと、コードを高パフォーマンスでサイズが縮小された
> コードにコンパイルすることができます。
> let、const、アロー関数などの ES2015 の新機能をサポートしており、まだすべてではサポートされていない
> ES2015 メソッドの polyfill も提供しています。メンテナンス性や拡張性の高い優れたコードを書けるよう、
> Closure Compiler は構文チェック、タイプの使用法の訂正、さまざまな JavaScript における注意点についての警告も行ってくれます。
これは素晴らしい。Closure CompilerはGoogle製でブランド力はあるのだが、
Javaが必要だったのがJavaScriptの世界に馴染めなかったんだ。
ただbabelはその先を行っていて、拡張可能な仕組みでES2015だけじゃなく
JSX対応とかコード変換にまつわることをサポートするツールになってるんだが、
対抗馬に鳴るだろうか?
424:デフォルトの名無しさん
16/09/17 08:30:02.95 0xe0k3r9.net
>>419
無駄な長文引用は止めてほしいものだな
BabelとClosure Compilerは用途が異なるので競合にはならない
425:デフォルトの名無しさん
16/09/17 13:55:23.53 YjgX2ujU.net
'use strict';
"use strict";
のどちらでも良いですか?
上級者の人はどちらを使いますか?
426: ◆SEdFBOkLSw
16/09/17 13:56:43.79 gYNx5cgj.net
その先を行ってる訳じゃないでしょ。
Javaが必要だった、と言うが、そんな事なんの問題でも無いと思う。
結局、どっちも、誰かの言う「良くないJavaScript」を「良いJavaScript」に変換するだけの存在。
427:デフォルトの名無しさん
16/09/17 15:18:00.80 530UZtkB.net
>>421
シングルの方がシンプルなので好まれる
ただJSONを書くときとの整合性を考えるとダブルになる
428:デフォルトの名無しさん
16/09/17 17:33:41.59 YjgX2ujU.net
>>423
JSONでシングルは使えないのですか?
429:デフォルトの名無しさん
16/09/17 17:43:37.89 5r5hyKhZ.net
> ただJSONを書くときとの整合性を考えるとダブルになる
そんなどうでもいいところの整合性なんて考えなくていい。
JSONとの整合性を保つ意味がない。
430:デフォルトの名無しさん
16/09/18 05:27:32.37 /bzuSpCV.net
俺はそういうとこを突き詰める人間のほうが好きだけどね。
プログラミングには少なからず美的要素が含まれるから。
少なくともそういうところを考えず放って来た者は上級者ではない。
431:デフォルトの名無しさん
16/09/18 11:44:00.08 8zKQ5/pX.net
>>426
意味がわからん。
JavaScriptとJSONは似ているが別の言語と考えるべき。
言語に応じた最適な書き方を求めるべきであって、
別の言語の習慣を持ち込むなって話なんだけど?
432:デフォルトの名無しさん
16/09/18 12:18:29.13 JCfSaSaV.net
>>426
Cobolみたいな表記が良いの?
433:デフォルトの名無しさん
16/09/18 12:26:41.43 Wkbj4nCn.net
JSONはCSVやXMLと同じ一つのフォーマットに過ぎない
434:デフォルトの名無しさん
16/09/18 15:20:31.34 0+yFEvXA.net
JSONがJavaScript Object Notationであることを勘案すると>>423は以下の様に翻訳できる
>ただJSONを書くときとの整合性を考えるとダブルになる
ただオブジェクト宣言時の表記との整合性を考えるとダブルになる
正直どうでもいいな
435:デフォルトの名無しさん
16/09/18 15:36:58.44 7fymcmTA.net
整合性ではなく、統一性なんだがw
436:デフォルトの名無しさん
16/09/18 15:45:54.06 8zKQ5/pX.net
統一する理由がない
437:デフォルトの名無しさん
16/09/18 16:59:06.74 /bzuSpCV.net
統一する理由がない。
つまりそれはどっちでもいいと言うことだろう?
逆にどっちが良いかの理由を探すのならそういうことも理由になり得るということだ。
君がそういうことを理由としないというのは結構だが、
理由とする人がいることは認めないといけない
438:デフォルトの名無しさん
16/09/18 17:17:43.50 8zKQ5/pX.net
>>433
統一する理由がないと言ったのは、JavaScriptと
JSONのクォートの使い方を統一する必要が無いという意味ね。
JavaScriptはJSONじゃないんだから。
だからJSONを持ち出してきた事自体をなかったことにしろということ。
どちらにするかは採用するコーディング規約に従えばいいだけ。
439:デフォルトの名無しさん
16/09/18 17:27:13.31 xD5NzQXy.net
>>433
それは理由になっている場合の理屈
君のそれが「正当な理由になってない」という事では?
440:デフォルトの名無しさん
16/09/18 17:41:30.85 xD5NzQXy.net
JSONとJavaScriptでは言語体系が違うからなあ
JSONはJavaScriptの文法を真似ているだけのファイルフォーマットだからね
JSONとJavaScriptのクォートを統一するのはPHPとJavaScriptのクォートを統一するようなもの
441:デフォルトの名無しさん
16/09/18 17:45:59.39 xD5NzQXy.net
現実的な理由としてHTMLタグをJavaScriptコードに埋め込む場合、文字列リテラルでダブルクォートを使っているとHTML要素の属性を括る文字にシングルクォートを使わないとエスケープが面倒くさいというのがある
HTML文書でシングルクォートを使っているなら統一性が生まれるけど、ダブルクォートを使っているならJSでは逆にシングルクォートを使った方が統一感があっていい
あまりないけど、サーバサイドスクリプトを介在してJSONをJavaScriptコードに埋め込む場合もシングルクォートを使っていた方が都合がよい
442:デフォルトの名無しさん
16/09/18 18:18:08.32 7fymcmTA.net
a = "123';
b = '456";
前後のクォートが異なる ※整合性
a = "123";
b = '456';
a b のクォートが異なる※統一性
JavaScriptに対しての統一性だと言ったんだよ
整合性が保たれていないと動作しないだろw
443:デフォルトの名無しさん
16/09/18 18:58:00.12 /bzuSpCV.net
>>435
まず、どっちで書いても機能的には変わらないということが大前提にあるよね
そうしたらもう気分とかそういう人間側の都合になってくるわけよ
例えばHTMLではダブルが使われる事が多いので、
実際に埋め込むことは滅多にないだろうし、今はテンプレートリテラルもあるけれど、
気分的にJSではシングルを使うとかね
逆にそういう事が理由でないという人が今どちらかを使っている理由を聞きたい
その日のサイコロで決めてるというのでなければ理由があるはずだ
例えば本に書いてあったとか、最初に習ったのがこっちだったとかね
自分はそういう理由も理由だと思うけれど、
まだ大前提のうちでは理屈として一般的で、まだマシに意味がある想像を述べることを推してるのよ
444:デフォルトの名無しさん
16/09/18 22:55:44.47 8zKQ5/pX.net
>>437
> あまりないけど、サーバサイドスクリプトを介在してJSONをJavaScriptコードに埋め込む場合もシングルクォートを使っていた方が都合がよ
そんなことしてるならコードを見直したほうが良いよ。
普通はJavaScriptオブジェクトをJSONに変換する。
445:デフォルトの名無しさん
16/09/18 23:18:12.13 8mgjQq3k.net
>>439
あなたのいう「認める」とは何?
端から見ればあなたがJSONとの統一性を気にしない人を「認めていない」のだが
446:デフォルトの名無しさん
16/09/19 05:07:37.39 io387Cln.net
すみません、よそ者ですが、
そもそもなぜ '' や "" で囲う必要があるのですか?
use strict;
ではダメな理由を教えていただけますでしょうか?
447:デフォルトの名無しさん
16/09/19 05:42:42.21 Rfn/Judi.net
>>442
use strictに対応してないブラウザでエラーが出るからだよ。
文字列にしておけば、古いブラウザでも単なる文字列があるだけ。
448:デフォルトの名無しさん
16/09/19 11:33:59.10 io387Cln.net
>>443
ありがとうございました。
長年の疑問が解消しました。
449:デフォルトの名無しさん
16/09/20 00:04:22.78 DlF8DRLC.net
Angular2で出来て、Vue.jsで出来ないことはどのような事がありますか?
また逆はありますか?
450:デフォルトの名無しさん
16/09/20 15:54:14.06 GpfqQSu0.net
頭が相当悪いみたいだね?
一行目そのまま検索しろよw
451:デフォルトの名無しさん
16/09/21 14:44:20.17 wW2qFR9f.net
すまん、言い過ぎた
反省してる
452:デフォルトの名無しさん
16/09/22 17:06:35.53 zXBENXMk.net
誰かflow使ってる人いる?
453:デフォルトの名無しさん
16/09/23 12:16:27.04 QcEXcfJB.net
統一する必要は無いけど、覚える量を減らしたいので統一しているよ。
454:デフォルトの名無しさん
16/09/23 13:55:08.58 AF/DJJLc.net
>>449
何の話?
455:デフォルトの名無しさん
16/09/23 22:25:12.59 MCHe7LJO.net
>>449
RubyとJSONで "" と '' のどっちを使うかという話だろう?
456:デフォルトの名無しさん
16/09/23 23:00:49.95 MCHe7LJO.net
正直JSONを手書きするのはやめたほうが良いよ。
ライブラリを使って(各言語の)オブジェクトとJSONの
相互変換をした方がいい。だからJSONが""でくくられてる
なんか忘れるべき。
ただテキストエディタのatomとかの設定ファイルや
package.jsonとかがJSONだったりするんだよな。
手書きは全部YAMLにすればいいのに。
457:デフォルトの名無しさん
16/09/23 23:18:21.05 oC1wKf1S.net
>>451
JSONは"しか使えないから選択肢はないだろうに
>>452
> 正直JSONを手書きするのはやめたほうが良いよ。
同意、JSならJSON.stringifyで十分だな
458:デフォルトの名無しさん
16/09/23 23:27:17.39 Da0YgZYz.net
元々はjavascriptをシリアライズする為の物だったんだよね?
手書きする事はあまり考えられてなかったんじゃねーの
459:デフォルトの名無しさん
16/09/23 23:30:53.64 laz5P8lZ.net
設定ファイルをjsonで書くの多いだろ
jsonに変換するツール書くかのか? w
460:デフォルトの名無しさん
16/09/23 23:35:07.87 aAYGOufH.net
ツールなんか使わなくともシリアライズする機能が各言語で用意されてるからな
461:デフォルトの名無しさん
16/09/23 23:46:44.92 laz5P8lZ.net
はあ?
じゃ【設定】はどこに書くんだよ w
462:デフォルトの名無しさん
16/09/23 23:51:52.39 2jAc0sAD.net
JSON.stringify({a:1, b:2}); とか、普通にやるだろ
JSONを全部手書きしたらプロパティ名をクォートで括らなければならんし、面倒くさい
簡単なJSONの書き換えなら手入力するかもしれんが
463:デフォルトの名無しさん
16/09/24 00:04:59.40 y4/Y2YH6.net
お前、設定項目が数個のプログラムしか作った事ないのか? w
そんでもってa:1をa:2に書き換えたら、その都度そのプログラム実行するのか? 大爆笑
464:デフォルトの名無しさん
16/09/24 00:11:43.60 8/0tEXHb.net
>>459
おまえは読解力が足りないアホなのか
数個だろうが何個あろうが、複数あるからシリアライズする価値がある
簡単な書き換えなら手入力するといってるだろ
465:デフォルトの名無しさん
16/09/24 00:18:30.72 y4/Y2YH6.net
お前はアホなのか?情報は一元管理が鉄則
これに反すると
"a":1を"a":2に書き換えてa:1をa:2に書き換えるハメになる
バカしかやらんわ
466:デフォルトの名無しさん
16/09/24 02:14:00.16 bcRI8Hfy.net
>>459
プログラムを実行も何も、ワンライナーじゃえの
var j=JSON.parse(fs.readFileSync(...));j.hoge=aaa;fs.writeFileSync(JSON.stringify..
467:デフォルトの名無しさん
16/09/24 06:05:18.86 54HKSWWZ.net
promptでダイアログボックスを表示して、キャンセルを押すとNaNが返ってきます。
ダイアログボックスのキャンセルはNullが返ってくるとあったのですが、何がいけないのでしょうか?
見入力でOKを押した場合と、キャンセルを押した場合とで違う処理をしたいと思っています。
468:デフォルトの名無しさん
16/09/24 08:35:07.11 8/0tEXHb.net
>>461
>>462藻指摘してるが、JSON.parseしてからJSON.stringifyするだけだろ
2箇所を同時に書き換えなければならない、なんて思ってるのはお前だけ
469:デフォルトの名無しさん
16/09/24 09:16:15.32 y4/Y2YH6.net
>>464
後出し大将現る
> JSON.stringify({a:1, b:2}); とか
470:デフォルトの名無しさん
16/09/24 10:00:58.09 T2jfomp1.net
>>463
知らんけどブラウザ依存じゃない?
URLリンク(jsbin.com)
Chromeだと false だった
471:デフォルトの名無しさん
16/09/24 12:47:39.74 NUokNM1t.net
>>465
元々はJSONを入力する時の話だったからJSON.stringifyを紹介した
お前さんが「JSONとオブジェクト初期化子の2箇所を同時に書き換えるのか」とアホな事をいってJSON読み込みの必要が出てきたからJSON.parseを紹介した
お前さんが何の設定する事を想定していてどのように編集しているのか、俺は知らん
俺から見れば情報を曖昧に出して後出ししたのはお前の方
472:デフォルトの名無しさん
16/09/24 12:51:25.63 NUokNM1t.net
後な
JSONの設定編集は当初の>>421の質問からは大きく話題がずれてる
JSONの設定に合わせてJavaScriptコードの入力スタイルを決める必然性はまるでない
君はそうなんだろうが、別の言語同士でクォートの記述を合わせる必要はないからな
GoogleのJavaScript Style Guideに合わせてシングルクォートを使う人もいるだろう
見た目を気にしてシングルクォートを使う人もいるだろう
HTMLで見慣れているダブルクォートを使う人がいるかもしれない
最終的には自分なりの好みや優先順位で決まるもので他人の考えを否定出来るほどの論理は基本的にない
473:デフォルトの名無しさん
16/09/24 12:58:58.18 YdAnVmLb.net
勝手に整合性を自己定義している時点で間違い
474:デフォルトの名無しさん
16/09/24 13:04:04.59 y4/Y2YH6.net
後出し大将あらため言い訳番長
【設定ファイル】って知らないらしい
475:デフォルトの名無しさん
16/09/24 13:56:12.12 e4J3FKju.net
>>470
何の設定ファイル?
JavaScriptには設定ファイルなんてないぞ。
476:デフォルトの名無しさん
16/09/24 14:33:05.17 y4/Y2YH6.net
おバカですねえ、揚げ足取りにすらなってない
477:デフォルトの名無しさん
16/09/24 15:28:20.96 e4J3FKju.net
揚げ足取りではなくて、質問なんだが?
質問なのに揚げ足取りに鳴るわけ無いだろw
それで、何の設定ファイル?
478:デフォルトの名無しさん
16/09/24 17:56:14.37 y4/Y2YH6.net
そんじゃ、質問で返してやるよ
キミが知ってる【設定ファイル】を読み込むプログラムを記述してる言語を答えよ。そしてその記述言語の設定ファイルの有無も答えよ。
これに回答できたら教えてあげる
479:デフォルトの名無しさん
16/09/24 18:01:32.86 fVgLvkCD.net
こっちにも貼っとくか…
URLリンク(i.imgur.com)
自分がレスを返してる相手がレスを返す価値のある相手かよく考えろよ
480:デフォルトの名無しさん
16/09/24 18:32:49.67 fP/MPmfi.net
AutopagerizeのSITEINFOはJSONだな
URLリンク(wedata.net)
481:デフォルトの名無しさん
16/09/24 20:38:30.75 6IMs83+U.net
>>474
C言語。そしてC言語に設定ファイルなんてものはない。
482:デフォルトの名無しさん
16/09/24 20:43:52.34 y4/Y2YH6.net
>>477
じゃ、教えてあげよう
atom
483:デフォルトの名無しさん
16/09/24 21:27:12.07 6IMs83+U.net
>>478
atomはテキストエディタ
484:デフォルトの名無しさん
16/09/24 21:37:31.21 y4/Y2YH6.net
>>479
そうだよ。javascriptの設定ファイルなんて誰も言ってないのに
どっかのバカがこんな(>>471)マヌケな事言い出したから。ハア? だよ
>>471
>>>470
>何の設定ファイル?
>JavaScriptには設定ファイルなんてないぞ。
485:デフォルトの名無しさん
16/09/24 22:28:02.67 /TWDHHcN.net
xjsonとか云うの出すらしいから
手書きも増えるし、要求されるかもしれない。
486:デフォルトの名無しさん
16/09/24 23:10:20.02 6IMs83+U.net
>>480
意味がわからん。
atomの設定ファイルをJSONで書くからって
C言語などでJSONに合わせてコード書く必要ないだろ。
487:デフォルトの名無しさん
16/09/24 23:39:01.41 y4/Y2YH6.net
>>482
それはキミがバカだからわからないんだよ
JSONで記述された設定ファイルの話をしていたら、どっかのバカが
>何の設定ファイル?
>JavaScriptには設定ファイルなんてないぞ。
と、絡んできただけ
488:デフォルトの名無しさん
16/09/25 00:39:56.37 0J+83ZC2.net
>>483
だからJSONで記述された設定ファイルの話を
JavaScriptのスレでする意味ないだろって話なんだが?
489:デフォルトの名無しさん
16/09/25 05:34:54.46 y4/VuarS.net
もういいよ
皆>>483が正しいって分かってるから
>>484は放っておこう
490:デフォルトの名無しさん
16/09/25 07:44:51.98 qiD59u34.net
そうでないかと危ぶんでいたが、やはり、Atomだったか
Atomの設定ファイルをテキストエディタで編集するのはcsonだと思うが、jsonを編集する事なんてあるのか?
改行もインデントもされてないjsonファイルを直接編集するのはいかれてるとしか思えないんだが
> 皆>>483が正しいって分かってるから
本人しか同意してないように読めるけどな
491:デフォルトの名無しさん
16/09/25 08:41:36.29 hrPU7kVw.net
>>463 >>466
jQuery UI のダイアログでも使えば?
OK, Cancelの2つのボタンしか無いなら、
if(OK){ }
else { }
でいいだろ
戻り値が、NaN というのは、数値変換エラーだから、プログラムにバグがある
>>486
圧縮された、JSファイルでも、Edgeの開発者ツールなどで、きれいに整形して表示してくれる
492:デフォルトの名無しさん
16/09/25 09:50:51.04 KU3wtz+G.net
>>484
>だからJSONで記述された設定ファイルの話を
>JavaScriptのスレでする意味ないだろって話なんだが?
足りない頭で必死に考えたんだろうが、バカ過ぎる
あるアプリの設定ファイルを設計したい、javascriptなのでJSONで行こうと思うが、
その際の注意点は…
全然問題ない
493:デフォルトの名無しさん
16/09/25 10:03:00.83 NgaD/H31.net
そうだよな、設定ファイルがJSON形式というだけ
494:デフォルトの名無しさん
16/09/25 10:13:15.83 qiD59u34.net
>>487
いや、「config.csonを編集することはあってもapplication.jsonを編集することはないんじゃない?」って事
テキストエディタの設定ファイルをテキストエディタで編集するなら、コメントやインデントをつけたくなるし、俺はAtomでJSONファイルを編集したことがない
> 圧縮された、JSファイルでも、Edgeの開発者ツールなどで、きれいに整形して表示してくれる
そういうツールがあるのは知ってる
JSONを整形するなら内部的にJSON.parseと同等機能を使っているはずだが、彼(>>465)はなぜか否定的というか馬鹿にしている感があるし、主張がちぐはぐすぎるんだよな…
495:デフォルトの名無しさん
16/09/25 10:27:53.21 qiD59u34.net
そもそも、JSONはテキストエディタで直接編集することを踏まえていない感がある
インデントはできるが、コメントは使えない時点でテキストエディタで編集する気が起きない(Atomで膨大な設定用プロパティを全て覚えるのは無理)
どうしても必要な状況があれば「JSON エディタ」的な何かを使うだろうな
実際には>>476のように設定用UIを別に作っているケースが多いと思う
Atomはユーザが直接編集するものはCSONかCoffeeScriptを使い、プログラム側で生成するものはJSONを使っている
496:デフォルトの名無しさん
16/09/25 12:11:22.44 qud+/4QR.net
うーん。設定用UIねえ
ゲームエンジン作ったときの話だけど
ユーザー側の設定用UIはボチボチ作るというかJSONにしないけど
そのエンジンの設定ファイルを書き出すためのツール作らないでしょ
バージョンアップの度にUI弄って書き出すのか?と言うことになるし
intファイルと同じく手編集もするものだと思うよ
で、コーディングと一緒に書いていくから、クォーテーションの整合性を気にするのも自然
497:デフォルトの名無しさん
16/09/25 12:22:42.62 iekzKwrb.net
JSONがテキストエディタで編集するのに向かないって話じゃないの?
CSVをテキストエディタで編集しないのと同じ
498:デフォルトの名無しさん
16/09/25 12:24:56.98 iekzKwrb.net
>>492
iniはコメントを許す仕様じゃなかったっけ
テキストエディタで編集する前提ならその設定行の意味するところをコメントで書くべきだと思うな
499:デフォルトの名無しさん
16/09/25 13:28:03.63 0J+83ZC2.net
>>488
> あるアプリの設定ファイルを設計したい、javascriptなのでJSONで行こうと思うが、
別にJavaScriptだからってJSONを使う理由はないし
RubyだってJSONを使うことだってある。
っていうか、その理屈だとYAMLはいつ使うんだよ?w
YAMLみたいな言語はないぞ。
500:デフォルトの名無しさん
16/09/25 13:32:12.13 0J+83ZC2.net
Atomの例でわかるように、JSONが" " でくくられているからって、
JavaScriptのコードは "" で括る必要はないね。
501:デフォルトの名無しさん
16/09/25 13:33:11.00 V/4I7o9u.net
>>495
YAMLみたいな言語、がようわからんね。
Yaml ain't markup language
なんだから、言語ではないよ。
502:デフォルトの名無しさん
16/09/25 13:33:55.60 0J+83ZC2.net
>>497
だから設定ファイルの流儀をソースコードに持ち込むなって話だよ。
atomの例で分かったろw
503:デフォルトの名無しさん
16/09/25 13:53:31.79 V/4I7o9u.net
>>498
そりゃ変だよ。
パースできるものとソースの書式が同じでなんの問題も無いし、
存在意義とか目的によって、サブセットになるのは至極当然な気がするが。
504:デフォルトの名無しさん
16/09/25 13:56:15.35 6/nEO/uB.net
evalでパースすれば関数もパース出来るし、式も使える
コメントもあるし、""をキーに使わなくていいし、''を使う事も出来る
505:デフォルトの名無しさん
16/09/25 14:39:36.71 0J+83ZC2.net
>>499
話がずれてる。同じだと問題があるなんて一言も言ってない。
同じにする必要はない。設定ファイルのことなんか忘れて
JavaScriptのやり方として良い方を選べって言ってる。
その例としてAtomを出したんだが?わからなかった?
Atomは設定ファイルにJSONを使っているが、
JSONが""だからって、ソースコードは""にする必要はない。
506:デフォルトの名無しさん
16/09/25 14:41:15.30 0J+83ZC2.net
>>500
それはJSONの仕様を満たしていないから
JSONではない。
507:デフォルトの名無しさん
16/09/25 14:54:10.10 hrPU7kVw.net
>>491
JSONでは、JSのコメントが使えないの?
それならダメだわ
Ruby, Groovy みたいに、言語そのものが、
設定ファイルとしても読める、DSL風の言語が優れている
508:デフォルトの名無しさん
16/09/25 15:05:45.98 0J+83ZC2.net
>>503
お前「言語そのものが設定ファイル」の意味分かってないだろ。
言語そのものを設定ファイルとして読むっていうのならどの言語でも可能だよw
コンパイルしないと実行できない言語の場合は
コンパイラを内蔵する必要があるだろうけど。
509:デフォルトの名無しさん
16/09/25 15:36:47.03 y4/VuarS.net
>>501
「必要はない」じゃないんだよ
「ない」という答えを出すのは簡単
元の質問に、「そんなのどっちでも関係ない、そんなこと聞くな」というのは簡単
でもそれじゃつまらないから、しいて言えばの理由をひねり出してるんでしょ
その前提分かってそういうこと言ってる??
しいて言えばそういうこと気にする人もいるということを言ってるの
別に一般的に気にする必要があるとは誰も言っていない
510:デフォルトの名無しさん
16/09/25 15:38:42.41 0J+83ZC2.net
はぁ?
じゃあGoogleのコーディングスタイルに合わせて
'' を使うべきだっていうのが正確だよw
511:デフォルトの名無しさん
16/09/25 15:39:13.51 0J+83ZC2.net
あ、見にくかったな。
' ' (シングルクォート)でくくるべきだっていうのが正解だよ。
512:デフォルトの名無しさん
16/09/25 15:51:35.05 0J+83ZC2.net
どっちが良いのかは、実際にどちらが多く使われてるかで決めたほうが良いよ。
URLリンク(sideeffect.kr)
理由がある場合は必然的に多く使われるし
理由がなくとも一般的なJavaScriptの書き方として統一しておいたほうが良い。
あともちろんJavaScriptとしての話なので、
ここで他の言語のルールを参考にする必要はまったくないw
513:デフォルトの名無しさん
16/09/25 15:59:27.55 0J+83ZC2.net
数もそんなにないし転記しようかね? (俺のスタイルと完全に一致してるw)
・最後にカンマ vs 最初にカンマ → 最後にカンマ
○ var obj = {
foo: 1,
bar: 2,
× var obj = {
foo: 1
, bar: 2
・スペース vs タブ → スペース
・関数名の後にスペースを入れる vs いれない → 入れない
○ function foo() {
× function foo () {
・引数の前後にスペースをいれる vs いれない → 入れない
○ function fn(arg1, arg2) {
○ if (true) {
× function fn( arg1, arg2 ) {
× if ( true ) {
・オブジェクト定義の:の前後にスペースを入れる → 値の前のみに入れる
○ foo: 1,
× foo:1,
× foo : 1,
・条件文のキーワードの後にスペースを入れる → 入れる
○ if (true) {
× if(true) {
・シングルクォート vs ダブルクォート → シングルクォート
514:デフォルトの名無しさん
16/09/25 16:00:55.47 rgw8PMte.net
前から疑問なんだが
JSONはなぜ大文字なの?
515:デフォルトの名無しさん
16/09/25 17:02:28.76 +OU/FywJ.net
>>510
JavaScript Object Notationの略であり、英語ではこの様に単語の頭文字を抜き出した略語を他の語と区別するために大文字で表記する慣習があるから
516:デフォルトの名無しさん
16/09/25 17:17:23.26 0J+83ZC2.net
つーかatomの例を出したんだから
そこから理解しろよw
JSONとJavaScriptは別物なんだから
JSONがダブルクォートだからって、
ソースコードまでJSONに合わせる必要ねーだろ。
文字列をくくるのはシングルクォートだし、
オブジェクトのキーであればそもそもクォートでくくらない。
517:デフォルトの名無しさん
16/09/25 17:20:48.99 iekzKwrb.net
>>503
JSONではコメントを使えないのでAtomではテキストエディタで編集する前提のファイルにはCSONを使っている
上でJSON云々で暴れている人はJSONをまるで理解してしないと思われる
518:デフォルトの名無しさん
16/09/25 18:25:59.06 afVL0VXc.net
どっかでみた感じのテンションの上がり方だな。
尻カンマではなく頭改行カンマ派だと言うことはおいといて、
なぜその言語のサブセットか自体であるべきではないと言い切っちゃうんだろう。
最悪、パーサが無くても解釈出来るようにだと思うんだが。
519:デフォルトの名無しさん
16/09/25 18:34:17.91 KU3wtz+G.net
>>513
頭悪いな
じゃpackage.jsonでも、なんでもいいぞ
atomを使ってないのは正解だ
520:デフォルトの名無しさん
16/09/25 20:12:32.35 0J+83ZC2.net
知らないかもしれないが、package.jsonっていうのはnpmの話だ。
ソースコードをみれば、何が言いたいのかわかるだろう。
URLリンク(github.com)
JSONの流儀に合わせるやつなんていない。
521:デフォルトの名無しさん
16/09/25 22:29:45.99 Pt+ww3lU.net
package.jsonをテキストエディタで書く人がいるとは…
彼は反論する度にボロが出てくるな
522:デフォルトの名無しさん
16/09/26 00:08:05.47 fnqveAbt.net
奴隷のように決められたパターンでしか使わないなら、手書きしないでも済むだろうね
523:デフォルトの名無しさん
16/09/26 00:15:10.40 juGwjv/D.net
>>518
奴隷のようにって必要なくね?w
package.jsonは決められたパターンでしか
使わなくて済むようになってる。
だから手書きする必要もない。
OK?
524:デフォルトの名無しさん
16/09/26 00:17:22.71 fnqveAbt.net
それは奴隷のキミだけ
525:デフォルトの名無しさん
16/09/26 00:23:18.72 vYe4FNCy.net
奴隷のように決められたフォーマット(JSON)でしか書かない人は誰だろうね
526:デフォルトの名無しさん
16/09/26 00:32:59.19 juGwjv/D.net
なんかまだ気づいてないみたいだけど、npmの
ソースコードはダブルクォートじゃなくて
シングルクォートを使ってるんだよ。
そしてオブジェクトのキーはダブルクォートでくくらない。
これがJavaScriptの標準的なコーディングスタイルなんだよね。
JSON? 関係ない話だね。
527:デフォルトの名無しさん
16/09/26 05:04:27.74 ta1cG+2z.net
そのコーディングスタイルでは関係ない、無視しているというだけで
気になる人も居るだろうということを否定することはできない
528:デフォルトの名無しさん
16/09/26 18:00:26.14 BmhEYJ2V.net
ang2で2つの要素をforするにはどうすればいいですか?
定義リストをforで回したいです
529:デフォルトの名無しさん
16/09/26 22:08:18.59 vSvkRnqZ.net
>>524
ang2とは?
状況は詳しく具体的に
530:デフォルトの名無しさん
16/09/26 22:38:26.95 juGwjv/D.net
ang2っていったらAngular2のことに決まってるだろ
531:デフォルトの名無しさん
16/09/26 22:44:16.17 xBbiKNTT.net
配列の要素を順番に、かつ非同期に処理するにはどうすりゃいいの?
[a,b,c].forEach((x)=>{
//?
});
コメントの部分にawait書いても当然エラー
(x)=>{の前にasync書いても並列で処理されるだけ
aを使った非同期処理が完了したらbを使った非同期処理を開始したい
なおforや再帰は使わないものとする
532:デフォルトの名無しさん
16/09/26 23:41:32.26 juGwjv/D.net
>>527
あんたが言ってる「非同期」の正確な意味は?
JavaScriptはシングルスレッドだから並列に処理することは出来ない。
昔も今もそれは同じ。
スレッドを使うにはJavaScript外の機能を使うしかない。
つまりはブラウザではDOM APIの内部で使われてるスレッドを間接的に使うか
もう少し明確にスレッドを使っていることを明言しているWebWorkersを使うということ。
Promise(await/async)を使うだけならばシングルスレッドでもできる。
どういう意味で「非同期」と言っているか、本当にやりたいことは何かを言ってくれ。
533:デフォルトの名無しさん
16/09/26 23:55:09.05 xBbiKNTT.net
>>528
たとえば以下で'a'を表示したら1秒待って'b'を表示させる(以下'c'も同様)にはどうすればいい?
forや再帰は無しで
['a','b','c'].forEach((x)=>{
new Promise(resolve=>{
setTimeout(()=>{
console.log(x);
resolve();
}, 1000);
});
});
setTimeoutはapiだからスレチ?
534:デフォルトの名無しさん
16/09/27 00:26:52.16 2eVdEzmX.net
>>527だけど上のほうに書いてあったreduceでthenを繋げる方法で解決しました
535:デフォルトの名無しさん
16/09/27 09:19:03.59 lbwP9zfe.net
自分でeachAとか作って
await ['a','b','c'].eachA( async関数 )
のように書けるようにする必要がある
折角のasync関数なのにPromiseをこねくり回す位なら
for文使ったほうが絶対に良い
536:デフォルトの名無しさん
16/09/27 09:33:31.51 Bz+GHRpv.net
>>531
だよな、基礎知識の欠落
537:デフォルトの名無しさん
16/09/27 10:20:45.69 4v6Nawqj.net
>>528
言ってることがめちゃくちゃですがな。
並列・平行、同期・非同期についてもっと調べてからものを言ってくれ。
538:デフォルトの名無しさん
16/09/27 10:49:37.22 5SWTtAlN.net
ループ中にsetTimeoutという概念が理解できないわ
539:デフォルトの名無しさん
16/09/27 11:02:56.83 +FylPIiv.net
>>534
Watch dogタイマー知っている?
あれなんか、簡単な例だと思うよ。
540:デフォルトの名無しさん
16/09/27 12:31:43.94 r4YBGm4y.net
>>535
>>530の解決を見ると例にもならないな
541:デフォルトの名無しさん
16/09/27 12:41:12.30 +FylPIiv.net
>>536
? 配列要素処理のお話の事なの??
前からお話していた、非同期処理の周期タイマー利用のお話だと思ったけど。
配列要素処理なんだから、mapやreduce使えば済むんだもんね。
タイマーなんか関係ないわ。
542:デフォルトの名無しさん
16/09/27 12:49:21.75 BPXrtVfk.net
>>534
JSはシングルスレッドだから、イベントを非同期に見せかける。
イベントキューにイベントを投入して、その処理を待たずに、関数が先にリターンする
同期処理なら、インターネットとの通信など、
そのイベントが終了するまで、関数がリターンされない。
処理終了まで待つから、そこで処理が止まる
ちなみに、setTimeoutに、0を指定しても、イベントキューからイベントを取り出すのは、
次のサイクルになるので、最低でも、4msかかる
また非同期では、try-catch は使えないので、
昔ながらの戻り値で、エラーかどうかを判断する
つまり、イベントキューにイベントを投入するだけなので、
処理がそこで止まっていないので、すぐ次の処理へ進んでいくから
そしてどこかのタイミングで、イベントのコールバック関数が呼ばれるから、
どちらが先に呼ばれるか、タイミングが予測できないから、
よくバグるし、再現性がないので、非常に困る
543:デフォルトの名無しさん
16/09/27 13:25:00.83 QIjlBim5.net
>>529
setTimeoutはまあ非同期処理のダミーだとして回答すると、Promiseをプレースホルダーとしてthenでチェーンをつないでいけばいいので以下の様になる。
var promise=Promise.resolve();
['a','b','c'].forEach((x)=>{
promise=promise.then(()=>{
new Promise((resolve,reject)=>{
setTimeout(()=>{
console.log(x);
resolve();
}, 1000);
});
});
});
544:デフォルトの名無しさん
16/09/27 20:48:56.77 pg5DZ73n.net
>>533
質問者とは意思疎通できたから
君とは話さなくていいかなって思ってるよw
545:デフォルトの名無しさん
16/09/28 08:12:30.32 zSRNZ6Ju.net
何かを理解したい、何かの知識が無い人間とだけ意思疎通できるってみっともないと気づかんのかねぇ。
そりゃ単に、語弊があったり正しいとは限らない言い方をしている事に自分が気づいてないのに加えて、飛んでくるマサカリ避けて終わりな、
とても低レベルな偽技術者ですってドヤ顔されてる気分。
546:デフォルトの名無しさん
16/09/28 12:21:35.90 3RTmt4Yz.net
すみませんdwrについての質問はここでよろしいのでしょうか
547:デフォルトの名無しさん
16/09/28 12:49:31.69 RDlboUCA.net
Access-Control-Allow-Origin: *
の設定をサーバーでしているのに、クロスドメイン制約でアクセス出来ません
chromeです
networkタブを見たら、アクセス自体が行われていないので、ヘッダの確認も出来ていないはずです
548:デフォルトの名無しさん
16/09/28 21:34:41.98 NVy1RbGE.net
>>541
> 何かを理解したい、何かの知識が無い人間とだけ意思疎通できるってみっともないと気づかんのかねぇ。
何を言ってるんだ?
今回意思疎通をしたいのは質問者であってお前じゃない。
知識がない人と意思疎通をするんじゃなくて
質問者と意思疎通をするのが目的。
そもそも俺は質問者が知識がないとはは思わないし、
お前、失礼なやつだな。失礼なだけのやつだな。
549:デフォルトの名無しさん
16/09/28 22:27:51.60 EXLHhJLL.net
>>544
「何かを理解したい」と「何かの知識が無い」は=じゃなくて、「または」だよ。
失礼と言うなら、「俺が『何かを理解したい人間は何かの知識が無い人間だ』と誤解しているに違いない」と言う発想自体が失礼だと思うけど。
お前がやってんのは、Excelの使い方が分からん人の「A列で3番目に大きい数字が欲しいんだけどどんな関数ある?」って質問に、嬉々としてIFとかRANKの使い方説明してるようなもの。
パソコンの大先生以外の何なのかわからんレベル。
何で?→それ以上の数字を更に検索したいんだよ→めんどくさいし使い捨てならA列コピって並べ替えちゃえば良いじゃん
があって然るべき。
550:デフォルトの名無しさん
16/09/29 02:37:58.14 kaW1Iqgz.net
それは間違ってるよ
ここは似非回答者が知識をひけらかす場所だからね
けして人助けするスレではない
そこんとこ勘違いしないように!
551:デフォルトの名無しさん
16/09/29 18:44:44.84 KUMvFnA4.net
>>546
babel君のオナニースレだからねえ。
552:デフォルトの名無しさん
16/10/04 11:14:52.40 R4xZGg72.net
オブジェクトをjson化した文字列がサーバーサイドにあり、
それをクライアントのJSに渡してオブジェクトに復元したいのです。
JSON文字列のままJSに渡してJSでJSON.parse()する方法と、
サーバーサイドでDeserializeしてオブジェクトを復元して、
それをJSに渡すのと
どっちが普通ですか?文字列の大きさは数メガバイトくらいです。
553:デフォルトの名無しさん
16/10/04 12:19:52.18 Vg4EUv8s.net
>>548
JSでJSON.parse()が普通
通信路は負荷が無いならなるべくテキストでな
554:デフォルトの名無しさん
16/10/04 18:21:44.79 RzipCig6.net
<input type="button" name="aaa" value="クリック" onClick="Disp_on_off('disp');">
<TABLE border="1">
<TR>
<TD>1行目:</TD><TD>aaaaaa</TD>
</TR>
<TR id="disp">
<TD>2行目:</TD><TD>nnnnnn</TD>
</TR>
</TABLE>
555:デフォルトの名無しさん
16/10/04 18:22:25.04 RzipCig6.net
function Disp_on_off(id){
var disp_zyoutai = document.getElementById(id).style.display;
if(disp_zyoutai=="none"){disp_zyoutai = "block";}
else{disp_zyoutai = "none";}
document.getElementById(id).style.display = disp_zyoutai;
}
テーブルの2行目をクリックボタンを押すたびに表示非表示にしたいんですが
クリックを2回押して2行目を表示させるとテーブルが崩れてしまいます
テーブルが崩れないようにするにはどうしたらいいんですか?
556:デフォルトの名無しさん
16/10/04 19:59:17.28 oFIFwTqQ.net
>>551
if(disp_zyoutai=="none"){disp_zyoutai = "table-row";}
557:デフォルトの名無しさん
16/10/04 21:56:34.90 px5zXLds.net
>>551
function Disp_on_off(id) {
var style = document.getElementById(id).style;
style.display = (style.display === "none") ? "table-row" : "none";
}
558:デフォルトの名無しさん
16/10/04 21:56:43.31 RzipCig6.net
>>552
ありがとう^^
それではcssでdisplay:none;したものをjavascriptでdisplay="block";
しようとしても表示されませんcssでnoneしたら表示は無理なんでしょうか?
559:デフォルトの名無しさん
16/10/04 22:00:08.07 px5zXLds.net
function Disp_on_off(id) {
var style = document.getElementById(id).style;
style.display = {none: "table-row"}[style.display] || "none";
}
560:デフォルトの名無しさん
16/10/04 22:01:54.54 px5zXLds.net
>>554
CSSを使って表示の制御をするのはいいやり方だ。
CSSを使って表示の制御をするなら、CSSを使って切り替えれば良いのだ
561:デフォルトの名無しさん
16/10/04 22:10:22.18 px5zXLds.net
<input type="button"value="クリック" onclick="toggleDisp('disp')">
<table>
<tr><td>1行目:</td><td>aaaaaa</td></tr>
<tr id="disp"><td>2行目:</td><td>nnnnnn</td></tr>
</table>
table { border-collapse: separate }
table, td { border: 1px solid #000 }
#disp { display: none }
#disp.visible { display: table-row }
function toggleDisp(id) {
document.getElementById(id).classList.toggle("visible");
}
562:デフォルトの名無しさん
16/10/05 02:32:23.82 ei6gN13W.net
>>549
レスありがとうございました。
>JSでJSON.parse()が普通
そうですか。知らなかったです。
>通信路は負荷が無いならなるべくテキストでな
ちなみに、テキスト以外でデータを送ると問題が出る場合がありますか?
563:デフォルトの名無しさん
16/10/05 05:46:49.56 R0YCD/Ke.net
テキスト以外でデータを送るとは?
WSでバイナリ形式オブジェクトで送るの?
564:デフォルトの名無しさん
16/10/05 19:44:50.64 v4W0ZcSs.net
>>558
パケット見ながらデバッグしてるときに涙が出る程度だよ
565:デフォルトの名無しさん
16/10/05 20:03:03.59 ei6gN13W.net
>>560
そんなデバッグが出来るのかあ?
566:デフォルトの名無しさん
16/10/07 11:00:25.76 NhgFAWyY.net
>>561
Just do it!
567:デフォルトの名無しさん
16/10/09 00:31:57.19 jFWGfuyl.net
angular2
Error: (SystemJS) Can't resolve all parameters for ActivatedRoute: (?, ?, ?, ?, ?, ?, ?, ?).
と出ます。どうすればいいでしょうか?
568:デフォルトの名無しさん
16/10/10 00:56:23.62 tytyuWsD.net
FirefoxのアドオンGreaseMonkeyつかって開いたページにあるワードが含まれてたらアラートするようにしたいんですがどうすればいいんでしょうか?
569:デフォルトの名無しさん
16/10/10 01:00:02.76 tytyuWsD.net
>>564補足
とりあえずRegExp.testつかってやろうとおもったんですけどページの内容をどうやれば検索対象ストリングにいれればいいのかわかりません。
他にももっとスマートな方法あったら教えてください。
570:デフォルトの名無しさん
16/10/10 02:26:33.91 6bVjh2uR.net
>>563
「Can't resolve all parameters for ActivatedRoute」で検索!
>>564-565
Node.textContent
URLリンク(developer.mozilla.org)
var text = document.getElementsByTagName("body")[0].textContent;
<body> か、<head> の内容もいるなら、<html> 以下を取得すればいい
571:デフォルトの名無しさん
16/10/10 11:38:06.31 UL1Nitj4.net
>>566
ありがとうございます
出来ました
572:デフォルトの名無しさん
16/10/10 12:14:26.53 ToNMYAzu.net
>>567
あなたは>>563?
それとも>>564?
573:デフォルトの名無しさん
16/10/10 13:26:43.29 UL1Nitj4.net
>>563です
574:デフォルトの名無しさん
16/10/10 14:12:18.24 tytyuWsD.net
>>566
わてもできたよ。
リンクまではっていただきありがとうございます。
ちなみに[0]はなにですか?
リンク先にも書いてなかったし、なくても出来きたけど。
575:デフォルトの名無しさん
16/10/10 18:59:33.24 Fn778QpQ.net
>>564
なんで猿なんだよ?
576:デフォルトの名無しさん
16/10/10 21:04:02.56 tytyuWsD.net
>>571
よくわかりません。
さるつまりGreaseMonkey以外に使える方法があるということですか?
577:デフォルトの名無しさん
16/10/10 21:27:42.34 c135JfrF.net
>>570
getElementsByTagNameは疑似配列を返す
[0]がなかったら動かないはずだ
578:デフォルトの名無しさん
16/10/11 05:55:53.39 GK6S8De2.net
そうなんですか
579:デフォルトの名無しさん
16/10/11 22:11:58.12 Ld7sCMib.net
document.body でいいだろ。
というか、<html>/<body> 以外は特に querySelectorAll() をできるだけ使え。
もう getElementById(), getElementsByTagName() を使わないようにすべき。
なぜ getElementById() を使わないか?
var e = document.getElementById('E');
if (e) {console.log(e.id);}
と、わざわざ注意して if を書くよりも
[...document.querySelectorAll('#E')].forEach(e => console.log(e.id));
とか
[for (e of document.querySelectorAll('#E')) e].forEach(略);
とか
Array.from(document.querySelectorAll('#E')).forEach(略);
とか
Array.prototype.slice.call(document.querySelectorAll('#E'), 0).forEach(略);
とかの方が簡潔で高抽象で安定するだろ。
さらに、もし
Array.of(document.getElementById('#E')).filter(e => !!e).forEach(略);
なんて書いたら、filter が if と同じことになるわけで、結局、querySelectorAll() にしときゃ良かったとなるわけだ。
なぜ getElementsByTagName() を使わない�