Vue vs React vs Angular vs Svelte Part.9

■ このスレッドは過去ログ倉庫に格納されています
2022/01/16(日) 16:06:14.27ID:Zy2wxIp9
Vue
https://jp.vuejs.org/
React
https://reactjs.org/
Angular
https://angular.io/
Svelte
https://svelte.dev/

※前スレ
Vue vs React vs Svelte Part.7
https://mevius.5ch.net/test/read.cgi/tech/1610901677/
Vue vs React vs Angular vs Svelte Part.8
https://mevius.5ch.net/test/read.cgi/tech/1621744952/

★ここではjQuery, Ruby, C#, Blazorの話題は禁止です
★jQuery, Ruby, C#, Blazorキチガイが書き込んでも無視してください
Next, Nuxt, Sapper, Gatsby, VuePress, RedWoodなどはおk。
2022/02/13(日) 01:05:29.08ID:qLNOvlC4
SPAだと状態管理というかある程度全体的に使えるデータが使えたらいいなと思うけど
結局画面ごとにAPI呼んでデータ取ってくるしそこまで巨大なアプリじゃなければ
状態管理するほどのデータは無さそうな気がするんだけどね
画面遷移でデータ渡せるし、グローバル的な管理って何か時代と逆行してるというか
トークンみたいなのぐらいしか使ってなかったわ
2022/02/13(日) 07:27:08.24ID:txwSwK3V
>>599
このスレで状態管理と出てきたらほぼReactHookの事でクラスは関係無いと思って良いかと。
クラスについては、そこそこ便利なオブジェクトリテラルが有るからあんまり使い道がない。状態を持つオブジェクトを(何回も)生成する時と、組み込み型を継承して拡張するときくらいじゃなかろか。
2022/02/13(日) 10:04:52.70ID:8X08gYL4
なんというか数学できないヤツってコードが汚いよね
2022/02/13(日) 13:07:50.24ID:0T+jzOg7
複雑なデータを表現する時はやっぱクラス便利よ
reactには直接関係ないけど
2022/02/13(日) 13:09:23.18ID:gSu1aBn1
たかがJavascriptごときがクラス扱うとか
正直なまいきだよな
2022/02/13(日) 13:10:04.38ID:dfoEbwcZ
Reactの関数コンポーネントはどこで値を保持してるの?
グローバル変数?
2022/02/13(日) 13:11:08.65ID:gSu1aBn1
>>605
this内のクラスじゃねーのあれ
2022/02/13(日) 14:27:27.69ID:mUBeMgFR
>>601
私はjavascriptのオブジェクトリテラルは、任意の関数で弄れてしまうので構造体に過ぎないと感じるが…
連想配列でswtich文を代替できたので、構造体と等価ではないけど。

いつ、何が状態を変化させたのか追跡するのが面倒なので、規定のインターフェース(プロパティ・メソッド)で内部変数を操作し
内部変数の状態に応じて処理を変えたい時にインスタンス内で問い合わる…これがクラスの使い方の王道と解釈している。
交換する変数の型を明記したインターフェースを事前に規定するので、確実に状態が管理される。
クラス設計=状態管理 じゃないかな、と。
2022/02/13(日) 14:47:03.56ID:txwSwK3V
>>607
> 任意の関数で弄れてしまうので構造体に過ぎない
その理屈で言うと、クラスで作ったオブジェクトもほぼ構造体です。
2022/02/13(日) 15:43:17.61ID:AQs5k9sa
>>605
コンポーネント内のプロパティに覚えてる
2022/02/13(日) 17:40:21.65ID:3CUrxwY5
>>607
コンテキストによって状態管理が表すものって変わるでしょ
あなたが言ってるのはクラスでの状態管理だしこのスレで言ってるのはアプリ内での状態管理
全く別の話
2022/02/13(日) 18:17:18.26ID:Wnt0ls+2
>>607
このスレでOOPなんて語っても、誰もOOPなんてやってないから意味ないと思うぞ
2022/02/13(日) 18:26:03.45ID:txwSwK3V
クラスベースだけがOOPじゃないぞ
2022/02/13(日) 18:46:46.47ID:mUBeMgFR
>>608
それは違う。
内部変数へアクセスする文字ラベルがインターフェースにリスト化・共有化されるので、
どのインスタンスがいつ内部変数を操作したのか追跡できる。
構造体はインターフェースを持たない。

>>610
別になる理由が分からない。
状態管理とは、どのレジスタにどんな数値が格納されているかを追跡できるかどうかじゃないの?
それはインスタンスの連携で構成されるアプリなので、不変だと思うが…

コンテキストの意味が不明瞭なので、状態も不明瞭なんじゃないかなと感じてます。
2022/02/13(日) 19:10:21.77ID:txwSwK3V
>>613
内部変数というのはプロパティの事?
(C等の)構造体は実装やメモリ的にはpaddingで表現できるとしても、コード的には文字ラベルがあなたの言うところのインターフェースだと思うけど。
何れにせよクラスで生成したオブジェクトも、オブジェクトリテラルで生成したオブジェクトも、JSにおいてはほぼ等価です。
あるいは、ひょっとしてプライベート変数の話です?
2022/02/13(日) 19:20:23.40ID:3CUrxwY5
あー
これRustおじさんか
2022/02/13(日) 19:28:10.07ID:txwSwK3V
あー、そうかも
2022/02/13(日) 19:40:53.06ID:0WNBUZNL
>>609
どういう仕組みで?
2022/02/13(日) 20:07:13.39ID:bi2TTbe4
React HooksのuseStateがどういう原理で実現されてるのか
https://sbfl.net/blog/2019/02/09/react-hooks-usestate/
2022/02/13(日) 20:10:44.93ID:3CUrxwY5
Rustおじさんは全部主観で決めてかかってくるから分かりやすい
2022/02/13(日) 20:18:28.79ID:0WNBUZNL
>>618
なるほど…よく読まんとわからんね
しかしよく理解できるな
2022/02/13(日) 20:24:42.86ID:YYiu+dAA
Reactのソースコード読まなくてもPreactなら簡単に実装されてるから簡単に読める
2022/02/13(日) 21:18:37.07ID:MILRPz6f
ほう
そもそもリアクティブってどうやって実現してるんだか
2022/02/13(日) 21:25:54.90ID:fGHLySCJ
アクティブっていうぐらいだから
ActiveXを使ってるんだろ
2022/02/13(日) 21:41:33.67ID:HvK/So9I
ニキビにも効きそう
2022/02/13(日) 21:49:25.72ID:iTaXvFH/
最近web系やってみようとフロントは何にしようかと思ってたけどいっぱいあるし
もうさくっといけそうなvueでいいや
フレームワーク的なところは使わんし
2022/02/13(日) 21:50:34.47ID:0XmpoZ/W
何かイベント起こるとrenderに食わせた関数が呼ばれ仮想DOMツリーを作る、古い仮想DOMツリーとの差分のDOMを更新する。一つの変更が仮想DOM更新中に全部に波及してリアクティブな操作になる(ちょうてきとうな説明)
2022/02/13(日) 22:38:35.53ID:YntYJuXt
>>626
なるほど
しかし仮想DOMツリーって複雑で膨大なのに速度的に問題なさそうですごいな
どこか階層の一部だけ更新されるとjsオブジェクトとしては全体を更新してるのかねえ
どうやって階層の一部だけ更新してるのかさっぱりわからんわ
2022/02/14(月) 00:25:16.59ID:FwYo3TXm
>>617
render時に対象のVNodeに保存されてるComponentオブジェクトを取り出し、useStateが呼び出された時はそのComponentのプロパティであるhooksという配列に値を設定される
配列なんだから呼び出された順番でインクリメントされる
これがHooks
2022/02/14(月) 06:36:57.18ID:CZHjqgIJ
>>627
仮想DOMツリーが巨大かどうかは組み方に寄るし、(仮想DOM操作のような)実DOMに触れないJSで完結する処理はかなり高速。遅い処理はuseMemoとか使おう。
2022/02/14(月) 11:16:31.13ID:jHAJjTzR
kami.map((a, i) => (
<Kaminoke {...a} onNukege={() => handleNukege(i)} />
)

コンポーネントの再計算のたびにラムダが生成されてDOMの更新がかかってる?
回避方法がわからない
2022/02/14(月) 11:25:46.39ID:KlVj6RDR
>>630
useCallback
2022/02/14(月) 11:29:37.10ID:IpeVw0MS
>>631
ループ中はhook使えないのでわ?
2022/02/14(月) 12:00:34.48ID:4QEGKYDA
単体要素向けに作ったフックを配列向けに組み直すテクニックはありますか?

const foo = useSuperComplexFooManager()

const foos = []
for (let i = 0; i < n; i++) foos.push(useSuperComplexFooManager()) // opps!!

useSuperComplexFooManagerは前任者が作ったものですがあまりにも難しくメンテナンスできません
この中身には手を入れずそのまま再利用して配列向けにしたいです
2022/02/14(月) 12:40:27.43ID:jFb8p0Sw
俺だったら難しいこと考えずフックをコンポーネントでラップしループの中でコンポーネントを生成する
2022/02/14(月) 13:05:27.03ID:4QEGKYDA
それだと親から各hookのメンバにアクセスしたい時に困りますね
2022/02/14(月) 14:03:26.14ID:80dDJ7BV
const foos = [1...n].map(i => useSuperComplexFooManager())

でいけんじゃね?
useRefでこんなコード書いてるけど
2022/02/14(月) 14:46:58.32ID:HfVNEtCi
それはループと同じだと思うけど…いいの?
2022/02/14(月) 15:19:06.67ID:80dDJ7BV
ループNGルールは何が要求してるのかい?
2022/02/14(月) 15:24:13.92ID:4hG04sUJ
>>638
hooksは関数のトップレベルでないと正常な実行が保証されない
2022/02/14(月) 15:24:34.35ID:KlVj6RDR
https://reactjs.org/docs/hooks-rules.html
Don’t call Hooks inside loops, conditions, or nested functions.

ってことかと
2022/02/14(月) 15:38:01.12ID:KlVj6RDR
正直俺のレベルだとこんなくらいしか思いつかない

コンポーネント作ってpropsにタイムスタンプ用意して
変更されたらメソッド呼び出しみたいな……

type Props = {
timestamp: number;
}
const TempComponent: React.FC<Props> = (props) => {
const foo = useSuperComplexFooManager();
const { timestamp } = props;
useEffect(() => {
if (timestamp === 0) return;
foo.hoge();
}, [foo, timestamp]);
return null;
}
export default TempComponent;
2022/02/14(月) 15:47:41.25ID:KlVj6RDR
React.createRefならループ中に使ってもok?
だとしたらforwardRefでどうにかいけるかも

const TempComponent = forwardRef((props, ref) => {
const { hoge } = useSuperComplexFooManager();
useImperativeHandle(ref, () => ({
hoge,
}));
return null;
});
2022/02/14(月) 16:09:48.94ID:11/AMapb
サンガツ
なるほどuseRefを使うとサブコンポーネント内部状態を参照できるのか
こりゃ便利だ
2022/02/15(火) 09:56:36.41ID:jZRA5L/z
親子の参照はtree構造では良く使うのにいちいちrefを経由しないと使えないのめんどくさいね
この辺りは他のフレームワークでよくある継承でコンポーネントを拡張する&親子の参照はただのインスタンス参照って方式のほうが直感的でわかりやすいかな
2022/02/15(火) 10:23:25.29ID:iNjbZ+Gv
普通だと親が子のデータを管理するからここまで手間は増えないよ
親のuseStateとContextで賄える
2022/02/15(火) 10:31:18.31ID:jZRA5L/z
普通ならそうなんだけどフックのトップレベル制約の都合で状態やプレゼンテーションロジックを子コンポーネントに預けないといけなくて辛いねという話の流れではなくて?
2022/02/15(火) 14:24:18.35ID:+57I4T89
ReactNativeのSSRってのは無いのかな
2022/02/15(火) 15:08:44.00ID:6z6Nq8Ea
どういうこと?
2022/02/15(火) 15:32:59.86ID:+57I4T89
ロジックもレンダリングもサーバーサイドで完結できないかなって思った
ブラウザは機能不足、WebViewは遅い、なのでネイティブがいい
でもネイティブの酷い開発者体験はどうにかして回避したい、というワガママ
2022/02/15(火) 16:10:32.61ID:/0MPsAKI
ExpoのOTAアップデートが限界だろうね
2022/02/16(水) 02:37:57.40ID:yTo1vhWy
フロントエンド改修するのにReactかVue3で迷ってる
世の流れ的にいくならReactにしない理由はないと思うんだけどなんか好きになれんのよな

Vueはテンプレートの構文がわかりやすくて好きなんだけど、結局typescriptとの親和性の観点でtsxで書く流れになってきてるから、tsx使うならReactでよくねとも思う
Reactだと依存配列書き忘れとかも以外とやりがちで、Vueはcomputedがその辺全部いい感じにやってくれるから自分的な差はそこくらいかなあ

なんかここで選べみたいなのあります?
2022/02/16(水) 02:39:11.36ID:M+aaKIjO
サイコロ
2022/02/16(水) 09:42:10.90ID:LA+91iGg
XML文字列をパースしてReactNodeを生成したい
EVALで出来ないかな
2022/02/16(水) 10:02:19.35ID:XlkkFeep
つ DOMParser
2022/02/16(水) 11:11:36.19ID:CMcpZLXP
vueはとっかかりはホント楽だよなあ
でも流れとしてはReactのがよさげっての悩みどころ
2022/02/16(水) 12:05:58.95ID:XlkkFeep
Reactは状態管理のライブラリが〜みたいなややこしそうな話題が飛び交い、触ってみると実際ややこしく感じるけど、最初が混乱すること多いだけであとはわりとぬるい。
ペットボトルみたく入り口だけキツイ。という個人の感想です。
2022/02/16(水) 12:56:27.25ID:re4+z6VY
reactは選択の幅が広いからそれを楽と捉えるか苦と捉えるかの違いだろな
使ってみて合わなければ他の選択肢が沢山あるってのはやっぱ魅力よ
2022/02/16(水) 13:03:27.73ID:OAb5AWjq
reactは従来のコーディング習慣と違いすぎるのが嫌い
JSXリテラルはキモいけどまあシンタックスシュガーと考えればギリギリ許容範囲
しかしフックはIF分やループ中で使っちゃダメってのが非常識すぎて耐えられない
2022/02/16(水) 16:53:40.65ID:9208qGMd
>>658
使えますよ
2022/02/16(水) 20:05:01.77ID:CZttmVO4
>>658
気持ちはわかる
確かにハマりどころは多い
2022/02/17(木) 12:01:42.35ID:w+/1Lj7H
よわよわエンジニアの俺は無事vueを選びました
2022/02/17(木) 12:21:29.09ID:OzlxMNFt
Svelteこそ易しいと思うんだけど、そうでもないんです? 情報が少ないとか?
2022/02/17(木) 12:41:38.57ID:3qJ3MVN8
なんだかんだでMVVMの方が好きだな
UIの振る舞いを記述するならオブジェクト指向の方がメンタルモデルとも一致するし実装上の変な罠も少ないから簡単でメンテナンス性も高い
レンダリングは確かに関数の方が簡単だけどね
2022/02/17(木) 12:56:35.11ID:OzlxMNFt
俺は関数畑なのでReactがしっくり来たけど、そのへんは人に寄るよね
2022/02/17(木) 13:36:09.37ID:D3Kp3a02
>>663
どのmvvmの事?

angular?
knockout?
2022/02/17(木) 16:12:10.27ID:I7WC7Zfj
アトミックデザインってSPAに合わなくない?
カタログは綺麗になるだろうけどディレクトリがごちゃごちゃになる
普通に機能目的別にコンポーネント分けた方がスッキリする
2022/02/17(木) 19:13:53.80ID:Ru9+sq7u
>>662
情報が少ないってのはかなりネックだね
それだけでもゼロベースから導入するのにそこそこ高い能力が必要になるからな
2022/02/17(木) 19:25:43.29ID:OZi8jI3k
ゼロベースで大変なのはJS系はどれだって同じだ
2022/02/17(木) 19:47:58.98ID:mjDg/nR6
タスクランナーとか周辺ライブラリ選定して、設定とか全部書いてた頃に比べたらだいぶ良くなった
2022/02/17(木) 20:08:23.60ID:NEaK+e9H
多様性とか要らねえんだわ
tscを集中的に強化して他のエコシステムをはやく駆逐してよ
2022/02/17(木) 22:32:33.59ID:+LogEHPO
>>662
趣味なら良いけど仕事では使いにくいね
2022/02/17(木) 22:47:31.25ID:OzlxMNFt
>>667
>>671
なるほどね〜。まだまだこれからって感じか
2022/02/18(金) 00:29:30.37ID:PaBs7/1m
Vueでspaログイン認証作ってるんだけどjwtの知見って必須なの?
2022/02/18(金) 00:39:19.42ID:e8a3Yeks
フロントでログイン認証とかそんな恐ろしいことできねえわ
2022/02/18(金) 00:39:35.85ID:uafM90mr
jwtなんかべつにいらんよ
ログインなんか普通になんもせずにPOSTしてるのがほとんどだよ
2022/02/18(金) 01:53:25.40ID:TADg4zOp
なんちゅうアドバイス...
2022/02/18(金) 06:54:28.62ID:IqCRW1xd
JWT使うなら有効期限短くしてちゃんと使い捨ててくれよ!

データ抜かれても良いならまぁわりと雑でも良いと思うけど、パスワードとか個人情報みたいなデリケートなもの出てきたらさじ投げてAuthサービスとか信用できるライブラリ使うなぁ。生兵法危ないし。
2022/02/18(金) 16:30:43.10ID:iM7UJulb
reactの野良OSS、品質どうにかならんもんかねぇ
公式がもう少ししっかり整備してくれんとダメだな
2022/02/18(金) 16:38:45.20ID:iM7UJulb
つうかね
野良の分際でreact-*だとかreact-native-*って名前はダメでしょ
企業か個人の制作ですってわかるようなワード入れようよ
ウェッブの連中は何もかもが無責任で適当すぎて頭にくるぜ
680デフォルトの名無しさん
垢版 |
2022/02/18(金) 18:09:30.18ID:DCygpPrM
名前なんかつけたもんがちだからな
名前で管理すること自体が間違い
2022/02/18(金) 18:13:35.79ID:IqCRW1xd
OSSなんだから信用出来るものを選定したりちゃんと機能するように環境を整えるのも技術者の腕の見せどころ。
それにRustだろうがGoだろうがPythonだろうがJavaだろうがライブラリやフレームワークの命名規則なんてけっこうガバガバだゾ
2022/02/18(金) 18:38:24.98ID:QjRPAftj
それが当たり前と考えてる時点でもうダメなんだろうな
エコシステムが洗練されなくなる
多くの開発者が興味とは全く異なる部分で苦しむことになる
2022/02/18(金) 19:02:51.86ID:VJge2qpl
自分で作れば?
2022/02/18(金) 19:15:02.47ID:TAXpzSh0
Forkすれば?
2022/02/18(金) 19:51:16.27ID:tiifqQ9V
>>651
React は海外に多い。JSX も便利

一方、Vue.js は、下のスレに書いたように、
YouTube で有名な、雑食系エンジニア・KENTA のRuby on Rails サロンで、
初心者の転職用に、React よりも、Vue.js を勧めている

日本では、Vue.js の方が、転職に有利

スレ立てるまでもない質問はここで 159匹目
https://mevius.5ch.net/test/read.cgi/tech/1644673480/73
2022/02/18(金) 20:29:44.01ID:q1ySa1je
OSSを利用していないものだけが石を投げよ
2022/02/18(金) 21:22:26.26ID:xes3bnmd
>>685
ケンタそれは悪手だぞ
いまからReactに変えろ
688デフォルトの名無しさん
垢版 |
2022/02/18(金) 21:51:56.43ID:DCygpPrM
>>682
名前が早い者勝ちになる問題は解決策がないんよな
689デフォルトの名無しさん
垢版 |
2022/02/18(金) 22:28:25.42ID:Um4cr3Ro
そこでangularですよ
何も考えなくて良かろう
2022/02/18(金) 22:43:01.99ID:lIo2zGhM
>>673
これ言葉足りずだった。
railsとvueでspa作成しててそのログイン認証と状態保持にjwtをcookieに保管する方法してるんだけど、この形ってspa開発ではスタンダード?
2022/02/18(金) 23:08:17.30ID:e8a3Yeks
なんでjwtを採用してるのかをちゃんと説明できるならいいんじゃない
2022/02/18(金) 23:20:44.82ID:TADg4zOp
べつにjwtでなくても良いし
2022/02/19(土) 00:05:01.72ID:RzFkYtPT
>>689
angularってもうGoogleの社員しか使ってるの見たことねえ
2022/02/19(土) 00:08:54.14ID:UkMRjGML
Googleの社員なんて見たことない
695デフォルトの名無しさん
垢版 |
2022/02/19(土) 00:46:49.77ID:oEwkOcqo
>>689
Angularいいよな
2022/02/19(土) 00:49:53.85ID:RzFkYtPT
angularの良い点を教えてくれよ
なんかもう終わったものとして扱われてるけど
2022/02/19(土) 00:53:52.91ID:yc9OR0yy
オリジナルの開発者が逃げた時に
もう終わってたでしょ
698デフォルトの名無しさん
垢版 |
2022/02/19(土) 01:19:21.23ID:oEwkOcqo
>>696
良く言えば破壊的変更が少なく安定してる
学習曲線が、、と言われるがちゃんと調べれば最適解がありほぼ悩まない安心感
ただもちろん世間じゃreact優勢だし無理に薦めない
2022/02/19(土) 10:51:06.25ID:57Y9jhR0
Better angularを目指したのがvue
だったはずなんだけどだけどなんでこうなった
■ このスレッドは過去ログ倉庫に格納されています