LoginSignup
7
5

More than 5 years have passed since last update.

react互換ライブラリnervの開発状況

Last updated at Posted at 2018-01-14

A blazing fast React alternative, compatible with IE8 and React 16.

この謳い文句をどう受け取ればよいのかわからなかったが、この辺をフォローするgithub issueがあった。

「Infernoのreact互換versionが欲しくて作ったのね」と納得したのでメモ

react互換ライブラリ

webpackのconfig.resolve.aliasにセットするだけで置き換えできるように作られてる

{
  // ...
  resolve: {
    alias: {
      'react': 'nervjs',
      'react-dom': 'nervjs',
      // Not necessary unless you consume a module using `createClass`
      'create-react-class': "nerv-create-class"
    }
  }
  // ...
}

nerv開発の動機

  • Reactのライセンスの問題
  • IE8サポート
  • 既存ライブラリ(preact, inferno)では要件クリアできず

ライセンスの問題

IE8サポート

  • いまのとこ詳細についてコメントない言及されてた
    • windows XPとIE8が動くデバイスが結構ある中国ではサポートが必要と判断、と
    • 先進国ならサポート不要、と
  • 開発元であるJD.com(中国でのamazonクローンという紹介が多い)がECビジネスやってる関係で必要?

既存ライブラリでは要件満たされず

preact

  • preactチームの開発方針が合わず
  • react完全互換よりも、ファイルサイズ軽量化に力点
  • 重要なPull Requestでも「コード量多い」という理由でrejectされる文化

inferno

  • react互換ではないのでNG
  • reactとは独自のecosystemを作ることを選んでる
  • react-likeで軽量・高速なライブラリ
  • 実装はかなり取り入れてるとのこと
    • diffアルゴリズム、event delegationなど
    • infernoがなければ、現時点でここまでnervは実装できなかった、と回答

(参考) Inferno with Dominic Gannaway | Software Engineering Daily

  • Dominicがゲスト回のpodcast
  • Fintech系スタートアップに在籍してたときにmobile向けのSPA開発をしてて、reactだと速度とファイルサイズがアプリの要件をクリアできなかったので、Inferno作ったと話をしてる
  • Dominicは2016年末にfecebook入りして、Infernoのメイン開発者ではなくなっている

英語堪能ではないが故に情報出すスピードが遅い

  • 色眼鏡で見られる要因にもなってるがこの辺は共感できた
  • READMEで色々間違いしてて申し訳無いとレスしてる
  • 「何故IE8サポート」という部分もそのうちupdateされると予想

TODOの大事そうなやつ

TODOは色々あるがこの2つがクリアされると、検討する人が増えるかと

  • react公式のunit testに全部パスすること
  • ベンチマークの充実

--
追記。中の人のリプライからいくつか拾った

diffアルゴリズムは、infernoではくiviのものに影響

7
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
5