ブログ
2023.09.22

新興のJavaScriptフレームワークNueとは?公式サイトざっくりまとめ

この記事では、新興のJavaScriptフレームワークであるNueについて公式サイトの内容をざっくりまとめています。注)完全に正確な情報が知りたい方は記事内のリンクより公式サイトをご確認ください。

Nueとは

Nueは、MITライセンスでGitHubでホストされているオープンソースプロジェクトで、ヘルシンキ出身のフロントエンド開発者であるTero Piirainen氏によって開発されました。彼はオープンソースプロジェクト、テクノロジー製品、スタートアップの構築に25年以上の経験を持ち、Riot.js、Flowplayer、jQuery Toolsの製作者として知られています。

公式サイトのファーストビューでは「Nueは強力なReact、Vue、Next.js、Vite、Astroの代替ツールです。あなたのウェブ開発のやり方を変えるかもしれません。」とチャレンジングな記載がされています。

現在、Nueは開発中であり、2024年3月までにすべてのツールを完成させることを目標としています。

Nueの特徴

公式サイトでは以下の3つが紹介されています。

1.開発者のエクスペリエンスの向上

コンテンツ、スタイル、レイアウト、ロジックがきちんと分離されたNueは、「ユニバーサルホットリロード」と呼ばれる強力な機能を提供します。保存ボタンをクリックすると、ドキュメントが新しい状態に変わります。コンテンツの編集、新しいアセットの追加、レイアウトの変更、サーバー側コンポーネントの変更、リアクティブコンポーネントの編集、デザインの変更など、すべての操作を行うと、その変更は即座にブラウザーに反映されます。この機能を使用することで、UX開発者、JavaScript開発者、コンテンツ作成者はより迅速に行動でき、大幅に優れた開発者エクスペリエンスを享受できます。

2.プロジェクトをより速く完了する

Nueは関心の分離を採用し、Webチームのすべてのメンバーにとってコードを読みやすく、理解しやすく、拡張しやすくします。これにより、チームメンバーは他のメンバーをブロックしたり、コードを壊したりすることなく単独で作業できるため、作業が大幅に速くなります。

3.ページの読み込み時間の短縮

Nueはインターネット上で技術的に達成できる最速のページレンダリングパフォーマンスを実現できます。その秘密は、TCPスロースタートアルゴリズムの14kbルールを尊重することです。初期ビューポートをレンダリングするためのすべてのコンテンツとスタイルを含むHTMLリクエストが14kb未満の場合、ページの読み込みが大幅に高速になります。

ィレクトリ構造

クローンすると以下のようなディレクトリ構造になっています。

記法について

Nue は HTML ベースのテンプレート構文を使用します。

<div @name="media-object" class="{ type }">
  <img src="{ img }">
  <aside>
    <h3>{ title }</h3>
    <p :if="desc">{ desc }</p>
    <slot/>
  </aside>
</div>

コンポーネントについて

Server components、Reactive components、Isomorphic componentsが提供され、一般的なフレームワークと同じように、他のコンポーネント内でネストしてツリー状の構造を形成することができ、コンポーネントをループしたり、条件付きでレンダリングしたりすることで制御フローを構築できます。

テンプレートの構文について

以下のような記述が可能です。

も単純なテキスト表現

<span>Text: { text }</span>

HTML 式

<!-- Value is escaped: Hello, <b>World!</b> -->
<p>{ value }</p>
<!-- Value is rendered as HTML: Hello, <b>World!</b> -->
<p>{{ value }}</p>
<!-- Same as the above (Vue compatibility) -->
<p :html="value"/>

性のレンダリング

<p :attr="data">
  <script>
    data = {
      title: 'My title',
      alt: 'My alt',
    }
  </script>
</p>

これは次のようにレンダリングされます。

<p title="My title" alt="My alt"></pa>

イベントハンドラーについて

以下のようにイベントハンドリングを行うことが可能です。

ンプルなインラインハンドラー

<button @click="count++">Increment</button>

ソッドハンドラー

<dialog>
  <button @click="close">Close</button>
  <script>
    close() {
      this.root.close()
      location.hash = ''
    }
  </script>
</dialog>

ベント引数

<div>
  <button @click="first">First</button>
  <button @click="second('Hello')">World</button>
  <button @click="third('Hello', $event, 'World')">Nue</button>
  <script>
    // prints "First"
    first($event) {
      console.info($event.target.textContent)
    }
    // prints "Hello World"
    second(hey, $event) {
      console.info(hey, $event.target.textContent)
    }
    // prints "Hello Nue World"
    third(hey, $event, who) {
      console.info(hey, $event.target.textContent, who)
    }
  </script>
</div>

タイリングについて

スタイルはコンポーネントに書くことはできず、外部スタイルシートで記述します。

おわりに

最近のフロントエンドの構築方法への不満から開発しているフレームワークだけあって、ReactやVueに逆行するような仕様がいくつか見られますね。

より詳しく正確な情報が知りたい方はNueの公式サイトをご確認ください。また、開発メンバーも募集しているようなので、興味がある方は参加してみてはいかがでしょうか!

ブログの執筆者

スズキトシヤ
workGeneral manager / Technical director
フロントエンドクラブの代表です。プログラミングとプランニングがちょっとできます。広告とサッカーが好きです。受賞歴:GOOD DESIGN AWARD / ACC / Young Lions Competitions - finalist / W3 Awards / The Webby Awards 等

その他の記事

  1. 2023.12.01
    初のリアルイベント!FRONTEND MEETUP 2023!
  2. 2023.10.13
    2023年10月以降の主なエンジニア向けイベント
  3. 2023.09.20
    テクニカルディレクターとは?現役テクニカルディレクターが解説
  4. 2023.09.16
    netlify formで送信後に404になる
  5. 2023.03.27
    GitHubにRSA SSHでgit push、git fetch、git pullをしようとするとエラーになる問題の解決方法
  6. 2023.02.25
    Astroでサブフォルダにbuildする方法
  7. 2023.02.19
    Astroでプロジェクトルートを基準にコンポーネントなどのパスを記述する方法
  8. 2023.02.19
    Astroでstylusファイルからglobalスタイルをimportする方法
  9. 2023.02.12
    「web制作におけるパスの書き方」絶対パス・ルート相対パス・相対パスの違いについて
  10. 2023.01.09
    フロントエンドクラブの新しい企みについて
  11. 2023.01.07
    Nuxt3でgenerate時にsitemapを動的に作る方法
  12. 2022.12.30
    なぜフロントエンドエンジニア向けコミュニティ「フロントエンドクラブ」を始めたのか
  13. 2022.12.28
    よく使うGitコマンド
  14. 2022.11.04
    HeadlessCMSを使った3つのサイト構築手法
  15. 2022.11.22
    WEB制作会社でエンジニアとして働くために必要なスキルについて
  16. 2022.10.27
    現役エンジニアから見るリアルなHeadlessCMS
一覧へ戻る