タグ

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

タグの絞り込みを解除

javascriptに関するmizdraのブックマーク (1,047)

  • SCRIPT 要素の変遷から触れる Web の進化 - Repro Tech Blog

    はじめに こんにちは。Repro で Booster の開発をしている杉浦と申します。 最近は JavaScript の盛り上がりが凄いですね。今ではブラウザ内にとどまらず、サーバサイドでも活用される様になりました。 これには、言語仕様が整理されたり機能が強化されたり、非常に大きな発展があったという点が大きいです。 実は、言語としての JavaScript だけではなく、最近 HTML との境界インタフェースとしての JavaScript の仕様も最近かなり明確化されてきています。 自分も HTML5 の最初のあたりまでは把握していたのですが、Booster の開発に携わる中で久しぶりに確認したところ、随分と仕様が進化し複雑になっていました。 今回はそんな HTML 規格の変化部分の紹介と、過去からの HTMLJavaScript の流れを振り返る簡単なまとめです。 HTML 仕様と

    SCRIPT 要素の変遷から触れる Web の進化 - Repro Tech Blog
  • 乱立したpackage.jsonのエントリーポイントフィールド

    この記事は夏のブログリレー17日目の記事です。 こんにちは、19Bの翠(sappi_red)です。普段はSysAd班で活動しています。Viteのチームメンバーだったりもします。 npmからインストールしたパッケージをモジュールバンドラーで使えないことに遭遇したことのある人は少なくないでしょう。 この記事ではそれが発生する要因の一つである、package.jsonのエントリーポイント用フィールドについて書いていきます。 モジュールバンドラーとトランスパイラは意味が異なるものですが、モジュール形式の変換においては境界線が非常に曖昧になるため、この記事ではまとめてバンドラーと呼ぶことにします。 モジュール形式 話を進める前に、前提となるモジュール形式という概念について説明しておきます。 JavaScriptでは元々、プログラムを複数のモジュールに分割する標準仕様が存在しませんでした。そのため、標

    乱立したpackage.jsonのエントリーポイントフィールド
    mizdra
    mizdra 2023/10/05
    よくまとまってて良い
  • A Socket API that works across JavaScript runtimes — announcing a WinterCG spec and Node.js implementation of connect()

    A Socket API that works across JavaScript runtimes — announcing a WinterCG spec and Node.js implementation of connect()2023-09-28 Earlier this year, we announced a new API for creating outbound TCP sockets — connect(). From day one, we’ve been working with the Web-interoperable Runtimes Community Group (WinterCG) community to chart a course toward making this API a standard, available across all r

    A Socket API that works across JavaScript runtimes — announcing a WinterCG spec and Node.js implementation of connect()
  • Introducing runes

    In 2019, Svelte 3 turned JavaScript into a reactive language. Svelte is a web UI framework that uses a compiler to turn declarative component code like this... <script> let count = 0; function increment() { count += 1; } </script> <button on:click={increment}> clicks: {count} </button><script lang="ts"> let count = 0; function increment() { count += 1; } </script> <button on:click={increment}> cli

    Introducing runes
    mizdra
    mizdra 2023/09/21
    ラベル使うのやめるんだ
  • String.prototype.trim() は何をトリムするのか?

    @okunokentaro さんが似た内容で先にスクラップを投稿されており、記事の執筆時期と内容が重なってしまいました。こちらでは ECMAScript に加え、Java での調査結果なども含まれています。併せてご参考ください! https://zenn.dev/okunokentaro/scraps/256c7d9a56ac69 (記事の公開はご人にも確認を取っております) String.prototype.trim() JavaScript でコードを書いていて、とある文字列の端から空白を削除したくなったらどうしますか? 多くの人は String.prototype.trim() を使うかと思います。 では、ここで削除される "空白" は何を指すか知っているでしょうか? 恥ずかしながら、私は正確には把握しておらず、「半角・全角スペースとか改行、タブあたりをいい感じに消してくれる良

    String.prototype.trim() は何をトリムするのか?
  • How to Find Infinite Loops in Javascript using DevTools

    Infinite LoopExample Project Used https://stackblitz.com/edit/js-vub9fd?file=index.js StepsFind the cause of the infinite loop in the UI (ex: a button click)Open the Performance Tab in the DevToolsClick record Performance Tab is recordingFire the event that is causing the infinite loopNow click stop recordingBut now you will notice that Chrome freezes, and here is the trick Performance Tab freezes

    How to Find Infinite Loops in Javascript using DevTools
  • Bun 1.0 | Bun Blog

    Bun is an all-in-one toolkitWe love JavaScript. It's mature, it moves fast, and its developer community is vibrant and passionate. It's awesome. However, since Node.js debuted 14 years ago, layers and layers of tooling have accumulated on top of each other. And like any system that grows and evolves without centralized planning, JavaScript tooling has become slow and complex. Why Bun existsBun's g

    mizdra
    mizdra 2023/09/08
    Next.js もう動くのか
  • Announcing Biome

    We are happy to announce Biome, toolchain of the web. Biome is the official fork of Rome and it will continue to be Rome’s legacy. Biome is led and maintained by the same people that maintained Rome so far. Follow us: Github organization Official repository Official discord server I want to give you some background and context, which could help you to get why the core team created a new project wi

    Announcing Biome
  • JavaScript の Symbols as WeakMap keys について

    この記事では現在 Stage 2 の Symbols as WeakMap keys 提案について解説する。 プロポーザルの詳細についてはtc39/proposal-symbols-as-weakmap-keysを参照してほしい。 また、ここで紹介した仕様に関しては今後更新されていく可能性がある。 概要 Symbols as WeakMap keys は、WeakMap のキーとしてシンボルを使えるようにするための提案である。 現在の WeakMap では、キーとしてオブジェクトのみを使用できる。 const weak = new WeakMap(); const key = {}; const value = ""; weak.set(key, value); たとえば、キーとして数字や文字列などのプリミティブな値を使用すると実行時エラーが発生する。 const weak = new W

    JavaScript の Symbols as WeakMap keys について
    mizdra
    mizdra 2023/08/19
    WeakMap の key に Symbol を使えるようにする仕様、あとから出てきたんだ。そしてエッジケース色々あっておもしろい。
  • Deno + dntでCJS・ESMに対応したnpmパッケージを作ろう

    3 行まとめ CJS、ESM に対応した npm パッケージが Deno + dntで簡単に作成できる Deno で開発できるので、Lint、Format、Test、TypeCheck が設定なしですぐに使える dntで作成した CJS、ESM のファイルに対して、それぞれ Node.js でもテストを実行してくれる Deno のモジュールを npm パッケージに変換するdnt Deno のdntモジュールを使うと、Deno で実装したモジュールを CommonJS(CJS) と ESM、TypeScript に対応した npm パッケージとして公開できます。 実際、今回 Deno とdntを試してみましたが、Deno には LinterFormatter、Test などが組み込まれているので、すぐに npm パッケージの作成に取り掛かれるのが良かったです。また、CICD の自動化(Gi

    Deno + dntでCJS・ESMに対応したnpmパッケージを作ろう
    mizdra
    mizdra 2023/08/10
    良さそう
  • Node.js's Config Hell Problem

    Then what? If you’re just starting with TypeScript, you don’t know what configuration you want, so you do what any self-respecting developer would do: steal a config from Stack Overflow: { "compilerOptions": { "target": "es5", "lib": ["dom", "dom.iterable", "esnext"], "allowJs": true, "skipLibCheck": true, "esModuleInterop": true, "allowSyntheticDefaultImports": true, "strict": true, "forceConsist

    Node.js's Config Hell Problem
  • Prettier 3.0 をリリースしました

    2023 年 7 月 5 日に Prettier 3.0 をリリースしました。Prettier 2.0 がリリースされたのが 2020 年 3 月 21 日だったので、実に 3 年以上ぶりのメジャーアップデートとなります。 当はもっと早くこのブログを書きたかったんですが、やる気が出ずだいぶ遅れてしまいました。 この記事では Prettier 3.0 の主要な変更点を紹介します。 Prettier 3.0 の主要な変更点 Prettier 3.0 はメジャーアップデートということもあって大きな変更がいくつか含まれています。ここでは、そのうちユーザーに直接的な影響がありそうなものを紹介します。 ここで紹介する以外にも大きな変更はありますが、プラグイン開発者向けのものとか、Prettier のソースコード自体が全部 ECMAScript Modules で書かれるようになったとか、ユーザーから

    Prettier 3.0 をリリースしました
    mizdra
    mizdra 2023/07/27
    メジャーバージョンアップめでたい! お疲れ様でした。
  • JavaScript Macros in Bun | Bun Blog

    Two weeks ago, we launched our new JavaScript bundler in Bun v0.6.0. Today we're releasing a new feature that highlights the tight integration between Bun's bundler and runtime: Bun Macros. Macros are a mechanism for running JavaScript functions at bundle-time. The value returned from these functions are directly inlined into your bundle. As a toy example, consider this simple function that return

  • Rome の contributor からみた Oxc の印象

    最近、Boshen さんが開発している Oxc に注目しています。 社内で Oxc の近況を slack に投稿していたところ、「Oxc は Rome で話題になっていますか?」や「Oxc はうまくいくと思いますか?」と聞かれたことで Rome の現状を整理するいいきっかけになったので、記事に残しておこうかなと思います。 Rome と Oxc の違い Rome と Oxc はどちらも linterformatter、transpiler などを提供するつもりではあるので、ユーザーからみた違いは分かりにくいかなとは思います。現時点での大きな違いは、次の2点だと思っています。 プロジェクトのスコープ Rome: JS/TS に限らず Web 開発に関連する言語全般にツールを提供することを試みている Oxc: JS/TS に関するツールにフォーカスしている 提供するツールの拡張性に対する考え方

    Rome の contributor からみた Oxc の印象
    mizdra
    mizdra 2023/07/15
    pluggable にしてコミュニティの力を借りてより前に進むという話だ。GraphQL-like なクエリ言語で lint rule 書くのも面白いなー。tree-sitter にもクエリでソースコード解析する機能あったと思うけど、あれとはどう違うんだろう。
  • CommonJSからES Modulesへの移行する方法。トップダウンかボトムアップか

    Secretlint v7でCommonJS からES Modulesへの移行を行いました。 Secretlint v7.0.0をリリースしました。Pure ESMへの書き直し この記事では、CommonJS(CJS)からES Modules(ESM)への移行を行った経緯と、移行する方法について紹介します。 CJSからESMへの移行は、率直に言えば単調な作業で、メリットが見えにくい作業です。 しかし、将来的にCJSよりもESMが主流になることは間違いないので、移行することは必要です。 移行の作業は、移行方法が決まれば大部分は機械的な書き換えが可能です。 では、実際にどうやって移行したのかを紹介します。 ESMへの移行の影響は依存元へと連鎖する Secretlintのリポジトリはmonorepoになっていて、だいたい40コぐらいのパッケージが含まれています。 そしてパッケージ間で依存関係があ

    CommonJSからES Modulesへの移行する方法。トップダウンかボトムアップか
    mizdra
    mizdra 2023/07/06
    依存を丁寧に紐解いてやっていてすごい。境界線となるパッケージにはコストを掛けて Dual packages 対応することで依存を断ち切るのなるほどなー。
  • Secretlint v7.0.0をリリースしました。Pure ESMへの書き直し

    機密情報をLintできるSecretlintのv7.0.0をリリースしました! Release v7.0.0 · secretlint/secretlint このバージョンでは、SecretlintをESMモジュールとして書き直しました。 どのように移行したかは別の記事で紹介しているので、移行方法について記事を参照してください CommonJSからES Modulesへの移行する方法。トップダウンかボトムアップか Secretlint v7.0.0の変更点 ルールと体のコードを含めて、全部のパッケージをESMに書き直しました。 その中で、いろいろ整理したりもしたので、変更点はいろいろあります。 ただし、secretlintコマンドや@secretlint/quick-start、Docker Imageとして使う場合は、そこまで目にみえる変化は少ないと思います。 詳細はリリースノートも参

    Secretlint v7.0.0をリリースしました。Pure ESMへの書き直し
    mizdra
    mizdra 2023/07/06
    node:test、レポートが素朴過ぎたりスナップショットテストが組み込みサポートされてなかったりで現代的なテスト体験には物足りなくて使ってないのだけど、たしかにライブラリに組み込む時には便利だなー
  • Prettier 3.0: Hello, ECMAScript Modules! · Prettier

    We are excited to announce the release of the new version of Prettier! We have made the migration to using ECMAScript Modules for all our source code. This change has significantly improved the development experience for the Prettier team. Please rest assured that when using Prettier as a library, you can still use it as CommonJS as well. This update comes with several breaking changes. One notabl

    Prettier 3.0: Hello, ECMAScript Modules! · Prettier
    mizdra
    mizdra 2023/07/06
    めでたい。色々改善入ってそう。
  • When a millisecond is not a millisecond

    mizdra
    mizdra 2023/07/04
    単調時計はシステムのスリープ中はカウントされないので、スリープが挟まると壁時計とズレる/原子時計ほどの精度もないので長時間による計測でもズレる、という話。長時間の測定をする場合は工夫が必要。
  • CommonJS is hurting JavaScript

    JavaScript, the undisputed king of web development, is being sabotaged — not by a rival language or a revolutionary new technology, but by its own baggage from the past. This insidious saboteur is none other than CommonJS, the antique module system that we’ve tolerated for far too long. The rise of CommonJS About 15 years after its invention, JavaScript started expanding beyond the browser to the

    CommonJS is hurting JavaScript
  • documentationjs + add-text-to-markdownでREADME.mdのAPIリファレンスを自動更新

    documentationjs + add-text-to-markdownでREADME.mdのAPIリファレンスを自動更新 documentationjsはJSDocからドキュメントを生成できるツールで、ES2015以降のコードにも対応しています。 (TypeScriptは対応してないようです) 以前はMarkdownへの出力が難しかったのですが、いつのまにかdocumentation build -f mdでMarkdownでのAPIドキュメントが生成できるようになっていました。 これを使うことで、ライブラリを書いてそのJSDocからドキュメントを生成して、READMEのUsageセキュクションを自動的に更新できるようになっています。 以前もできたのですが、かなりトリッキーなテーマを書いたりしないといけませんでした。(後stdoutへの出力がなかった気がします) –theme for

    documentationjs + add-text-to-markdownでREADME.mdのAPIリファレンスを自動更新
    mizdra
    mizdra 2023/06/28
    これいいなー TypeScript でもやりたい。