タグ

JavaScriptとjavascriptに関するklim0824のブックマーク (344)

  • JavaScriptの小技集 - Qiita

    はじめに 初投稿です。 知ってたら便利になる小技が無かったのでまとめました。 「小技が知りたい...だけど検索しても出てこない...!」 そういう時に役立ちます。 比較的古いバージョンのJSでは一部の小技が使えないかもしれません。 随時追加予定です。他に小技をご存じの方はコメント欄にGO。 おことわり この記事は、あくまで"こんなやり方もあるよ"と紹介しているだけなので、何でもかんでもこれらの小技を使うと、かえってコードの可読性を下げる可能性があります。コードサイズと可読性を天秤にかけてどちらが良いかを都度確認しましょう。 記事内の間違った部分の指摘等はこの記事のコメントや編集リクエストでして下さい。 当方コードゴルファーなので、バイト数短縮小技も入れていることをご了承ください(一応該当する節には*をつけています)。 配列 配列の重複した値を削除1 const meta = ["foo",

    JavaScriptの小技集 - Qiita
  • CJSとESMの挙動早見表 - 技術探し

    ESM では使えないメソッド・変数 以下のメソッド・変数は、CJS でのみ存在し、ESM では存在しないため、エラーになります。 __dirname __filename require exports module arguments 予約語への操作 予約語が変数として操作可能かどうかです。 e.g. var let = 1; CodeCJSESM

    CJSとESMの挙動早見表 - 技術探し
  • setIntervalの第2引数に気を付けろというだけの話

    この記事はtraP Advent Calendar 2023 14日目の記事です。 はじめに こんにちは。19Bの@kegraという者です。いつもゲーム開発とかWeb開発あたりをやってます。 今日はJavaScript(TypeScript)で最近やらかした割と初歩的なデカいミスを紹介したいと思います。 setInterval()による定期ポーリング 僕は今あるシステムを作っており、そのシステムではクライアントサイドが定期的にサーバーのAPIを叩いて情報を取ってくる感じになっています。いわゆるポーリングです。 クライアントサイドはWebフロントエンドで作っており、僕はこの実装でsetInterval()を使っていました。 setInterval(() => { updateData(); }, 5000); // 5秒おきにポーリング そこで当にしょうもないのですが、第2引数を書き忘れて

    setIntervalの第2引数に気を付けろというだけの話
  • AbortSignal.any(), AbortSignal.timeout(), そして addEventListener() の Signal | blog.jxck.io

    Intro 最近 AbortSignal.any() が提案され、急速に実装が進んでいる。 すでに定義されている AbortSignal.timeout() や addEventListener() への Signal なども含め、非同期処理の中断を実装する際の API はかなり整備されてきた。 これら API のモチベーションと設計を中心にまとめる。 Abort 後のリソース解放 AbortSignal によって、非同期処理のキャンセルが可能になった。例として、Server 上での Fetch のタイムアウトの例を考えよう。 app.get("/entries", async (req, res) => { const perRequestController = new AbortController() const perRequestSignal = perRequestContr

    AbortSignal.any(), AbortSignal.timeout(), そして addEventListener() の Signal | blog.jxck.io
  • ついに JavaScript に groupBy が実装されたぞ!!! - Qiita

    JavaScript標準でgroupBy関数が実装されています。2023年11月現在Safari以外の主要なブラウザで実装済みで、SafariもTechnology Previewのようです。 (現在MDNの日語の記事は古い情報のままになっており、現行と異なるので注意! →更新していただきました。ありがとうございます!) Proposal の Stage はすでに 4 / Finished なので規格として確定済みです。 基的な使い方 よくあるgroupByです。配列(Iterable)とキーを抽出する関数の二つを指定すると、キーで配列をグループ化します。 const ret = Object.groupBy([ { name: '山田太郎', address: '東京' }, { name: '山田次郎', address: '愛知' }, { name: '山田三郎', addre

    ついに JavaScript に groupBy が実装されたぞ!!! - Qiita
  • 【JavaScript】ウィンドウ・タブのアクティブを判断して関数を実行する方法

    今回は、JavaScriptでブラウザのウィンドウやタブがアクティブになった際と、アクティブでなくなった際に、それぞれ指定した関数を実行する方法となります。 ウィンドウ・タブのアクティブ・非アクティブを判断して関数を実行する方法以下、ソースコードの例となります。 // ウィンドウがアクティブになった際に実行する関数 function play() { // 実行させる処理を記述 } // ウィンドウがアクティブでなくなった際に実行する関数 function pause() { // 実行させる処理を記述 } // ウィンドウをフォーカスしたら指定した関数を実行 window.addEventListener('focus', play, false); // ウィンドウからフォーカスが外れたら指定した関数を実行 window.addEventListener('blur', pause,

    【JavaScript】ウィンドウ・タブのアクティブを判断して関数を実行する方法
  • UnJS にどんなツールがあるのか、上位30件すべて紹介してみた(前編)

    タイトル通り、JavaScriptツール群「UnJS」にどんなライブラリが存在するのかをひたすら見てみよう! という記事です。 当は全て紹介しようと思ったのですが、全75個あり、1つの記事に入れるとあまりにも多すぎるので、この記事では2023年11月4日時点のStar数の順に沿って上位30個を紹介していきます。それ以降のリポジトリは別の記事で紹介していますので、気になった方はこの記事の後に読んでみてください。 UnJS とは UnJSは、Nuxt 開発チームが中心となって開発・メンテナンスされている、あらゆるJavaScriptフレームワーク上で統一的に動作するユーティリティーツール・ライブラリ群です。 UnJSというプロジェクトが何であるかについては、2022年11月に公開された講演映像「UnJS: Nuxt 3 behind the scenes by Pooya Parsa」を観て

    UnJS にどんなツールがあるのか、上位30件すべて紹介してみた(前編)
  • 「書いたJavaScriptがそのままブラウザで動く未来へ」スピーカーノート

    2023年11月19日開催された JSConf JP 2023 で発表した「書いたJavaScriptがそのままブラウザで動く未来へ」のスピーカーノートです(スライドに対した情報がないので、スピーカーノートをそのまま公開します)。

    「書いたJavaScriptがそのままブラウザで動く未来へ」スピーカーノート
  • Build and Publish 2023

    Previous slideNext slideToggle fullscreenOpen presenter view Build and Publish 2023 @mizchi | Plaid, Inc. jsconf.jp 2023 今日もツールチェインに消耗してますか? https://2022.stateofjs.com/en-US/libraries 今日のテーマ 今日話すこと 現代のビルドツールチェインの進化と目的 エコシステムに振り回されないようになろう! 今日話さないこと 個別のツール/ライブラリの使い方 フロントエンドの話? NO. 最近のサーバーサイドJSとバンドラは一体化している サイズ制限のある CDN Edge Worker も最適化が必要 About Me JSのビルドとは何か Transpile AltJS(TS,JSX)や CSS Modules の変換

  • JavaScript | ブラウザのズーム倍率をパーセント値で取得する方法 | 1 NOTES

    JavaScriptでユーザーがブラウザの機能でズーム処理をした際にそのズーム値(ズームレベル)をパーセントの倍率で取得する方法を紹介しています。 一定の値以下または一定の値以上はズームさせたくない場合や、ズーム処理を取得したズーム値に合わせて別途実装する場合などに使えます。 スマートフォンのズーム操作にも別の処理で拒否していない限り対応しています。 ブラウザのズーム倍率で取得するブラウザのズーム倍率で取得する動作サンプルとそのJavaScriptコードになります。 このページを「Ctrl + マウスホイール」などで表示サイズを変更すれば、値が更新されます。 スマートフォンの場合も未確認ですが動いていると、思っています。 See the Pen JavaScript Canvas 2d animation by yochans (@yochans) on CodePen. サンプルでは取得

    JavaScript | ブラウザのズーム倍率をパーセント値で取得する方法 | 1 NOTES
  • JavaScriptビルドツールの整理 各ツールの機能と依存関係

    フロントエンドのビルドツールが色々ありすぎて、何がどうなっているのかがわかりづらいため、 各ツールができること、特徴 ツール間がどのように依存しあっているか を一気に調べて整理した。(情報は2023/10時点) 概要 ツールの依存関係整理 上層: dev server付きのバンドラ/ビルドツール。アプリ開発者が直接configなどを書いて取り扱うのはここが多いと思われる。(Next.jsに関しては、ビルド機能に着目した場合) 下層: やや基盤的なdev serverなしのツール群。 矢印は、明示的な依存関係を表す。実際には、明示的な依存関係がなくても、下層のツール群は上層のバンドラ(やRollup)に対してプラグインを提供していることが多い。 各ツールのできること整理 ツールごとに、大まかな機能区分で、できることとできないことをまとめた。 各機能区分の定義は次セクションを参照。 ツールごと

    JavaScriptビルドツールの整理 各ツールの機能と依存関係
  • ゲームなどでよく見る「長押しのボタン」のUIをWEBで表現してみた - Qiita

    はじめに スマホゲームSwitchなどのゲームUIでよく見る、「長押しボタン」をWEB画面で実装します。 使う技術としては、HTMLCSSJavaScriptだけで、JavaScriptのライブラリや画像やSVGは使いません。 長押しボタンと言ってもイメージが付かないと思いますので、完成系のGifを用意しました。(なぜか、WEBではあまり見かけないUIですよね...) 実装 1. メータ部分の作成 まずは、メータ部分を作成するのですが、divタグを使って円を作成します。 background-imageにconic-gradientを指定して、円グラフのような見た目ができるスタイルを使っています。

    ゲームなどでよく見る「長押しのボタン」のUIをWEBで表現してみた - Qiita
  • ESLint を使い倒す(おすすめルール紹介)

    前書き ESLintJavaScript, TypeScript のための静的検証ツールです。 ESLint を活用することで、コーディング規約やベストプラクティスを機械的に強制することによりコードレビューの手間を省き、番環境でのエラーやパフォーマンスの悪化を抑制することができます。 TypeScript を使っているプロジェクトでは、パーサーを適切に設定すれば型情報を用いたより精密な静的検証を行うこともできます。 eslint を使う際、 eslint:recommended, plugin:@typescript-eslint/eslint-recommended などの各 eslint plugin の推奨 config のみを使って済ませたり、 eslint-config-airbnb などの config のみに頼ることも多い印象ですが、 recommended conf

    ESLint を使い倒す(おすすめルール紹介)
  • Fetch APIは「PATCH」だけ大文字と小文字の挙動が異なる

    const url = "https://fetch-api-normalization.deno.dev"; await fetch(url, { method: "PATCH" }); await fetch(url, { method: "patch" }); 実行すると、次のようなエラーを得るはずです。 PATCH を小文字で書いた際のエラーの一例 さて、どのような条件でこのエラーが発生するのでしょうか?これが意図されたものなのだとしたら、 GET や POST は大文字・小文字を無視してよくて PATCH は無視できない理由がなにかあるのでしょうか?以下でその理由を探ってみましょう。 いつエラーが発生するか このエラーは、 Fetch API を利用して外部の HTTP サーバーに対してリクエストを行う時に、 PATCH と書くべきところを patch と書いていると発生します。

    Fetch APIは「PATCH」だけ大文字と小文字の挙動が異なる
  • BudouX: 読みやすい改行のための軽量な分かち書き器

    .app 1 .dev 1 #11WeeksOfAndroid 13 #11WeeksOfAndroid Android TV 1 #Android11 3 #DevFest16 1 #DevFest17 1 #DevFest18 1 #DevFest19 1 #DevFest20 1 #DevFest21 1 #DevFest22 1 #DevFest23 1 #hack4jp 3 11 weeks of Android 2 A MESSAGE FROM OUR CEO 1 A/B Testing 1 A4A 4 Accelerator 6 Accessibility 1 accuracy 1 Actions on Google 16 Activation Atlas 1 address validation API 1 Addy Osmani 1 ADK 2 AdMob 32 Ads

    BudouX: 読みやすい改行のための軽量な分かち書き器
  • JSの非同期処理を理解するために必要だった知識と学習ロードマップ

    はじめに JavaScript の非同期処理を学習してみて「ある程度自信を持って理解できたと言える」状態に到達したので、その感想とまとめの学習ロードマップとその中でどのような知識が必要になるかを紹介したいと思います。 あるいは、自分が実際に学習してきた道筋に基づいているのでショートカットとして参考にしてもらったり、使えるリソースなどの情報が共有できると思います。もしくは「JavaScript 初心者が非同期処理を理解できるようになるまでの道筋」というストーリーで1つのサンプルとして見ていただけるといいかもしれません。 ChangeLog 大きな変更のみをトラッキングしています。 2022-11-16 の内容を反映させた追記・修正を追加 2022-05-21 構成を修正 「V8 エンジンから考える」の項目を追加 2022-04-30 「イベントループの共通性質」の項目を追加 「ロードマップ

    JSの非同期処理を理解するために必要だった知識と学習ロードマップ
  • JSONとBigInt

    ちょっと前にblueskyで見かけた話題。もとは「GraphQLのスキーマではintが32ビットしかなくて、64ビット整数とかないのがイケてない」といった話だったかなと思う。直感的にはこれは「Javascriptではすべてが倍精度浮動小数点数だから64bit intがないから」ということになるが、よくよく調べてみるといろいろややこしい歴史的事情があるようだ。 たしかにJSにはもともとひとつのNumber型しかなく、いわゆるdouble型(倍精度浮動小数点)だけで数値を表現してきた。IEEE754の倍精度浮動小数点数は仮数部が52ビットあるので、実際には32ビット整数ていどであれば全て誤差なく表現できる。なので32ビット整数または倍精度浮動小数点数がどちらも使えるというふうに理解されてきた。 そうはいっても不便なので、現代のJSにはBigIntがある。ES2020で導入されたらしい。ただし普

    JSONとBigInt
  • 【翻訳】リッチなWebアプリケーションのための7つの原則 - from scratch

    はじめに この話はGuillermo Rauch氏が書いたhttp://rauchg.com/2014/7-principles-of-rich-web-applications/ という記事の翻訳です。許可を得て翻訳しています。 ここ最近Web業界を賑わしているSingle Page Applicationの必要性、HTTP2/SPDYといった技術、リアクティブプログラミングやIsomorphicデザインという考え方について包括的にまとめたすごく良い記事になっております。 最初に断っておきますが、ものすごく長いです。各セクションがわかれているので時間がない方はセクションごとに書かれたtl;DRとまとめを読むだけでも参考になるかと思います。 ちなみに明日のNode学園祭には、記事を記述したGuillermo Rauch氏が見えるので、そこで詳しく聞いてみるのもいいのではないでしょうか。

    【翻訳】リッチなWebアプリケーションのための7つの原則 - from scratch
  • 悪名高きスワイプ広告を解析する - Qiita

    この記事の概要 ユーザーから嫌われている広告の1つに「スワイプ広告」というものがある。 誤タップをしやすいことが理由だが、あまりにもこの広告だけ誤タップするため調べたところ 実は誤タップしたように見せかけて意図的に広告先に遷移させる広告であるということがわかった。 スワイプ広告とは、左右にスワイプすると画像がついてくるタイプの広告である。 スワイプ広告とは スワイプ広告とは、主にアフィリエイトサイトで見られる広告形式の一つである。 ユーザーは指で画面上の広告を左右にスワイプすることで、広告画像を切り替えることができる。 スワイプによるインタラクティブ性を活かし、複数のメッセージやメディアを使い、魅力的な広告体験を提供することが特徴である。 なぜ悪名高いのか しかし、スワイプ広告はユーザーから嫌われている。その理由は、誤タップを誘発しやすいからである。 誤って広告をタップして画面が遷移してし

    悪名高きスワイプ広告を解析する - Qiita
  • input[type="number"] のマウスホイール事故を防ぎたい

    Leaner Technologies エンジニアのぐりこ( @glico800 ) です。 今回は何かと話題に上がりがちな input[type="number"] について、個人的に新しい発見があったので簡単にまとめてみました! 背景 ユーザーから入力した値と保存されている値が違うとのお問い合わせがあり、「そんなはずは…。」と思って調べてみたところ、 input[type="number"] の入力後にマウスホイール操作でページ下部にある保存ボタンに移動する際に入力値が意図せず変更されてしまっていたことが発覚。 「これは気づけない!」ということでなんとかしたい。 やりたいこと input[type="number"] でマウスホイール操作による入力値の変更をできないようにする。 前提 今回はPCChrome バージョン: 114.0.5735.198 で表示したケースを想定 実装方針

    input[type="number"] のマウスホイール事故を防ぎたい