+ JavaScript の質問用スレッド vol.130 + [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
0001Name_Not_Found
垢版 |
2017/07/31(月) 21:10:56.03ID:???
JavaScript を自ら学ぶ人のための質問スレッドです。
>>2-6のテンプレを読んだ上で質問してください。次スレは>>950>>2のテンプレ案(本スレで改善案があれば考慮)を元に立ててください

■規則/推奨ルール
・メール欄を空欄にし、名前にレス番を入れることを強く推奨(なりすまし防止)
・質問内容は具体的に。言葉だけでなく、出来る限り再現性を確認したサンプルコードの掲示。
・質問テンプレートの利用推奨。
・質問への「答え」だけでなく「意見」を出しても良い。

■禁止行為
・丸投げ質問
・迷惑スクリプトの質問
・オレオレ用語の使用(一般的な用語を使用する事)
・煽り、批判等の他人を不快にさせる行為(批判の代わりに「AよりBが良い」のような代案を出す事)
・回答者同士のレスは原則禁止(>>6を参照)
・ライブラリの話題の投稿(>>6を参照)

■質問テンプレート
【環境】OS, ブラウザをバージョンと共に記入してください。(ex: IE8, Firefox4)
【何をしたのか】何をしたら問題の現象が発生するのか。再現手順を具体的に書いてください。
【エラーメッセージ】エラーメッセージがあれば正確に書き写してください。(Windows なら「コピット」を活用)
【期待する結果】最終的にどういう結果を望んでいるのか、を書いてください。
【サンプルコード】現象を再現可能な最小限のコードを書いてください。
 1レスに収まらないならコード投稿サイトを利用してください。
 http://jsdo.it/ http://jsbin.com/ http://jsfiddle.net/ http://ideone.com/
0602Name_Not_Found
垢版 |
2017/11/03(金) 18:30:56.21ID:???
>>601
できるだろうけど、そうすると互換性がなくなるので
それならCoffeeScriptの二の舞いになって
結局使われなくなる
0603Name_Not_Found
垢版 |
2017/11/03(金) 21:18:29.37ID:???
asyncにし忘れはawait書いた時点で構文エラーになるんだから実際は問題ない
await書き忘れもちょっとしたミスで変数に意図しない型が入ってそのまま進んでしまうという
動的型付け言語のよくある問題点だしデバッグには慣れてるでしょ
0604ひよこ
垢版 |
2017/11/06(月) 21:19:56.82ID:j8ps26FX
15年ぶりにJavaScriptを弄る必要性に迫られ、過去でも怪しかった知識と技術力と現実が
さらにかけ離れて目が回ってます・・・先輩方おしえてくださいな。

【環境】自分の環境はWindosw10 Firefox55 サーバーにはUPせずローカルのみの用途です。
【何をしたのか】document.writeしたらその部分以外が出ないしbodyカラーさえなくなるしずっとローディング中になる
→innerHTMLにしろという情報を得たがこれって既にあるものを置き換えるだけで複数出力できなくね??
【希望している仕様】
コンマ区切りのテキストファイルを読み込んで変数に出し、その変数の変化する数だけセレクトを出力
【コード】ネットに転がってるサンプルを改造してる。body前後は省略。
<body bgcolor="black">
<script type="text/javascript">
function getCSV(){
var req = new XMLHttpRequest(); // HTTPでファイルを読み込むためのXMLHttpRrequestオブジェクトを生成
req.open("get", "smp.csv", true); // アクセスするファイルを指定
req.send(null); // HTTPリクエストの発行 レスポンスが返ってきたらconvertCSVtoArray()を呼ぶ
req.onload = function(){convertCSVtoArray(req.responseText); // 渡されるのは読み込んだCSVデータ}
}
// 読み込んだCSVデータを二次元配列に変換する関数convertCSVtoArray()の定義
function convertCSVtoArray(str){ // 読み込んだCSVデータが文字列として渡される
var result = []; // 最終的な二次元配列を入れるための配列
var tmp = str.split("\n"); // 改行を区切り文字として行を要素とした配列を生成
var opel = document.getElementById("test");
// 各行ごとにカンマで区切った文字列を要素とした二次元配列を生成
for(var i=0;i<tmp.length;++i){
result[i] = tmp[i].split(',');
document.write('<option value="'+result[i][1]+'">'+result[i][1]+'</option>');
}
}
getCSV();
</script></body>
0605Name_Not_Found
垢版 |
2017/11/06(月) 21:50:51.05ID:???
とりあえずconsole.logでcsvの入力が処理できてるか確認したら?
そしたらcsv云々の質問はまるまるカットできる。
問題を切り分けるところから始めようか
0606Name_Not_Found
垢版 |
2017/11/06(月) 22:03:19.90ID:???
とりあえずパッと見て思ったのは
・document.writeは使うな
・XMLHttpRequestは使うな
・opel (#test)ってなんだ?使われてないが
・selectがないぞ
・CSVの構造がわからん
だな
0607604
垢版 |
2017/11/06(月) 22:13:04.89ID:???
>>605
CSVの入力はできています。
>document.writeしたらその部分以外が出ない
→document.write('<option value="'+result[i][1]+'">'+result[i][1]+'</option>'); ×CSV行数
=<option value="[数字]”>[数字]</option>のタグになってるかはわからないですが
×CSV行数</option>前の数字は表示されているので。
というか・・・できるはずだと思っていたのですが、document.writeを書くと
真っ白になるんですよね、上記表示以外が。
consol使ったこと無いのでググってきます・・・
0608604
垢版 |
2017/11/06(月) 22:19:51.40ID:???
>>606
ありゃ失礼
・opel→innerHTMLに書き換えようとして設定した変数。
しかしinnnerHTMLではfor文で繰り返し出力ができないんじゃね?でdoument.writeに変えた
使い慣れてたし(化石)
・CSVの仕様
PerlCGIでよく使うログファイルといっしょ。UTF-8になってるが。
1,ねこ,くろ
2,いぬ,しろ

selectは消しすぎたごめん(改行多すぎって怒られた)
<body bgcolor="black">
<form method="post" name="info">
<div class="title">ろぐびゅーわ</div>
<div class="element-select">
<div class="small"><span>
<select name="id" >
<script type="text/javascript">
0609Name_Not_Found
垢版 |
2017/11/06(月) 22:22:39.50ID:???
</script>
<script type="text/vbscript">
0610Name_Not_Found
垢版 |
2017/11/06(月) 22:29:19.24ID:???
select要素拾って普通にlength増やしつつoption追加してけばいいんじゃないの?
0611Name_Not_Found
垢版 |
2017/11/07(火) 00:25:45.74ID:???
全部書くのめんどいからヒントっぽく書くと
var foo = '';
for(){
foo += '<option>';
}
select.innerHTML = foo;
ってすればいい
0612604
垢版 |
2017/11/07(火) 03:26:08.48ID:???
>>611
できました!!
変数+=は初めて見ました。こんなのあるんですね。
みなさん感謝!
0613Name_Not_Found
垢版 |
2017/11/07(火) 04:08:15.43ID:???
でも古臭くて今となっては誰もやらないやり方だからな
0614Name_Not_Found
垢版 |
2017/11/07(火) 04:54:36.43ID:???
みんなfoo=foo+"bar"って書いてるってこと?
0615Name_Not_Found
垢版 |
2017/11/07(火) 06:29:56.51ID:???
document.write は、文書自体をすべて一旦破棄してから上書きするから、使うな

XMLHttpRequest は、jQuery の、ajax を使う。
初心者には、jQuery は必須だから、検索して

$("#test").text("hello world!");

「セレクタ.動作」の構文で、該当するセレクタすべてに対して、ある動作をする。
つまり、ループ処理と同じ
0616Name_Not_Found
垢版 |
2017/11/07(火) 06:31:30.72ID:???
DOM叩く(これも古いがinnerHTMLよりは新しいかな)か
VirtualDOM叩くフレームワーク使うかってことでは
0617Name_Not_Found
垢版 |
2017/11/07(火) 06:34:36.22ID:???
ローカルファイルは、node.js, electron とかを使う

csv ファイル読み込み関数なども、あるはず
0618Name_Not_Found
垢版 |
2017/11/07(火) 08:36:12.91ID:???
>>615
初心者にはjQuery必須とかいうのヤメレ
document.querySelector('#test').textContent = 'hello world!’;
0619Name_Not_Found
垢版 |
2017/11/07(火) 08:47:35.46ID:???
jQuery使わないにしても
test.textContext =
でいいのに何で冗長な書き方するかね
0620Name_Not_Found
垢版 |
2017/11/07(火) 10:09:36.33ID:???
Web制作板の癌はjQuery必須なんて馬鹿な落書きをしに巣から出てくんなよ
0621Name_Not_Found
垢版 |
2017/11/07(火) 11:39:30.88ID:???
XMLHttpRequestに変わる新しい通信方法があったはずですが思い出せません
誰か教えてください
0622Name_Not_Found
垢版 |
2017/11/07(火) 11:41:16.63ID:???
621ですがすいませんfetch apiのことでした
ってことで〆
0623Name_Not_Found
垢版 |
2017/11/07(火) 12:35:58.86ID:???
const o = document.getElementById('o');
const f = (n) => (e) => {
console.log(n, e);
};
o.addEventListener('click', f(1), false);


(n) => (e) =>っていう2個書く書き方をよく知らないんですがなんですかこれは?
なんでこれでnとeが使えるんですか?
0624Name_Not_Found
垢版 |
2017/11/07(火) 13:25:35.93ID:???
>>623
const f = function(n){
return function(e){
console.log(n, e);
}
};

なので
o.addEventListener('click', f(1), false);

o.addEventListener('click', function(e){
console.log(1, e);
}
, false);
になる
0625Name_Not_Found
垢版 |
2017/11/07(火) 14:31:29.52ID:???
>>623
関数の戻り値がまた別の関数になってる
カリー化ともいう
nが使えるのはその戻り値の関数もまたのfの範囲内だから

ちなみに
const f = n => e => console.log(n, e);
でもいい

ただJavaScriptでカリー化することなんてあるか?
Haskellみたくデフォルトでカリー化されてるわけじゃないんだしメリットが見当たらん
0626Name_Not_Found
垢版 |
2017/11/07(火) 14:51:04.15ID:???
Underscore.js にも、curry ある
0628Name_Not_Found
垢版 |
2017/11/07(火) 21:19:45.50ID:???
window.alertなら文字列の"window.alert"
window.widthなら"window.width"のように

オブジェクトの名前を取得する方法ってありませんか?
0629Name_Not_Found
垢版 |
2017/11/07(火) 21:43:05.12ID:???
>>618-619
一番単純な例を出してドヤ顔するのやめれw

jQueryはその一番単純な書き方で複雑なことができるんだよ

例えば
document.querySelector('#test').textContent = 'hello world!’;
に相当するjQueryの書き方は
$('#test').text('hello world'); だが

全てのclass=testの要素に文字を入れるのもほぼ同じ書き方でよい
$('.test').text('hello world');
0631Name_Not_Found
垢版 |
2017/11/07(火) 21:45:17.35ID:???
> でいいのに何で冗長な書き方するかね

test.textContext = 'hello world';
$('#test').text('hello world');

jQuery使ったほうが短いっていうねw
なんで冗長な書き方するかね?
0632Name_Not_Found
垢版 |
2017/11/07(火) 21:50:52.83ID:???
EdgeだとうごかないやんXMLHttpRrequest
node.jsってインストールとか言ってるけどなにこれJavaScriptファイルじゃないの?
0633Name_Not_Found
垢版 |
2017/11/07(火) 21:52:25.39ID:???
node.jsはサーバー側アプリを作るものだから関係ない
まあ正確に言えばブラウザ用のJavaScriptファイルを
"ビルドして" 作ることも有るからサーバー用限定ではないが、
少なくともブラウザで直接動かすためのものじゃない
0634Name_Not_Found
垢版 |
2017/11/07(火) 22:09:22.05ID:???
>>625
> 関数の戻り値がまた別の関数になってる
> カリー化ともいう

それはカリー化ではない。
カリー化は、引数を取る普通の関数を
特殊な形式の関数に変換すること

foo(a,b,c) という使い方をするfoo関数を
foo2(a)(b)(c) という使い方ができる別の関数に変換すること
>>623は関数を返す関数ってだけなのでカリー化ではない

JavaScriptでカリー化をする必要はないっていうのは理解できるが、
関数を返す関数はときたま使う

ある関数に同じ引数を何度も渡すのであれば、
部分適用を行って何度も渡さないようにできるし、

別のもう少し具体的な例をだすと
[{a: 1, b: 2}, {a: 11, b: 22}, {a: 111, b: 222}] みたいなデータが有って
aの項目でソートするか、bの項目でソートするか、選べるようにしたい時
aでソートする関数、bでソートする関数の2つを作る代わりに、
ソートする項目名を引数にして「ソートする関数」を返す関数
なんてのを作る時に使う
0635Name_Not_Found
垢版 |
2017/11/07(火) 22:15:09.20ID:???
>>623
> (n) => (e) =>っていう2個書く書き方をよく知らないんですがなんですかこれは?

アロー関数が2つくっついたってだけなだな。

function(n) {
 return n+1;
}

という関数を(thisの扱い以外)同等のアロー関数で書くと
(n) => {
 return n + 1;
}

一行で書いて
(n) => { return n + 1; }

{}とreturnを省略して
(n) => n + 1

n+1の部分が (e) => { console.log(n, e) } だったら?
(n) => (e) => { console.log(n, e) }
0636Name_Not_Found
垢版 |
2017/11/07(火) 23:19:30.48ID:???
react学ぼうと思うんですがオススメの書籍教えてください
0637Name_Not_Found
垢版 |
2017/11/07(火) 23:53:40.72ID:???
>>634
あーごめん、変な間違いしてしまった
関数を返す関数は高階関数の範疇やね
0638Name_Not_Found
垢版 |
2017/11/08(水) 00:36:18.57ID:???
>>637
また間違えた
いや、確かに関数を返す関数は高階関数の範疇なんだけど、今回のケースは特に部分適用って言った方がいいな
厳密に参照透明にこだわりたいなら使うのも良いと思うけど、ほとんどクロージャで対応しちゃうなあ
>>623なら
const n = 1;
o.addEventListener('click', e => console.log(n, e), false);
で済むし、ソートする場合も
xs => _sort(xs, 'a')
みたいな無名関数で対応してることが多い

JavaScriptの部分適用は何か無理やり感があって個人的に苦手だ
0640Name_Not_Found
垢版 |
2017/11/08(水) 06:54:22.62ID:???
jQuery を使っていないと、各ブラウザに対応できないから、
自分で各ブラウザの違いを調べて、コーディングしなければならないから、無理

>>636
入門 React ――コンポーネントベースのWebフロントエンド開発、2015

WEB+DB vol.97 の特集が、React
WEB+DB vol.94 の特集が、Kotlin, Electron
0641Name_Not_Found
垢版 |
2017/11/08(水) 09:06:15.23ID:???
各ブラウザの違いというけど今のモダンブラウザに違いは殆どないよ
逆に残っている違いってjQueryでも同じく対処が難しいなものばかり
(例えばfile選択キャンセルの監視とか)
あとはIEに対応するかどうかだけど、他にもAPIのポリフィル噛ますのと
同じようにIEにもポリフィル用意するほうが良いと思う
0642Name_Not_Found
垢版 |
2017/11/08(水) 09:31:47.13ID:???
o.addEventListener('click', function(e) {}, false);
ってするとダメで
const f = (e){}
o.addEventListener('click', f, false);
がメモリにいいとか無駄に関数が作られないとか何とか昔呼んだ気がするけど
理由はよく知りません
0643Name_Not_Found
垢版 |
2017/11/08(水) 09:45:15.04ID:???
>>641
> 各ブラウザの違いというけど今のモダンブラウザに違いは殆どないよ

そう思うならjQueryのソースコード見てみれば?
特定のブラウザ(機種)用のワークアラウンドがいくつも有る

仕様において違いはなくても、バグがあったりするわけ
特定の環境のみで起こるバグだから見つけるのは大変
0644Name_Not_Found
垢版 |
2017/11/08(水) 09:51:08.34ID:???
ライブラリなんだから好きにすればいい
スレ違い
0645Name_Not_Found
垢版 |
2017/11/08(水) 15:37:19.11ID:???
>>643
そもそも全く同一に動かそうというのが間違いなのでは?
しかも普通その必要があればオーサリングツール使うよね
0646Name_Not_Found
垢版 |
2017/11/08(水) 17:18:29.37ID:???
ゲームのBGMで繋ぎ目が分からないシームレスなループ再生をしたいのですが一般的にはどんな方法がありますか?
Web Audio APIにはloopStartやloopEndがあるので可能ですがこれは短い音声の再生用でBGMには向かないとか・・・
0647Name_Not_Found
垢版 |
2017/11/08(水) 18:11:26.71ID:???
普通にaudio要素のloop属性や秒数指定で十分じゃないかと思うけど
本当に完璧に無くしたいんならAudioWorklet使うしか無いんじゃね
0648Name_Not_Found
垢版 |
2017/11/08(水) 20:34:15.99ID:???
HTML5ゲームエンジン「Phaser」とか?
0649Name_Not_Found
垢版 |
2017/11/08(水) 21:14:55.14ID:???
>>647,648
ああその用途ならこれ、といったものは無さそう?
もう少し調べてなんとかしてみます ありがとうございました
0650Name_Not_Found
垢版 |
2017/11/09(木) 00:15:07.44ID:???
>>645
あんたが言ってるのは、同一じゃなくても(違いがあっても)
動いてるなら良いじゃないって話でしょ?

俺が言ってるのは、特定のブラウザだけバグや仕様の違いで
動かないって話だよ。

https://code.jquery.com/jquery-3.2.1.js

例えばms-プレフィックスがついて動かないとか
// Support: IE <=9 - 11, Edge 12 - 13
// Microsoft forgot to hump their vendor prefix (#9572)

セレクタのバグに対応する
// Support: IE8, Opera 11-12.16
// Nothing should be selected when empty strings follow ^= or $= or *=
// The test attribute must be unknown in Opera but "safe" for WinRT
// https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section
とか

// Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+
とか

// Webkit/Opera - :checked should return selected option elements
// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
// IE8 throws error here and will not see later tests
とか

// Support: Safari 8+, iOS 8+
// https://bugs.webkit.org/show_bug.cgi?id=136851
// In-page `selector#id sibling-combinator selector` fails
とか
0651Name_Not_Found
垢版 |
2017/11/09(木) 00:22:27.44ID:???
古いブラウザが大半だろうから、サポートしませんって言っても良いのかもしれないけどさ
jQuery使っておいたほうが安全だろ?

// Support: real iOS 8.2 only (not reproducible in simulator)
// `in` check used to prevent JIT error (gh-2145)
// hasOwn isn't used here due to false negatives
// regarding Nodelist length in IE

// Support: Firefox<24
// Workaround erroneous numeric interpretation of +"0x"

// Support: Chrome 14-35+
// Always assume duplicates if they aren't passed to the comparison function

// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)
// Detached nodes confoundingly follow *each other*

// Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only
// Treat the template element as a regular one in browsers that
// don't support it.

// Support: Chrome <=35 - 45
// Webkit & Blink performance suffers when deleting properties
// from DOM nodes, so set to undefined instead
// https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)

// Support: Firefox <=43 - 45
// Disconnected elements can have computed display: none, so first confirm that elem is
// in the document.

// Support: Windows Web Apps (WWA)
// `name` and `type` must use .setAttribute for WWA (#14901)
0652Name_Not_Found
垢版 |
2017/11/09(木) 02:50:10.76ID:???
>>651
ごめんけどあんたの気持ちは分からないや
今だってやってるプロジェクトで権利の関係でオールスクラッチで
当分Chromeでしか検証しないまま一応完成させて
その段階でFxやらEdgeやらモバイルで動かしてみたらなんの問題もなく動いたもの
仮にそこで何かに引っかかっても簡単な置換やなんかで済むだろうし

つうか長文載せないで今生きてるブサウザでの活きてる例をピックアップして挙げてよ
個人的にはIEには興味ないからそれ以外だとより説得力を感じる
特にChとFxの違いは勉強になるから教えて欲しい
0653Name_Not_Found
垢版 |
2017/11/09(木) 02:55:06.20ID:???
長文? 文章なんて書いてないよ。
これはjQueryのソースコードの中のコメント
こういうマイナーケースで問題が有ることは明らかになってる

ユーザーが使うブラウザのバージョンなんて指定できないからね。
あとはどれだけ見れる人が多いかどうか
問題が起きた時のクレームに悩まされるかどうか

予防していればクレームは減るよ。
あとからマイナーケースに悩まされる必要はなくなるよ

> 個人的にはIEには興味ないから
あんた個人の都合で物事を決めたりはしない
客観的なデータ。ユーザー数で考えよう
0654Name_Not_Found
垢版 |
2017/11/09(木) 09:16:01.62ID:???
まぁとりあえず、さも当たり前のように初心者に
さてjQueryを使いますって勧めるのはやめなよ。
とりあえずjQueryに頼らなくてもjsが使えるようになってから選択として
jQueryなりvue.jsなりlodashなり選択使を提示すればいい。
独善的にjQueryは標準装備ですと言うのはヤメテってだけ
0657Name_Not_Found
垢版 |
2017/11/09(木) 21:34:22.14ID:???
>>653
客観的だのなんのってよくわからないそれっぽいこと言うけど、
あくまで今は俺と君とが固有の価値観をすり合わせるんでしょ、それ以上でも以下でもない

もし一般的な話をするとしたら「客を選べない」って本来良くはないことだからね
下請けとか部下の立場で言われたとおりに作るなと言ってるわけじゃないけど、
まるでそれが正義か理想かなにかと勘違いするのは辞めたほうが良いよ

というか、なんかjQuery使わないことを病的に恐れ過ぎなんじゃない?
いつかその補助輪外す勇気が出せると良いね
0658Name_Not_Found
垢版 |
2017/11/09(木) 21:39:59.00ID:???
jQueryは補助輪じゃなくて
自転車だと思いますよ。
0659Name_Not_Found
垢版 |
2017/11/09(木) 21:52:30.56ID:???
補助輪付けてる人は少ないわけで
jQueryは世界中の多くの人が使っている以上補助輪じゃないわな

「ということにしたい!」という臭いが
プンプン感じられるレスだ
0660Name_Not_Found
垢版 |
2017/11/09(木) 21:57:41.57ID:???
唐突な自分語りですまんが
jquery使わない俺かっけーって思ってた時期があった
0661Name_Not_Found
垢版 |
2017/11/09(木) 22:12:24.41ID:???
>>655
>>654じゃないが、基礎が何も分からないのにいきなりjQueryの記述だけ覚えたときに何も出来ないかと

>>660
そもそも単なる関数の集合体のライブラリなんだから、全て自分で出来るのを簡単に書けるようにしただけだし、
使わなくて済む、または出来るならカッコイイというか良いと思うけどね
0662Name_Not_Found
垢版 |
2017/11/09(木) 22:14:40.64ID:???
> >>654じゃないが、基礎が何も分からないのにいきなりjQueryの記述だけ覚えたときに何も出来ないかと

なんで?
0663Name_Not_Found
垢版 |
2017/11/09(木) 22:33:23.08ID:???
基礎が何も分からないのにいきなりjQueryの記述だけ覚えたときに何も出来ない
っていうのは結局何の根拠もないんだよな。

そもそもおかしいよね。
jQuery使える人なら、jQueryがなくてもプログラムできるでしょ?

できない理由が「基礎がわからなくてもjQueryならできる」のであれば
どんだけjQueryは簡単なんだよ?って話になる。

jQueryは面倒な記述を減らしてくれるだけで、
決して基礎が知らない人でも使えるようになるライブラリじゃない
jQueryを過大評価するのはやめろよ。
アンチが過大評価してんだよ
0664Name_Not_Found
垢版 |
2017/11/09(木) 23:23:28.84ID:???
ここ最近のjQueryディス流れは親から育つ反抗期的な感を受ける
0665Name_Not_Found
垢版 |
2017/11/10(金) 09:30:42.52ID:???
jQueryはプログラム組めないけど何となく読める

くらいの知識で、落ちてるフリーのやつをちょっとだけ弄る

って感じの人に需要がある
0666Name_Not_Found
垢版 |
2017/11/10(金) 09:33:15.87ID:???
求めてもいないjQueryを勝手に勧めて「jQueryを使うべき理由」を語り出してもなあ
いずれにしても、スレ違い
0667Name_Not_Found
垢版 |
2017/11/10(金) 09:41:07.21ID:???
>>665
それってjQuery使わなくても一緒だと思うけど、
jQuery使わないで作るのが大変だから
そういうのはめったに落ちてないって話ですか?
0669Name_Not_Found
垢版 |
2017/11/10(金) 11:11:44.71ID:???
>>666
スレ違いはごもっともだが一々反応しているのが滑稽w
0670Name_Not_Found
垢版 |
2017/11/10(金) 12:56:34.21ID:???
何度もこういう流れがあったからテンプレ出来たのに荒らしが消したからなぁ
0671Name_Not_Found
垢版 |
2017/11/10(金) 18:07:09.13ID:???
jsからjQueryに入ったら簡単に感じる
jQueryから入って難しくてjs勉強した俺が言うんだから間違いない
0672Name_Not_Found
垢版 |
2017/11/10(金) 18:33:43.68ID:???
全然流れわからないけど、ウェブの参考にしたり拾ってくるならjquery分からないとかなり厳しい
自分だけでやるなら本当に好きにしろ
0673Name_Not_Found
垢版 |
2017/11/10(金) 21:32:07.73ID:???
多分某ローダッシュ君のような布教目的だと思って嫌う人がいるんだろうけど
jQuererに関しては単にjQuery使わないやり方を知らない・想像もできないだけだと思う
自分も昔そうだった
だからjQueryでこう書けばいい、程度であれば許してやって欲しい
0674Name_Not_Found
垢版 |
2017/11/10(金) 21:39:29.53ID:???
例えるなら仕事では「スーツを着る」のが無難で常識だと思っているところに対して
生JS派が別に裸やシャツ一枚でも十分仕事はできる、むしろスーツは窮屈
と言ってるのと同じに聞こえるんだと思う
0675Name_Not_Found
垢版 |
2017/11/10(金) 21:45:07.66ID:???
jQueryが悪いとかじゃなくて、「当然手間はかかっても生jsで同じコード書けるよね?
その上で利便性や開発生産性からjQuery選んでるんだよね?」って話じゃないの
0676Name_Not_Found
垢版 |
2017/11/10(金) 22:54:53.02ID:???
DOM APIでも大昔に比べて少しマシな書き方が
できるようになったとは言えjQueryにはかなわない

jQueryでできないことも有るかもしれないけど、
そこだけDOM APIを使えばいい

こう考えるとDOM APIのメリットはライブラリが必要ないから
ダウンロード時間が不要なのと実行速度が速い
そういうメリットを言えばいいのに、jQueryやめろーとしか言わないんだよな

いや、もちろんダウンロード時間も実行速度も無視できる程度だよ。
だからjQueryを使った時の開発速度と比較すると、小さなメリットしか無いよ。
でも、メリットを言うならそこしか無いだろ?そこを言えば良いんだよ。

今は反論されて撃沈したくないから、あえてDOM APIのメリットを言わないようにしか見えないよ
結局その程度の気持ちなんだろ? jQueryをやめろーって言ってるのは
本気でDOM APIの方がいいと思ってるなら、メリットを言えるはずだ


補足 ライブラリのメリットデメリットの話なので、
jQuery以外使えない人は困るとかいう、
人間の能力の話はしないでください
0677Name_Not_Found
垢版 |
2017/11/11(土) 00:01:05.81ID:???
jqueryが初心者向けだというなら、俺はTypeScriptを薦めたい。
コッチのほうが初心者向け。
例えばdocument.まで打ち込めばquerySelectorが候補として出るし必要パラメーターと返り値の型が分かる。
null安全でもあるからちゃんとnullチェックの分岐処理を入れないとエラーになる。
だから丁寧なコードをある程度矯正できる。

という具合に相手が求めてないのに薦めてうざいと思った?
0678Name_Not_Found
垢版 |
2017/11/11(土) 00:20:07.80ID:???
> jqueryが初心者向けだというなら、俺はTypeScriptを薦めたい。

TypeScriptは否定しないけど、それは言語の話なので
TypeScript(言語)でjQuery(ライブラリ)を使うのが良いよ。

君が勘違いしてるのはjQueryでコードが短くなることのメリットは
書く量が減るというメリットじゃなくて読む量が減るというメリット

たしかにタイプ数は減るが、仮に少ないタイプ数(操作)で
何万行もコードが自動生成され、それを読まないといけないとなったらどうする?
大変だって思うだろう? コード補完されたからといって、
そこから生成されるコード量が多ければ、その分だけ読まないといけない。

書くのは一回(数回)だが読む回数はもっと多い。
バグ修正で忘れた頃に読まないといけない。他人が読まないといけない。
そういう時に読む量を減らすのが目的なんだから、候補として出るというだけじゃ
何も問題は解決してない

そして最初の話。TypeScriptでjQueryを使えば良いんだよ


> という具合に相手が求めてないのに薦めてうざいと思った?
いや別に? 内容に穴があるなぁって思ったよ。
0679Name_Not_Found
垢版 |
2017/11/11(土) 00:27:47.05ID:???
俺も時々、型あり言語では型を書くのが面倒だが、
それは補完してくれるテキストエディタがあれば
そこまで面倒ではない。的な発言をすることがあるしね。

ここで型があったら読まなければいけない量が増えるじゃないか
っていわれそうなんで補足

俺が言ってる読まなければいけないから大変いうのは「処理」
型などの定義部分は、処理とは違って、何をやってるんだろう?と
読み解かなければいけない所ではなくって、コメントのように
あぁ、ここはこの型なのねってさらっと見ればいい部分

なので定義部分に関しては許容できる。というスタンス

だから俺にとって「冗長なコード」っていうのは、
型(定義)ありだから冗長ってことにはならないんだよね
処理しか見ないからね。

そして型(定義)部分は、たいして読まなくて良いものだから
面倒な点があるとすると(繰り返すけど定義部分は)書く時
それは補完で相殺できる。

もちろん>>677
> 例えばdocument.まで打ち込めばquerySelectorが候補として出るし
っていうのは補完してるものが定義ではなく処理(メソッド)の一部なので
こういうのはなるべく少ない方がいい。書く時ではなくて読む時の話。
0680Name_Not_Found
垢版 |
2017/11/11(土) 00:32:35.52ID:???
もう一つ>>677に補足しておこうか?

補完してくれるから、とかnull安全だからという理由は
初心者向けということにはならない。
だってそれらは上級者でも便利な道具なんだもの。

初心者向けというのは補助輪のように、
上級者にとっては足かせになるようなもののことだろう。

例えばScratchみたいなビジュアルプログラミング言語も
上級者にとっては足かせになるから、初心者向けだろう。


TypeScriptもjQueryも上級者が使っても便利なものは
初心者向けと呼ぶのは間違いだろう。
初心者でも上級者でも使いやすい道具という言い方なら間違いじゃないけどね。
0681Name_Not_Found
垢版 |
2017/11/11(土) 00:34:35.31ID:???
あと俺はjQueryが初心者向けだとは言ってないよ。

初心者に上級者でも使ってる道具を薦めるのは
小さい頃から本物のピアノを薦めるのと同じようなものだろう。
本物志向w

まあjQueryは上級者でも初心者でも使いやすい道具なんだが
0682Name_Not_Found
垢版 |
2017/11/11(土) 00:37:28.86ID:???
無関係な話は無い方が良いけど、TypeScriptやjQuery
はこのスレに関係ある内容なのでうざいとは思いませんね。

無関係な話(例えば「おまえの考えは気に食わんから書き込み禁止」的なもの)は
やめましょう。
0683Name_Not_Found
垢版 |
2017/11/11(土) 00:51:27.46ID:???
直接DOM触らんのにeachの為にjquery入れてる
みたいな悲劇が起こらなけりゃ別に良いよ
0684Name_Not_Found
垢版 |
2017/11/11(土) 00:54:55.32ID:???
ライブラリを本来の目的と違う使い方をするのは
ライブラリの問題ではなくて、使う人の問題なので、
人の問題を理由に、ライブラリに文句をつけること自体がおかしい

それを言ったら、ブラウザで動かす必要が無いのに
(alertで)画面にメッセージ表示したいために、
JavaScriptを使うという悲劇とかいう言い方までできてしまう。

そういうのは人の問題
0685Name_Not_Found
垢版 |
2017/11/11(土) 01:03:41.60ID:???
みんな今流行りのprototype.js使おうぜ最高にイケててナウいからモテるぞ
0686Name_Not_Found
垢版 |
2017/11/11(土) 01:53:02.30ID:???
prototype.jsは最終更新日は2年以上前だよ
最新のブラウザに対応しているのかどうかも怪しい

prototype.jsはDOM周りは、DOM APIのショートカットでしか
なかったのが良くなかった。jQueryはDOMをリストとして
扱うという考え方の変更だったけど、prototype.jsは
document.getElementByIdって入力するの長いでしょ?
短い名前の関数用意したよ。で終わってしまった。

標準オブジェクトのprototypeを変更するというのは、
そんなに悪くない発想だと思うんだけど、やっぱり標準で
同じ名前のメソッドが定義されて互換性がなくて。
なんだろうな。GoogleとかMozillaとか大手が同じことをやっていれば
このアプローチでも良かったんだと思うけど、運かなぁ。それがなかった

まあやっぱりjQueryに駆逐されたものという扱いなんだろうな
0687Name_Not_Found
垢版 |
2017/11/11(土) 02:47:42.53ID:???
>>675
問題はその理屈だと結局ありとあらゆる事をする時に色んなライブラリを提案しないといけないのか?ということになり
極論を言うと、今その問題を「a()」だけでこなせるライブラリ書いてupしたからそれを使うのが一番スマートだよとも言えてしまう

勿論もしそういう事なら皆それはおかしいと思うはずだが、jQueryで意見が別れるのはJSで一番有名なライブラリという特殊性にあると思う
jQueryを準標準だと考える人と、そうでない人との溝は深い
0688Name_Not_Found
垢版 |
2017/11/11(土) 02:47:44.34ID:???
>>1の禁止事項を読んでから書き込みしてもらえないものかね
0689Name_Not_Found
垢版 |
2017/11/11(土) 02:53:16.31ID:???
多分jQueryを他のライブラリと同列だと考えない人にとってはその禁止事項は意味を成さないんだろうね
何でうざがられてるのかもよく分かってないようだし
0690Name_Not_Found
垢版 |
2017/11/11(土) 12:29:20.34ID:???
jQueryがオワコン気味なのは紛れもない事実
流行中はドヤってもいいけど潮目が変わればおとなしく引き下がるべし
0691Name_Not_Found
垢版 |
2017/11/11(土) 13:10:33.61ID:???
取り敢えず使いたいやつは使えってことだろ?

俺が知りたいのは、JavaScriptを学ばずにjQueryを使うことは最適解なのかどうか。教えてくれ
0692Name_Not_Found
垢版 |
2017/11/11(土) 13:19:23.45ID:???
jQuery を使わない開発者は、ドンドン貧乏になっていく!

このブラウザでバグが出た。
このOS でも、バグが出た

新たな環境で、バグが見つかる度に、修正依頼が届くから、
結局、無料で、永遠に修正させられる

最終的には、時給が100円以下になる。
JS は、トラブルと貧乏しか生まない!
0693Name_Not_Found
垢版 |
2017/11/11(土) 13:38:33.47ID:???
とりあえずdom操作目的ならvue.jsとかreactを使うから
そのためにjquery使うのは微妙。
他に使いみちなんかあるの?
0694Name_Not_Found
垢版 |
2017/11/11(土) 21:03:39.74ID:???
なんというか、「え?プログラミングってどんなものか知りたいの?」
「じゃあ今見てるブラウザでF12押して、コンソールに1+1って入力してみて」
ってできる気軽さがJSの醍醐味なのに、初期学習者に対してjQueryを押し付けるのは無粋なんだよ
開発者としてならどんどん使ってどうぞ、でもJS初心者の学習には不要
0695Name_Not_Found
垢版 |
2017/11/11(土) 21:06:57.84ID:???
つうかそういうようなプログラミングを勉強したいっていう層や動機無視で
すぐ業務が云々言い出す奴も無粋極まりないと思う

最初はChromeとか今使ってるブラウザで動けばいいじゃない
でもそれを公開しようとした段階で別のブラウザだと仕様が違うことを知り、
じゃあどうするのかを考えるのも勉強だと思うよ
最初からjQueryありきで進めるのはやはり良くない
0696Name_Not_Found
垢版 |
2017/11/11(土) 22:10:57.10ID:???
基本的に俺もjqueryいきなり勧めるやつ否定派だけど
jqueryオワタ論は懐疑的。chrome-extensionで今開いているサイトの使ってるライブラリが分かるやつがあるんだけど
qiitaではreact押しでjquery否定な感じだが
現実はそこまでreact使ってるサイトはないし、jquery使ってるサイトは多い。
多分、理想と現実のギャップを目撃してるんだろうけどね。
0697Name_Not_Found
垢版 |
2017/11/12(日) 00:11:40.73ID:???
このスレはそういう流れをもう何度も繰り返してきたんだよ
>>11にまともなテンプレが載ってるから目を通すと不毛な争いを避けられる
0698Name_Not_Found
垢版 |
2017/11/12(日) 04:44:55.51ID:???
どう考えても避けられるとは思わない
歴史の教科書や犯罪事例が合っても犯罪がなくならないのと同じ
0699Name_Not_Found
垢版 |
2017/11/12(日) 10:01:46.12ID:???
何れにしてもライブラリの話題は他所でやれってことでしょ
jQueryなんて専用スレあるんだしそっちに誘導してやればいい
0700Name_Not_Found
垢版 |
2017/11/12(日) 11:21:40.43ID:???
一々反応している方が野暮
■ このスレッドは過去ログ倉庫に格納されています