X



+ JavaScript の質問用スレッド vol.123 + [転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
0001Name_Not_Found
垢版 |
2015/01/24(土) 16:23:05.20ID:???
JavaScript を自ら学ぶ人のための質問スレッドです。
>>2-4のテンプレを読んだ上で質問してください。

■質問を書く上で
(1) 煽り、コード制作依頼等、人を不快にさせる投稿はご遠慮下さい。公序良俗を守った応対を心がけてください。
(2) 他の人に迷惑をかけるスクリプトの質問はご遠慮ください。
  (ブラクラ、[戻る], [閉じる], [クリック] の妨害、画面占有など)
(3) 質問者及び議論を行う人はメール欄を空欄にし、名前にレス番を入れることを強く推奨します。回答者はなりすましを判断できませんので、なりすましが現れても自己責任となります。
(4) 常に自発的に調べる心構えを持ってください。
  具体的には「自分で調べてから質問する」「回答をもらってわからない単語があればGoogle検索してみる」など。
  わからない内容を代わりに調べてくれる回答者をお望みの方は余所で質問してください。
(5) 出来るだけ一般的な用語を使用してください。脳内オレオレ用語は混乱の元です。
(6) 出来るだけサンプルコードを掲示してください。言葉による説明は行き違いが生まれる場合があります。
  ※必ず「問題の事象が再現されること」を確認してください。
   必要な部分だけ切り出したつもりで現象が再現できていなかったケアレスミスがしばしば見られます。
(7) サンプルコードに HTML が含まれる場合は http://validator.w3.org/ で [Check] してみてください。
(8) 質問を具体的かつ詳細に書くと回答を得られやすいです。>>2の質問テンプレートを活用してみてください。
(9) 時にはあなたが望む「答え」だけでなく、「意見」などが寄せられる場合もあります。


+ JavaScript の質問用スレッド vol.122 +(c)2ch.net
http://peace.2ch.net/test/read.cgi/hp/1420095379/

(ライブラリ禁止条項は、多数の意見によって廃止されました。ライブラリの質問もOKです)
0101Name_Not_Found
垢版 |
2015/02/15(日) 23:31:25.55ID:???
このスレいつからscになったの?
0102Name_Not_Found
垢版 |
2015/02/15(日) 23:34:18.24ID:???
+ JavaScript の質問用スレッド vol.123 + [転載禁止](c)2ch.net
http://peace.2ch.net/test/read.cgi/hp/1423915644/

↑のスレのタイムマシンみたいですね
オリジナルの質問は↑にしかないのでここは過去に戻りたい方向けのようです
0103Name_Not_Found
垢版 |
2015/02/15(日) 23:40:44.55ID:???
間違ったスレで質問したようなので
こっちで質問し直しただけですが?
変な言いがかりはやめてもらえますかね
0104Name_Not_Found
垢版 |
2015/02/15(日) 23:41:52.36ID:???
test

-[]って使い道ある?
0108Name_Not_Found
垢版 |
2015/02/16(月) 03:26:01.85ID:???
質問をコピペしないでください。マルチポストになってしまいます
0109Name_Not_Found
垢版 |
2015/02/16(月) 06:40:42.44ID:Ig42YN7J
ふと思ったのですがjavascriptにはgotoがありませんが
特に困った記憶がありません
なぜgotoがなくても問題ないのでしょうか?
011093
垢版 |
2015/02/16(月) 10:16:04.97ID:???
>>93おねがいします
0111Name_Not_Found
垢版 |
2015/02/16(月) 12:11:06.36ID:???
このスレで回答してくれるのは恐らく荒らしだけなので、回答が付かないようであれば移動することをお勧めします。
0112Name_Not_Found
垢版 |
2015/02/16(月) 15:12:21.62ID:???
>>109
無理やりスパゲッティコードでも
文脈の外へgoto また文脈の中へ gotoくらいなら
callback関数でなんとかなるからかな

goto文が複雑に入り乱れたコードになると
さすがにほぐすのは大変だろうけど
0113Name_Not_Found
垢版 |
2015/02/16(月) 15:25:38.95ID:???
>>112
違う違う
breakとcontinueにラベルを付けられるからでしょ
実質gotoと同じ機能だ
0114Name_Not_Found
垢版 |
2015/02/16(月) 16:48:36.15ID:???
>>113
continue は行き先が決まってるし
break は元のブロックの内部に戻れないぞ
0115Name_Not_Found
垢版 |
2015/02/16(月) 17:14:09.77ID:???
>>114
実質同じって事は仕様的に一緒って言う事じゃなくて通常使いの範疇で役割が一緒って事だ
(要するにネストしたループ内からの脱出)
ブロックの中に戻るなんてCでもまず間違いなくやらんぞ
それとcontinueもbreakと同じようにラベル使えるけど
0116bti
垢版 |
2015/02/16(月) 18:54:57.44ID:ZOdRBOCQ
このリンクからビットコイン購入・販売所bitFlyerにご登録すると
1000円分のビットコインがもらえます!

https://bitflyer.jp/gift/fn0tlipl

外部ウォレットに送金できるので、とにかく一応もらっておくといいです。
0117Name_Not_Found
垢版 |
2015/02/16(月) 19:55:14.14ID:???
>>115
C だったら long_jump 使うことはあるんじゃね?
0118Name_Not_Found
垢版 |
2015/02/16(月) 20:45:07.31ID:???
>>117
setjmp, longjmpだな
それは基本的にブロックどころか関数外に飛ぶ為のもんだ (スタックポインタをいじる為のもん)
0119Name_Not_Found
垢版 |
2015/02/16(月) 22:23:07.74ID:???
>>109
> ふと思ったのですがjavascriptにはgotoがありませんが
> 特に困った記憶がありません
> なぜgotoがなくても問題ないのでしょうか?

gotoの代わりになるものが存在するから。

1. 関数呼び出し、return
2. continue、break
3. for
4. if 〜 else
5. try 〜 catch (throw)

こんな所かね?

これらの機能がない言語っていうのもあって
例えばアセンブリ言語なんか、3, 4, 5 が無いし
C言語でも5がない。

実はgotoは1〜5の機能を実装できる万能機能。
しかも1〜5では不可能な、どこにでもジャンプできるという高機能な点もある。

じゃあgotoだけがあればいいじゃん?って思うかもしれないけど
歴史的にはgotoが先に生まれて、そのあとgotoの「どこにでもジャンプできる」というのは
コードを著しく複雑にするというのが判明した。
「どこにでもジャンプできる」というのは欠点とみなされたわけ。

そののち制限されたgotoとして1〜5の機能が生まれた。
gotoが無いと困る言語っていうのは、1〜5の機能が無いか、
あってたとしても少し機能が足りないから。
0120Name_Not_Found
垢版 |
2015/02/16(月) 22:29:53.33ID:???
>>119
随分適当だな…
gotoの代わりになってるのは2.5.だぞ
> 実はgotoは1〜5の機能を実装できる万能機能。
ジャンプ出来るのは関数内だけだ
そう考えると関数を越えられる5も違うと言える
ようするに2だけ
0121Name_Not_Found
垢版 |
2015/02/16(月) 22:50:29.94ID:???
>>120
俺が言ってるGOTOっていうのは、
C言語のGOTOじゃなくて、BASICのGOTOだよ。
もちろんVBとかじゃなく、初期のBASICね。

BASIC・・・1964年生まれ
C言語・・・1973年生まれ

> ジャンプ出来るのは関数内だけだ
BASICのGOTOは本当にコードのどこにでもジャンプできた。
行番号指定でどこにでもね。

関数の呼び出し(そもそも関数がなかったが)の代わりとしても使えたし、
当然returnもGOTOで実装。

3と4はBASICにもあったと思うが、
これもGOTOで実装しようと思えば出来る。
2はBASICにあったかな? なかった気もするが。

GOTOの元をたどれば機械語のジャンプ命令に相当するんだよ。
その流れからBASICにもC言語にもgotoという名前で実装された。
その時にgoto(ジャンプ)の代わりになるものが追加された。
それが>>119で書いた内容。

だけどまだ足りなかった。特に5の例外ができるのはかなり後だったね。
C言語では今でも例外がないからgotoが使われることがある。
エラーが発生した時にgotoで関数の後ろに飛ばすんだよ。
そのほうがスッキリかけるから。

最近の言語はほぼ全て例外をサポートしてるんで、
JavaScriptだけでなく最近の言語はgotoなくても困らないよ。
0122Name_Not_Found
垢版 |
2015/02/16(月) 23:10:54.39ID:???
htmlとcssとjqueryをやり始めて三ヶ月なんですが自分が作っているサイトでjqueryを使いたいのですがどうしてもscrollがうまくいきません
アドバイス欲しいんですがファイルをアップしたら見てもらえますか?
ダメそうならもうちょっと考えます
0125Name_Not_Found
垢版 |
2015/02/16(月) 23:37:49.16ID:???
jQueryのステマだよ。
jQueryは役割終了しているけれど、これを有料で布教して食っている、非技術系デザイナーのクズが少なからず存在しているからな。
因みに、ここ2年のJS実装では、匿名関数が本当に無名関数になった。jQuery布教者どもが匿名関数を何故か無名関数無名関数とほざいていたからか、JSが折れた形w
0126Name_Not_Found
垢版 |
2015/02/16(月) 23:49:28.15ID:???
>>123
テンプレ見てなかった
すんません
でもjqueryは書くほどのレベルじゃないっていうかホントに初心者用参考書のレベルなんです
コードは間違ってないと思うんだけど…
とりあえず後で書いてみます

>>124
ありがとうございます
ちなみに使用してるブラウザはchromeです
後でコード書きますんでよかったらご指導お願いします

>>125
正直この業界に足を踏み入れたばかりなので無理関数とかわからないです
jqueryって嫌われてるんですかね?やっぱjsのが現場で使いますかね?
0127Name_Not_Found
垢版 |
2015/02/17(火) 00:34:17.25ID:???
> jqueryって嫌われてるんですかね?
一番使われてるライブラリだよ。
0128Name_Not_Found
垢版 |
2015/02/17(火) 00:44:44.70ID:???
ユーザが多いのは嫌われやすいものだ
0129Name_Not_Found
垢版 |
2015/02/17(火) 01:02:44.95ID:???
>>125
原理主義者はどの世界でも意味不明だなw
いや、マジわからんw
0130Name_Not_Found
垢版 |
2015/02/17(火) 04:26:45.21ID:i6q1/MwW
今やjQueryの機能はより良い形で標準で提供されているからな。
それも似ているがやや違うと言った物が多いので、jQueryを使い続けることは混乱の元になる。
その冴えたる例がProxy。いくらネイティブでProxyがThenableを考慮してくれたからといって、
同期/非同期の差で躓くことは多い。
もういい加減標準機能のポリフィルに切り替えていった方がいい。
0131Name_Not_Found
垢版 |
2015/02/17(火) 04:37:05.48ID:???
>>130
標準で書くのとjQueryで書くの
標準で書いたほうが短くなる例
一つでもありましたっけ?w

というレベルだよな。
探せば見つかるかもしれないレベルだ。

明らかにjQueryの方が上だよ。
0132Name_Not_Found
垢版 |
2015/02/17(火) 04:45:51.09ID:i6q1/MwW
>>131
なにを言ってるんだ???
Q.DefferdとPromise、Q.ajaxとfetch、animeteはanimateだし、
長さはほぼ変わらないよ。
でも機能的には標準のほうが上だし、後から出た分APIとしてもちゃんとしてる。
だからこそjQueryを使う意味は無い。
まだ標準で不足してるのはDOMの比較部分の一部などだが、そこだけjQueryのサブセットか何かを使えばいい。
0133Name_Not_Found
垢版 |
2015/02/17(火) 05:03:53.28ID:???
>>132
ワロタw

単語の長さじゃないよ。
同じことをやるのにどちらが短いかだよ。

$(document).on('click', '.class', function() {
 $(this).toggleClass('state', 'active');
})

例えばこれと同じことを標準だけで書いてみてよ。
0134Name_Not_Found
垢版 |
2015/02/17(火) 05:13:34.51ID:i6q1/MwW
>>133
そういうニュアンスで言ったつもりだが。
DOM操作周りはまだ標準が不足してるからライブラリを使えばいいと言っている。
ただしClassのtoggleは標準機能を使うべき。
だがjQueryを使うとどうしても全体、不要なとこさえがjQuery流になってしまいがち。
だからポリフィル+最低限のライブラリでないといけない。
0135Name_Not_Found
垢版 |
2015/02/17(火) 05:28:33.18ID:i6q1/MwW
一応書くとこんなかんじか
document.queryAll('.class').map(e=>
 e.onclick = e => e.classList.toggle('state', true)
)
0136Name_Not_Found
垢版 |
2015/02/17(火) 09:04:43.89ID:???
まーたいつものライブラリより短く書いてよ君か
0137Name_Not_Found
垢版 |
2015/02/17(火) 09:10:32.77ID:???
>>135
ちょっと違うね。

それだと.classの要素が動的に増えた時に対応できない。
onclick属性を使ってるから複数のイベントハンドラに対応できない。
toggleClassの所は俺が間違えたから訂正しておく

$(document).on('click', '.class', function() {
 $(this).toggleClass('state');
})
0138Name_Not_Found
垢版 |
2015/02/17(火) 09:36:29.82ID:papArVWM
昨日書き込んだ>>122です
$(function() {
var nav = $('#nav');
nav.hide();
$(window).scroll(function () {
if ($(this).scrollTop() > 100) {
nav.fadeIn();
} else {
nav.fadeOut();
}
});
});

画面をスクロールするとnavが表示されるようにしたいのですがうまくいきません。
先輩曰くcssのpositionのせいで動かないらしいんですが具体的に何がどうなったら動かないっていうのは説明できない(わからない)そうです
ブラウザはchromeです
よかったら知恵を貸してください
0139Name_Not_Found
垢版 |
2015/02/17(火) 10:59:29.82ID:???
見えてないだけとか?navの縦サイズとcssはどうなってんの
0140122
垢版 |
2015/02/17(火) 11:41:26.92ID:papArVWM
#nav {
display: block;
width:100%;
height:40px;
background-color:rgba(0,0,0,0.5);
position: fixed;
top:90%;
z-index: 255;
overflow-x: hidden;
}

こんな感じです
先輩が言ってたpositionはnavじゃなくてサイト全体でposition使いまくっているからうんぬんだそうです
マジでわからん......

$(document).ready(function() {
$("#me").click(function () {
$("#nav").fadeIn();
});
});

ちなみにクリックでのnavの表示は上手くいきました
0141Name_Not_Found
垢版 |
2015/02/17(火) 12:01:32.61ID:???
まずはscrollイベントのリスナが実行されているかどうかをalertやコンソールで角煮する
さらにscrollTopが動いているかどうかを同様に確認する
そこから原因を推測して修正する

断片的なのでこれくらいしかアドバイスできない
もしピンポイントの指摘が欲しいなら>>2のサイトに再現コードを貼ることだね
0142Name_Not_Found
垢版 |
2015/02/17(火) 12:37:59.16ID:abz4w2Cl
>>137
もはやjQueryの機能を標準で再現できるかという話になってないか?
そこまで拘るのならもっと一般的なユースケースを挙げてほしいね。
まあそれはいいよ。
結局jQueryを前提にしたようなものしか出してこないだろうし。
0143122
垢版 |
2015/02/17(火) 14:23:02.68ID:papArVWM
>>141
ありがとうございます
とりあえず書いてみました
制作途中なんで凄く汚いですがお願いします
http://jsdo.it/test_joy/cTjA
014493
垢版 |
2015/02/17(火) 16:11:01.27ID:???
どなたかわかるかたいませんか
0146Name_Not_Found
垢版 |
2015/02/17(火) 17:05:44.43ID:???
>>143
確かにその先輩の言う通り、サイト全体を position: absolute; にしてるのが良くないね
本当ならサイト全体の構成を直すべきだけど、とりあえず
「$(window).scroll」 → 「$("#wrapper").scroll」
にすればいける
0147Name_Not_Found
垢版 |
2015/02/17(火) 17:16:23.48ID:???
>>146
ありがとうございます!
時間的に全体をなおすのは難しいので#wrapperにつけることにします
0148Name_Not_Found
垢版 |
2015/02/17(火) 20:33:56.13ID:???
>>142
ユースケースの話をするなら「古いブラウザでも動くようにしたい」も
立派なユースケースだと思うけどね。

それは置いといてなんかユースケース出せるわけないみたいなこと言ってるし、
想像力のないあなたに一般的なユースケースを。

ページ上にフォームがある。このフォームでsubmit(input,button関係なく)が
押された時に、二度押しを防ぐために、そのフォームに含まれるinput要素全てを
disabledにしたい。そして色も変えたい。

ただし、ページ上にフォームは複数あることもあるし一つもないこともある。
全てのページ、すべてのフォームでこのような処理を行いたい。

2度押し防止のdisabledをやったことがない人はいないと思うんで。
0149Name_Not_Found
垢版 |
2015/02/17(火) 20:59:17.64ID:???
古いブラウザでもってのはポリフィルの役目じゃね
jQueryはブラウザ間の誤差を埋めて貧弱な標準機能を補完するために生まれたと思うが。
0150Name_Not_Found
垢版 |
2015/02/17(火) 21:22:50.36ID:???
<FORM NAME="enq">
<INPUT TYPE="text" NAME="fugafuga">
<INPUT TYPE="hidden" ID="hogehoge" NAME="hogehoge" value="">
<INPUT TYPE="SUBMIT" VALUE="送信" ID="pekepeke" NAME="pekepeke">
</FORM>

<script>
document.forms.enq.hogehoge.value="saitama";
</script>



上記では、enq.hogehogeの中をJavaScriptでsaitamaにしておりますが、
enq.fugafugaの中で入力した値を、「送信」ボタンを押したタイミングで、
enq.hogehogeの中の中に入れるようにするには、どのようにしたらよいでしょうか?

例えば、fugafugaに「日本」と入れて送信した場合、hogehogeにも「日本」が入ってるような感じです。
0151Name_Not_Found
垢版 |
2015/02/17(火) 21:26:52.60ID:???
>>149
たしかにそうですね。
だけど古いブラウザでも動くと言うのは事実なので、
少しいい方を変えて「特定のブラウザの固有の問題を回避して」
っていうのがよりよい言い方かもしれないですね。

ブラウザ固有の問題というのは、ブラウザのバグだけでなく単にその機能がない
っていうのも含まれるわけですが、ポリフィルはその足りない機能を埋めるのに対して
jQueryは埋めるのではなく、代わりになる機能をDOM標準よりも
もっといい形で提供したもの。

どんなにHTMLやJavaScriptが発展して標準化されたとしても
ブラウザ固有の問題は無くならないでしょうしね。

最新のSafari2.1.3が、新し目のSafariバグ対策がされているのも記憶に新しい話。
http://blog.jquery.com/2014/12/18/jquery-1-11-2-and-2-1-3-released-safari-fail-safe-edition/
こういうのは正しい書き方をしているのに、ブラウザのバグで動かないわけで
見つけづらいバグになる可能性が高い。
0152Name_Not_Found
垢版 |
2015/02/17(火) 22:04:08.77ID:???
それを言い出したら、jQuery自体にもバグはあるからな
ブラウザ固有のバグに比べたら少ないかもしれないが、だからと言ってjQueryを盲信すべきではない
0153Name_Not_Found
垢版 |
2015/02/17(火) 22:09:40.11ID:???
1.viewでdomイベントをハンドリング
2.modelを変更
3.modelのイベントを、viewがハンドリング
4.viewが自分を変更

みたいな処理がありますが、
viewは1の時点で4の処理が想定出来ます
なので

1.viewでdomイベントをハンドリング
2.modelを変更
3.viewが自分を変更

という処理も出来ると思いますが
何故viewはmodelのイベントをハンドリングするのでしょうか?👀
0154Name_Not_Found
垢版 |
2015/02/17(火) 23:08:59.89ID:???
>>153
modelを変えるのは、そのviewだけとは限らないからだよ。

modelは色んな物から書き換える。

例えばカレンダーに新しいスケジュールを登録したら
カレンダービューが変わるのは当然として、
今日の予定ビューも変わるだろうし、
TODOリストも更新するかもしれない。

日付が変わったら今日の表示も変えないといけないし
スマホから登録したら、PCでみたブラウザのリアルタイムで変えたいかもしれない。

ビューがモデルを変えた時にビューを更新するだけだと
それ以外のビューが同じモデルを参照している時の処理が面倒になる。


モデルはいろんな処理によってどこからでも変わる可能性があるという前提で
変わったらそのイベント通知がきてビューを更新とすることで
何をきっかけに変わったとしても対応できるようになる。
0155Name_Not_Found
垢版 |
2015/02/17(火) 23:21:23.81ID:???
良く分かりました
ありがとうございました
0156Name_Not_Found
垢版 |
2015/02/18(水) 00:26:12.94ID:???
mb.miniAudioPlayerというのを使いたいのですがどうすればいいのかさっぱり分かりません
0157Name_Not_Found
垢版 |
2015/02/18(水) 07:41:09.76ID:???
>>133
そもそもこの先はObservableの時代だと思う。
var mouseDowns = document.queryAll('.class').mouseDowns;
for ( evt on mouseDowns ) evt.target.classList.toggle('state');
とES7の時代では書けるらしい
0158Name_Not_Found
垢版 |
2015/02/18(水) 08:23:57.09ID:???
そもそもViewはModelを変更しない
入力を受け取るのはControlでViewはその橋渡しをするだけだ
0159Name_Not_Found
垢版 |
2015/02/18(水) 08:42:28.78ID:???
>>158
それは本来のMVCじゃなくて
ウェブ用にへんに歪められたMVC2
0160Name_Not_Found
垢版 |
2015/02/18(水) 10:27:00.86ID:???
>>158
それはJavaScriptのフレームワークを知らない人の意見
0161Name_Not_Found
垢版 |
2015/02/18(水) 11:03:42.32ID:???
JavaScriptで、「html自体はリロードするが、それが使用する画像などはリロードせずキャッシュを用いる」リロードを行いたいのですが
何か良い方法は無いでしょうか。

chromeで動作を見てみたのですがlocation.reload()だと画像もリロードしてしまいます。
location.href=location.hrefでも同様です。
クエリの部分に変更を加えた場合
(たとえばexample.com/reload.phpでリロードを行う場合、location.href="example.com/reload.php?time="+Date.now();などとする)
目的の動作になるのですが、この方法以外で実現可能でしたら
教えていただけないでしょうか
0162Name_Not_Found
垢版 |
2015/02/18(水) 11:19:33.90ID:???
サーバー側で画像をキャッシュさせる設定にしろ
0164Name_Not_Found
垢版 |
2015/02/18(水) 16:51:20.14ID:???
>>161
試してはいないが
img の srcをロード後にスクリプトからあてがうようにすれば
htmlがリロードされても画像はローカルキャッシュが効くのではないか?
0165Name_Not_Found
垢版 |
2015/02/18(水) 17:29:19.78ID:???
>>161
chromeのスーパーリロードは Ctrl + Shift + R で意識的にしないとできなかった気がするが
ほんとにそれキャッシュからではなくサーバーからデータ受信してる?
0166Name_Not_Found
垢版 |
2015/02/18(水) 18:04:45.79ID:???
>>159
本来のMVCは
入力→C→M→V→出力
だよ
目的はModelからその他を分離させることだから、Modelが中心
0167Name_Not_Found
垢版 |
2015/02/18(水) 18:59:56.59ID:???
ビューがモデルに対して視覚的なイベントを発行し、それをビューで受ける、
というはアリなのでしょうか?
そういう例が「backbone.jsアプリケーション開発ガイド」にあるのですが。

英語になりますがここに書籍と同内容のサイトがあります
http://addyosmani.github.io/backbone-fundamentals/#application-view
AppViewのfilterOneメソッドの中で、
todo.trigger('visible');
と、todoモデルに対してイベントを発行。
そのイベントをTodoViewがハンドリングして、toggleVisibleメソッドを実行。
つまり異なるビュー同士が、モデルを介してメッセージをやりとりしている形です。
しかしモデルに対してvisibleというカスタムイベントを発行するのは何となく違和感があります。
でもモデル自体はvisibleの処理内容に関しては何一つ関知していないので、
こういう使い方はいいのでしょうか?
0168Name_Not_Found
垢版 |
2015/02/18(水) 19:22:01.54ID:???
Modelが入力イベントに対して反応するのはMVC的には変。
それだとModelControllerになってしまう。
でもMVCではなくView層とそれ以外の分離と考えれば変ではない。
0169Name_Not_Found
垢版 |
2015/02/18(水) 19:52:59.63ID:???
>>164
ですね、ただリロードのためだけの特殊な事は余りしたくないのです
(クエリの変更を避けたいのもそれが理由です

>>165
すみません、コンソール見直したのですが間違っていました。
location.reload()などの方法だと画像などはキャッシュを全く使わないわけではなく
if-modified-sinceやif-none-matchなどを吐き更新を確認しているようです
ただ、更新のための通信自体は行われているので
クエリの変更によるリロードよりも遅く感じます
(developer toolsのNetworkタブで確認しても時間がかかっています)
サーバー側から吐くキャッシュコントロールのヘッダの種類も含めてもう少し見直してみます
0170Name_Not_Found
垢版 |
2015/02/18(水) 20:45:03.99ID:???
app.Todos.trigger('filter') のようにしてコレクション上でfilterイベントを発生させます。
これによって、それぞれのTodo項目の表示と非表示が切り替えられます。

という文章も出てきました。コレクションというのはbackboneではモデルの集合のことです。
JavaScriptがクライアントサイドである以上、
モデルに対しても表示まわりのイベント発行は許されるのでしょうか
そこまで分離してないというか
0171Name_Not_Found
垢版 |
2015/02/19(木) 01:27:14.49ID:???
>>166
> 本来のMVCは
> 入力→C→M→V→出力
それはSmallTalkを知らない奴の意見。

本当のMVCは

Model ←→ View ←→ Controler
↑                │
└───────────┘
http://csis.pace.edu/~bergin/papers/mvcnew.gif


> 入力→C→M→V→出力
これはMVC2

JavaScriptの時代になってようやく本当のMVCの話が出てきただけ。
WindowsなどでGUIアプリを作っていた人間なら、本当のMVCを知っている。
その後でウェブが出てきて、MVC2をみて、なんじゃこりゃ?って思ってた。
そして、やっと本当のMVCができるようになったのかよって苦笑してる。
0173Name_Not_Found
垢版 |
2015/02/19(木) 01:29:55.44ID:???
>>168
> Modelが入力イベントに対して反応するのはMVC的には変。

MVC的にはおかしくない。ウェブアプリで歪められたMVC2的におかしいだけ。

最近のJavaScriptはようやくデスクトップGUI波のことが出来るようになったから
本当の意味のMVCができるようになった。
本当のMVCではビューがモデルを変更する
0174Name_Not_Found
垢版 |
2015/02/19(木) 09:05:44.58ID:???
>>171
> それはSmallTalkを知らない奴の意見。

ま、Smalltalk をうっかり SmallTalk と書いちゃう人の場合
自分も Smalltalk のことはろくすぽ知らないけどな!って自己紹介しているようなもんだから、
この人が書いていることも、どこまで信用してよいやら…
0175Name_Not_Found
垢版 |
2015/02/19(木) 09:15:47.87ID:???
何が「本当」かはともかく、オリジナルの本来の MVC の概要については
この資料が比較的簡潔でわかりやすくまとめられていてお薦め。
(最後の方すこし RoR ユーザー向けだけど、前半は一般論で参考になる)

「あの日見たMVCを僕たちはまだ知らない for RoR」
http://www.slideshare.net/shinnosukekugimiya/mvc-for-ror/7
0176Name_Not_Found
垢版 |
2015/02/19(木) 10:28:02.66ID:???
なんだやっぱり>>166 の概念が正しいんじゃん。
0177Name_Not_Found
垢版 |
2015/02/19(木) 10:36:38.48ID:???
あるControllerからModelに通知が行き変化があった時、
その変化はそのControllerに付随するViewだけでなく
全てのViewに通知されるべき。

というのは参考になりました
そういうmodelのパブリッシュ性から、
>>167のように視覚的イベントもmodelで発行するという発想になっているのかもしれません
個人的には視覚的要素が絡むならviewがイベントを発行するべきじゃないのかと思ったのですが
viewがviewをobserveするというのはMVC的にないのかも
0178Name_Not_Found
垢版 |
2015/02/19(木) 10:54:38.81ID:???
ちなみにbackboneにはControllerクラスがなく、VとCをViewクラスが担当しています
modelのイベントをトリガーしているのは実際にはCがしているということになるのでしょう
0179Name_Not_Found
垢版 |
2015/02/19(木) 11:32:33.51ID:???
MFCはDoc-Viewアーキテクチャだね

ModelとViewの関連性を疎結合にする必要がなければコントローラは
いらないって事なんだろう
0180Name_Not_Found
垢版 |
2015/02/19(木) 13:17:19.24ID:???
Modelの状態はチェクボックスその他のView部品に丸投げしたくなる
0181Name_Not_Found
垢版 |
2015/02/19(木) 15:09:29.07ID:???
mvvmっていうのの説明を読んでいたら、
これが理想に近い気がしてきました
0182Name_Not_Found
垢版 |
2015/02/19(木) 15:32:43.17ID:???
理想というか、現実じゃね。
どうしてもVがVMになってしまうというか、してしまいたくなるというか。
0183Name_Not_Found
垢版 |
2015/02/19(木) 21:20:06.20ID:???
>>176
> なんだやっぱり>>166 の概念が正しいんじゃん。
だからそれはMVC2だって言ってるじゃん。
MVC2としては正しいよ。
0184Name_Not_Found
垢版 |
2015/02/19(木) 23:24:19.97ID:???
>>175を見てもまだそんなことが言えるのか
SmallTalkを知ってる奴はやっぱり違うな
0185Name_Not_Found
垢版 |
2015/02/20(金) 06:59:28.70ID:???
まあ>175が間違いなんだけどなw
0186Name_Not_Found
垢版 |
2015/02/20(金) 07:00:52.83ID:???
>>184

> Viewは視覚的なすべてを扱う。
> モデルにデータをリクエストして、それを表示する。

モデルにデータをリクエストして!
モデルにデータをリクエストして!
モデルにデータをリクエストして!
モデルにデータをリクエストして!
0187Name_Not_Found
垢版 |
2015/02/20(金) 07:10:29.39ID:???
>>175で見て思うのは、
RailsとかJavaScriptとか
1998年に既にJavaで通った道に
やっとたどり着いただけなんだよな。

最先端のつもりでいるのに、15年以上前だったw
0189Name_Not_Found
垢版 |
2015/02/20(金) 10:14:09.49ID:???
クライアントサイドはサーバサイドのMVCより難解に感じる
他のハンドラを反応させるためにイベントを起こすけど
そのイベントが誰に何をさせようとしているのか、
イベントを見るだけでは分からないので
プログラムの流れが読み取りにくい
0190Name_Not_Found
垢版 |
2015/02/20(金) 13:25:54.94ID:???
asm.jsってどうなん?
デザインしたいだけの一般スクリプターには数字の計算が早くなるだけならあまり恩恵なさそうだが
0191Name_Not_Found
垢版 |
2015/02/20(金) 13:27:00.73ID:inmbenfW
>>186
ViewとModelの関係がリクエスト-アンサー型かオブザーバー型かその他かはMVCの本質的に関係ない
0192Name_Not_Found
垢版 |
2015/02/20(金) 13:40:04.12ID:???
>>190
マイクロソフトがサポートを表明したばかりだね
すぱるタンに搭載されるかは不明
確かにゲームや画像処理などcanvas使う以外ではあまり恩恵がなさそう
0193Name_Not_Found
垢版 |
2015/02/20(金) 13:46:34.88ID:???
簡単なプログラム作りたいんですが教えてください

5択のセレクトボックスを作る
選択によって10点から50点まで点数をつける
そのセレクトボックスを複数作り合計値を出力する
0195Name_Not_Found
垢版 |
2015/02/20(金) 13:57:07.09ID:???
>>190
asm.jsは直接使うものではなくC,C++で作ったプログラムをそのままブラウザで動かすためのもの
0196Name_Not_Found
垢版 |
2015/02/20(金) 18:24:48.92ID:???
asm.jsは文字列すらない、ArrayBufferをメモリに見立ててアクセスするもので、
文字通りアセンブラみたいなもの。あまり人が直接書けるようなものではない。
人が書くことを考えればSaneScriptが現実的。
0197Name_Not_Found
垢版 |
2015/02/20(金) 19:52:01.42ID:???
コンパイラっていうかトランスレータもあるけど決して手で書けないかと言うとそうでもない
バイトコードやネイティブコードになるわけじゃない
0198Name_Not_Found
垢版 |
2015/02/20(金) 20:41:49.11ID:???
asm.jsは一見頑張れば手でも書けそうに見えるが、普通に変数を使うと速度が出ない。
速度を最大限だそうとするとArrayBufferまみれになってとても常人が手を出せるものではない。
0199Name_Not_Found
垢版 |
2015/02/20(金) 20:48:15.40ID:???
良く知らんけど勝手にasmってくれb驍謔、じゃないbニ
いちいbソそんなのに合b椹て書いてらb黷ネいわ
0200Name_Not_Found
垢版 |
2015/02/20(金) 21:41:29.81ID:???
ぶっちゃけSoundScript/SaneScriptが実用化されたら、C++並にはなるだろう。
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況