タグ

関連タグで絞り込む (164)

タグの絞り込みを解除

javascriptに関するshunmatsuのブックマーク (232)

  • JavaScriptの代入において時々現れる、括弧で囲まれた変数名は何なのか

    JavaScriptの全貌を知るには、人生は短すぎます。大まかに把握したと思っていても、少し時間が経つと、またわけのわからない構文が現れます。 特に最近増えてきた記法として、代入の左辺に、括弧が使われているというものがあります。今回は、これの正体を探ってみましょう。 括弧のついた代入たち JavaScriptにおいて、代入とは一般に以下のようなものを指します: const myNumber = 100; しかし、モダンなライブラリを使用していると、以下のようなサンプルコードを見かけることがあります: const [job] = client.exec(); また、Node.jsにおいて、以下のような構文を見かけることも増えてきました: const {SampleClass} = require('sample-lib'); どちらも少し不思議です。左辺の変数名が括弧([]または{})で括ら

    JavaScriptの代入において時々現れる、括弧で囲まれた変数名は何なのか
  • JavaScriptエンジンから見るランタイム / 2024-04-25

    Fashionably flexible responsive web design (full day workshop)

    JavaScriptエンジンから見るランタイム / 2024-04-25
  • Promiseとasync-awaitの例外処理を完全に理解しよう - Qiita

    はじめに JavaScriptは非同期処理との闘いです。 人類が非同期処理を倒すために、Promiseやasync-awaitという最終兵器を生み出して、劇的にクリーンで平和な世界が生まれたという話は以前しました => (もしかして: JavaScriptは如何にしてAsync/Awaitを獲得したのか Qiita版) しかあぁし!!! 甘い、甘いのですよ!!!!! 人類を苦しめ続ける非同期処理が、そんな簡単に完全に倒せるわけがないのですよ。 非同期処理の当にヤバイ深淵、それが「例外処理」です。 みなさんはPromiseで開発していて、 「なんか途中までうまく行ってたんだけど気づいたら例外が外側に飛ばなくなった…なんでだ…」 「助けて!Promiseにcatch書いてるのに何故か例外がcatch出来ないの!!!」 という経験はないでしょうか。私は何度もあります。 この記事では、具体的に何

    Promiseとasync-awaitの例外処理を完全に理解しよう - Qiita
  • JavaScript Promiseの本

    この書籍はCreative Commons Attribution-NonCommercialの ライセンス で公開されています。 また、PDFとしてレンダリングしたバージョンは以下からダウンロードすることができます。

    JavaScript Promiseの本
  • Revised Revised 型の国のTypeScript | Revised Revised TypeScript in Definitelyland

    Revised Revised 型の国のTypeScript 書について 書はJavaScriptにコンパイル可能な言語のTypeScriptについて解説したです。TypeScriptの基的な知識(型の使い方)やコンパイラのオプション、型定義ファイルの作り方やエコシステムについて解説します。 対象読者は新しめのJavaScript、いわゆるECMAScript 2015とそれ以降*1について理解しているユーザです。Node.js環境やnpmの使い方、OOP (Object Oriented Programming)の効能や利点をある程度理解していることが望ましいです。 書に登場するすべてのサンプルコードは次のTypeScriptコンパイラでコンパイルできることを確認しています。 Version 2.4.2 書はC87、C90で頒布した『型の国のTypeScript』の改訂(C9

  • フロントエンドのディレクトリ設計思想

    はじめに フロントエンドのディレクトリ構成、世の中に色んな「推し」が有って悩みますよね。 例えば、、、 さらに最近は、App Directoryの登場や、それに合わせたNext.js公式の「推し」構成がドキュメント化されたりと、さらに色々なパターンが出てきています。 記事の趣旨 記事では、具体的な構成そのものではなく、 様々ある構成を横串で見通して整理できる設計思想を紹介します。 新しい推し構成の紹介ではなく、構成を考えたり決めたりするときに役立つ抽象的・汎用的な指針を提供できればと考えています。 基となる考え 分割の方向 一般的に、アーキテクチャにおける分割には2つの方向が有ります。 (出典も良書なのでリンクを貼っておきます: https://www.amazon.co.jp/dp/4873119820) これはディレクトリにおいても同じだと思っていて、筆者は分かりやすさのために

    フロントエンドのディレクトリ設計思想
  • npm の基本的な使い方

    npm とは npm(Node Package Manager)は、Node.js のパッケージ(Package)を管理するツールです。 npm はパッケージをインストールする際に各種ライブラリなどの依存関係を管理・解決してくれ、パッケージの検索や更新、バージョン管理、アンインストールなどもできます。 また、npm を使ってインストールした複数のパッケージの環境を簡単に複製することができます。 npm は Node.js をインストールすると自動的にインストールされるので、使用するには Node.js をインストールする必要があります。 関連ページ: nvm を使って Node.js を Mac にインストール Node.js を Mac にインストール(nodebrew の使い方) Node.js がインストールされていれば、ターミナルで以下を実行して npm のバージョンを確認すること

  • TypeScriptの型入門 - Qiita

    TypeScriptは型がついたJavaScriptです。プログラミングにおいて型があることの恩恵は大きく、近頃AltJSの代表格として人気を集めています。TypeScriptはもともと型のないJavaScriptで書かれるコードに型を付けることを使命としていることもあり、たまに変な型が追加されます。例えばTypeScript2.8で追加されたconditional typesはずいぶん注目を集めました。これによってTypeScriptの型システムの表現力が広がりましたが、一方でTypeScriptを書いている人の中には、よく分からない型が増えてついて行けない、一部の人たちが長くてよく分からない型定義を書いて喜んでいるだけと思っている方もいるのではないでしょうか。実際、健全にJavaScriptを書いていれば、自分でそのような変な型を書くことはあまり多くありません。 そこで、この記事ではT

    TypeScriptの型入門 - Qiita
  • Webの次世代アーキテクチャ - PESPA - Qiita

    PESPAというアーキテクチャについて、みなさんご存じでしょうか? これはWebにおける次世代のアーキテクチャを表しており、MPAやPEMPA、そしてSPAの欠点を解決し、シンプルかつプログレッシブエンハンスメントなアーキテクチャとなっている素晴らしいアーキテクチャのひとつとなっています。 そう、Remixフレームワークが採用しているアーキテクチャです。 このPESPAという概念について、Kent C.Doddsさんが、2022年の10月21日に投稿し話題を呼びました。 日ではあまりまだ浸透していない概念ということもあり、当に素晴らしいアーキテクチャと思想を兼ね備えていることから、今回その記事を翻訳しました。 みなさんがこれから開発していくアプリケーションに、ぜひこのアーキテクチャを採用していただきたいと願っております。 この記事は、あくまで翻訳であり、意訳の部分も含まれているため間違

    Webの次世代アーキテクチャ - PESPA - Qiita
  • TypeScriptのenumを使わないほうがいい理由を、Tree-shakingの観点で紹介します

    LINE株式会社は、2023年10月1日にLINEヤフー株式会社になりました。LINEヤフー株式会社の新しいブログはこちらです。 LINEヤフー Tech Blog こんにちは。LINE Growth Technology UITチームの慶島(@pittanko_pta)です。 この記事では、TypeScriptのenumを使わないほうがいい理由を、Tree-shakingの観点で紹介します。 検証環境 TypeScriptからJavaScriptへのトランスパイルは https://www.typescriptlang.org/play (TypeScript 3.9.2 / targetはESNext) で行いました。 Tree-shaking の挙動については https://rollupjs.org/repl/ にトランスパイルしたJavaScriptコードを貼り付けて検証しました

    TypeScriptのenumを使わないほうがいい理由を、Tree-shakingの観点で紹介します
  • TypeScriptのInterfaceとTypeの比較 - Qiita

    こういうコンパイルエラーにぶち当たった。 Interfaceだとコンパイルエラーになったのが、Typeなら問題なく通る。 declare function numMapToVoid(obj: {[key: string]: number}): void; // interfaceだとコンパイルエラー interface IObj { a: number } const iObj: IObj = {a: 1}; numMapToVoid(iObj); // エラー // typeだと問題なし type TObj = { a: number }; const tObj: TObj = {a: 1}; numMapToVoid(tObj); // OK これは不思議...というのがきっかけで、TypeScriptのInterfaceとTypeの機能上の違いを調べてみた。 比較まとめ TypeSc

    TypeScriptのInterfaceとTypeの比較 - Qiita
  • 【JavaScriptの基礎】レキシカルスコープとクロージャを理解する | WEMO

    JavaScriptを理解する」第3回です。今回は「クロージャ」というものをメインに勉強してきました。 また、クロージャを理解するためには、JavaScriptで採用されているスコープについても詳しく知っておく必要がありそうだったので、そちらも併せて勉強しました。 まずはスコープについて触れてから、クロージャについて学んだことをまとめていこうと思います。 JavaScriptのスコープ まずはJavaScriptで採用されているスコープ方式についてまとめていこうと思います。 スコープとは そもそも、スコープとはなんだ?と調べてみると、 IT用語辞典 さんでは以下のように定義されていました。 スコープとは、プログラム中で変数名などのシンボルが参照可能な有効範囲のこと。 宣言した変数やオブジェクト・関数などをどこまでの範囲で呼び出したりすることができるのか?という領域がプログラミング言語によ

    【JavaScriptの基礎】レキシカルスコープとクロージャを理解する | WEMO
  • そろそろJavaScriptに採用されそうなOptional Chainingを今さら徹底解説 - Qiita

    みなさん、Optional Chaining使ってますか? 私は先日出たTypeScript 3.7 Betaを小さいプロジェクトに導入して使ってみました。これはとても快適ですね。 例によって、Optional ChainingはECMAScriptに対するプロポーザルの一つです。つまり、もうすぐ入りそうなJavaScriptの新機能です。プロポーザルはたくさんの種類がありますが、その中でもOptional Chainingはその高い有用性からこれまで多くの注目を集めてきました。Optional Chainingは2019年6月のTC39ミーティングでStage 3に上昇し、いよいよ正式採用が近く期待も高まってきたところです。TypeScript 3.7にも導入されたため、TypeScriptユーザーの方々は11月上旬に正式リリースが予定されているTypeScript 3.7を今か今かと待

    そろそろJavaScriptに採用されそうなOptional Chainingを今さら徹底解説 - Qiita
  • ブラウザ上のJavaScriptでの非同期処理を、今までどのように実現してきたか 「コールバック地獄」なども乗り越えてきた歴史

    GoPythonKotlinRustTypeScript の5つの言語について「並列処理、並行処理の手法」というテーマに絞り解説する「並列処理をGo/Rust/Kotlin/Python/JSで解説!思想の違いを体感しよう」。JavaScript編では橘氏が登壇。JavaScriptが疑似的な非同期処理をどう実現しているのかと、JavaScriptの非同期処理の歴史について紹介します。 橘氏の自己紹介 橘ゆう氏(以下、橘):よろしくお願いします。風邪でめちゃくちゃ顔が死んでいるので、カメラオフでいきます。橘です。今日は「JSの非同期処理パターン Promise、async/awaitを理解する」というテーマについて話していきたいと思います。 簡単な自己紹介ですが、もともとDeNAにいて事業統合でそのままGOに移り、今は森下さん(森下篤氏)と同じチームで、主にサーバーサイドやMLOp

    ブラウザ上のJavaScriptでの非同期処理を、今までどのように実現してきたか 「コールバック地獄」なども乗り越えてきた歴史
  • とほほのPromise入門 - とほほのWWW入門

    Promise は、JavaScript や Node.js において、非同期処理のコールバック関数をエレガントに記述するための仕組みです。英語の promise は、「制約」、「保障」などの意味を持ちます。Promise は、Chrome 63, Firefox 58, Safari 11.1, Edge 18, Node.js 4.* から利用可能です。IE11 ではサポートされていません。 JavaScript や Node.js では、ブロックする(処理が終わるまで待ち合わせる)関数よりも、非同期関数(処理の完了を待たず、処理が完了した時点でコールバック関数が呼び出される)の方が多様されます。ここで、例えば、膨大な演算(実は単に元の数を2倍するだけ)を行う非同期関数 aFunc1() があるとします。下記は、100の2倍を求める非同期関数の使用例です。

  • ES2015(ES6) 入門 - Qiita

    はじめに 今更ですが、ES2015(ES6)で追加された機能や構文に関する備忘録です。 「JSは書けるけどES2015(ES6)はわからないっす...!」といった人達向けの記事です。 入門記事のためイテレータやジェネレータ等のわかりづらかったり、 説明が長くなりそうな機能や構文は割愛しております。 ES2015(ES6)とは ECMASCriptの6th Editionのこと。ECMAScript 6th editionの6を取ってES6と呼ばれていたが、 2015年に標準化されたため正式名称はES2015になった。 正式名称がES2015ならES6という名称を使うのは間違いなのか どちらの名称でも問題はない。 ES6の名称の方がエンジニアコミュニティに中では浸透しているらしく、ES6と記載されていることが多い。 詳細は以下を参考。 ES6 or ES2015 ? 〜WEB+DB PRES

    ES2015(ES6) 入門 - Qiita
  • async/await 入門(JavaScript) - Qiita

    はじめに 今更ですが、JavaScriptのasync/awaitに関する備忘録になります。 「今まで$.Deferred()やPromiseなどで非同期処理は書いたことがあるが、async/awaitはわからない」 「$.Deferred()やPromiseなどの非同期処理の書き方より、もっと簡潔に書ける書き方があれば知りたい」 「今までの非同期処理の書き方と比べて何が良いのかわからない」 といった人達向けの記事です。 $.Deferred()やPromiseなどで非同期処理を書いたことがある前提のため、非同期処理自体に関する説明は記載しておりません。 記載している利用例のコードはChrome(最新)のコンソール上で動きますので、コンソール上で実行して動作を確認してみると理解が深まりやすいと思います。 記事で用いている用語 Promiseを返す Promiseオブジェクトを返すこと。

    async/await 入門(JavaScript) - Qiita
  • 【ES6】 JavaScript初心者でもわかるPromise講座 - Qiita

    はじめに Promiseって...難しくないですか??? 3ヶ月くらい前の私は、Promiseをほとんど理解できてないのにasync/awaitとか使っちゃってたし、様々な記事を読み漁ってもなかなか理解できず、Promiseの正体を掴むのに時間がかかってしまいました。 そんな3ヶ月くらい前の自分にも伝わるように、できる限り丁寧にPromiseを説明していこうと思います。 前提 記事では、Promise以外のES6の書き方に関しては触れておりません。 アロー関数やテンプレート文字列などを例文で用いているため、わからない方がいましたら下記記事などを参考にしていただけると幸いです。 ES2015(ES6) 入門 Promiseとは JavaScriptは処理を待てない! まずはじめに、下記コードを実行してみると、どのような結果になるでしょうか。 console.log("1番目"); // 1

    【ES6】 JavaScript初心者でもわかるPromise講座 - Qiita
  • Viteで爆速なフロントエンド開発環境を作る

    概要 Viteというビルドツールの紹介とReact + Typescript環境からの移行手順です。 導入したプロジェクトでは開発サーバの起動からページロードまで大体40秒くらいかかっていたものが、サーバは300ms程度で起動し(2回目以降)、ページロードまで大体2~3秒ぐらいに短縮されました。 非常に開発体験が良く、導入手順もそこまで複雑ではないため、技術スタックが合えば導入を検討しても良いかもしれません。 Viteとは? ViteはVue.js作者のEvan You 氏が開発しているノーバンドルのビルドツールです。 Native ESModulesのimportを利用し、ブラウザから直接モジュールを読み込むことで高速な開発サーバを提供します。 プロダクションビルド時はRollupでバンドルし、静的アセットを出力します。 Vue.jsだけでなく、ReactSvelteなどもサポートされ

    Viteで爆速なフロントエンド開発環境を作る
  • Vite入門 (従来のビルドツールとの違いとViteの挙動) - Qiita

    概要 最近のフロントエンド開発といえば、速度速度速度。いやまさにその通り。開発環境を爆速にすることこそ正義くらいな感覚を持っています(笑) 今回は、快適なフロントエンド開発環境を手に入れるためのビルドツールViteの入門ということで、その挙動と従来のビルドツールと何が違うのかについて解説していきたいと思います。 Viteとはなんなのか Viteを一言で表すなら、従来のビルドツールに比べて、高速で動作するビルドツールと言えます。 従来の有名なビルドツールというのは、webpack、Rollup、Parcelなんかが当たります。 これらのビルドツールを使用し、開発サーバを立て開発をする。よくあるパターンだと思うのですが、こんなことを感じた方も多いのではないでしょうか。 開発サーバの起動がおせぇ!!! 更新にいつまでかかってんだオラァ => そこでViteの出番というわけですよ。 Viteは、2

    Vite入門 (従来のビルドツールとの違いとViteの挙動) - Qiita