ひびのログ

日々ではないけどログを出力していくブログ

JavaScript

script setup の書き方

せっかく作ったので供養。 書き方 前提 Vue.js 3.4 以上 コード <script setup lang="ts" generic="T"> import { ref } from 'vue' // 子コンポーネント読み込み import ChildComponent from 'ChildComponent' // options defineOptions({ inheritAttrs: false }) // ---------------------------…

その date-fns-tz、本当に必要?

実は date-fns で事足りるというケースが多いよ、という話。 date-fns-tz はどういうライブラリ? date-fns-tz の README より引用。 Working with UTC or ISO date strings is easy, and so is working with JS dates when all times are displayed in a us…

SPA でユーザーに新しいコードを使ってもらうための方法を検討した

なぜやるのか SPA は、新しいコードがデプロイされた後もリロードしない限り古いコードで動き続ける。 例えば古い API を廃止したいのに、古いコードで使い続けているユーザーがいると困る。 新しいコードがあったら新しいコードを使うようにするための方法…

Vue.js + dialog 要素で使いやすいモーダルダイアログ

使いやすい(個人の感想)(人による) 考えたこと せっかく <dialog> があるので使いたい props に boolean を渡したらダイアログが開閉する もちろんモーダルで テキストだけ設定すれば使えるようにしたい フォームなどを表示できるように slot も渡せるようにした</dialog>…

SolidJS に入門した

いつもは Vue.js をやってるけど、たまには他のものも触ってみたい。 React も触ってるけど、もっといい感じのやつがほしい。 と思っていたところにいい感じのやつを発見(前から知ってたけど)。 SolidJS とは View ライブラリ。 React みたいに JSX を使う…

フロントエンド開発の流れ

フロントエンドのコードをいじるときは、だいたいこういう流れでやるとよさそうというのを書いたものです。 あくまで「自分はこう思う」という一例です。 特にフロントエンド開発をするとき固有の事情について記載してあります。 フレームワークは Vue.js で…

GAS のスニペット

基本的にほとんどコピペで動くようになっているはず Slack に Webhook 通知する const sendWebhook = (webhookUrl, payload) => { const options = { method: 'post', contentType: 'application/json', payload: JSON.stringify(payload), } UrlFetchApp.fe…

JavaScript に入るかもしれない「Temporal」とは何なのか、使えるのか?

Temporal とは JavaScript で日付を扱うための新しい API。 github.com ポリフィルが 2 つあって、1 つはブラウザでポリフィルが試せる。 www.npmjs.com 現在のステータスは stage 3 なので、普通はいくつかのランタイムで実装されれば stage 4 になり、晴れ…

ブックマークレット化するスクリプト

FILE_PATH="ファイルパス"; echo 'javascript:(async () => {' "$(deno bundle ${FILE_PATH} | egrep -v '^// ' | tr -d '\n' | gsed -r -e 's/ +/ /g')" '})()' | pbcopy TS をコンパイルするときは // @ts-nocheck をつけてあげれば型チェックを無効にでき…

Next.js で作ったアプリを爆速で公開する(Firebase CLI framework-awareness)

こちらのツールを使用すると、Next.js で作ったアプリを Firebase に公開するのがめちゃめちゃ簡単にできました。 github.com Google 社員が管理しているものの、Firebase 公式ツールではないし現時点では experimental なので、理解した上で利用してくださ…

npm ってなんだ

一言に「npm」って言っても実はいろんな意味があるのでまとめた そもそもなんの略? Node Package Manager Node.js のパッケージを管理するやつ パッケージ? 使い回せるようにしたコード 誰かが作って公開している関数とかクラスとかそういうやつ Node.js …

Vue.js 3.0 で追加される Composition API をさっと舐めてみた

Vue.js 3.0 で最も大きい変更である Composition API を使えるので使ってみたので、その感想をまとめてみた。

@vue/test-utils で「<Component name> has been modified to ensure it has the correct instance properties」と言われた時

前置き Vue.js + JavaScript 環境に TypeScript を導入しようとしたときの話です。 コンポーネントを TypeScript 化してコンパイルはでき、テスト(Jest)が通るか確かめたときの話です。 前置き やったこと バージョン エラー内容 なぜこのメッセージが表示…

ライブラリの中で定義しているインターフェースを拡張したかったんですよ

タイトルのとおりで、TypeScript をある程度やっている人なら当然のことかと思いますが。 interface の拡張 TS の interface って拡張できるじゃないですか。 interface Foo { bar: string } interface Foo { baz: number } /* // 結果 Foo: { bar: string b…

「実践 TypeScript ―BFF と Next.js & Nuxt.js の型定義―」を読みました

はじめに 「JavaScript ではなく TypeScript で書け」と、去年くらいからかなり言われています。 私も JavaScript と TypeScript を使っているので、それにすごい共感します。 しかし、実際に型付けするときには結構困ることがあると思います。 そこで、つい…

【資料公開】TypeScript の社内勉強会を開催しました!

タイトルどおりなのですが、TypeScript の社内勉強会を開催しました! 勉強会で使用した資料 https://gitpitch.com/tee-talog/try-typescript 今回は GitPitch を利用してスライドを作成しました。 簡単にスライドが作れるので、それほどデザインにこだわら…

既存プロジェクトに Prettier を導入したけど、コードレビューが辛すぎる件(ラノベタイトル風)

お気持ち表明(いわゆるポエム)です。 前置き 現在関わっている JavaScript プロジェクトには Prettier が入っていません。 また、ESLint は入っていますが(Standard)、--fix をしていない状況です。 そして、Vue.js を利用してしますが、eslint-plugin-v…

ESLint が一部設定されている JS + Vue.js プロジェクトに Prettier を導入しようとしてハマった

TL;DR eslint-plugin-vue を導入してから Prettier を入れないと、変な風にフォーマットされることがあるよ。 TL;DR 背景 Prettier を導入したい! 導入方法 1. Prettier を実行してから ESLint を実行 2. ESLint と同時に Prettier を実行 地獄 どうしてこ…

勇なま:マップを作った

現時点のソースはこちら github.com 進捗どうですか マップを表示して、カーソル移動をできるようにした。押しっぱなしも OK。 アローキーと WASD でカーソル移動。G で初期位置に戻る。 今後負荷がかかりそうなので、軽減のためにマップは表示されていると…

勇者のくせになまいきだ。を再現してみたかった

記事リンク まだないよ。 リポジトリ github.com 導入 皆様は「勇者のくせになまいきだ。(略して勇なま)」をご存じでしょうか? 一言で表すと、神ゲー です。 思い出補正がかかっている可能性は否めないですが、モンスターを増やして勇者を倒すという、簡…

Vue.js でアクセシビリティを考慮したダイアログのフォーカス移動を考えてみた

UI フレームワーク等ではすでに対応しているかもしれませんが、自分でも作ってみました。 リポジトリ github.com src/App.vue : 親コンポーネント src/components/MyDialog.vue : ダイアログ本体 サンプル https://tee-talog.github.io/vue-dialog-focus/ 背…

YouTube でモデレーターや指定ユーザー名のチャットを強調する Chrome 拡張機能作りました

YouTube でモデレーターや指定ユーザー名のチャットを強調する Chrome 拡張機能作りました

【未解決】Nuxt.js を 2 にアップグレードしたかったけど断念した話

だめだったやり方 前準備 参考:Release v2.0.0 · nuxt/nuxt.js · GitHub まずは .nuxt node_modules yarn.lock package.lock.json を削除 node >= 10、npm >= 5 が推奨なので、それぞれアップデート。 nodist を利用しているので、 $ nodist 10.15.1 10.15.…

Cypress で立ち上がるブラウザの設定をリセットする

テストが起動しなくなった! Cypress のテストを実行しようとしたところ、下記の画面が出てテストが実行できなくなりました。 理由は明確で、Cypress で起動するブラウザの設定をリセットしたからです。 エラー画面 Whoops, we can't run your tests. This b…

APIキーの最適な読み込み方法を考える

Qiita に「APIのトークンをコードに書いている人へ」という記事が上がっていたので、実際APIキーとかをどういう風に読み込むのが良さげなのかなーと考えてみた。 言語依存のコマンドラインツール等を使用する JavaScript ならnode-env-fileとかdotenvとか? …

ECMAScript2019 に入りそうな構文メモ

執筆時点で、Stage3 のものをピックアップします。 タイトルは「ES2019に入りそう」となっていますが、本当に入るかは保証しません。 策定中の機能はどんなんがあるのかなーというのをちらっと調べたメモ書きです。 リポジトリは以下です。 github.com Funct…

わかモナ ~わかる!数式が出てこないモナドへの入り口~

数年前から関数型プログラミングが流行り始めて、やってみよう! という人もいらっしゃるかと思います。なにを隠そう、私がその口です。 そして Lisp や Haskell なんかに手を出した時、「モナド」という言葉が出てくるかもしれません。 知らないことは調べ…

TypeScript で動的にメソッドを追加する

JavaScriptでは、prototypeに適当に代入してあげればメソッドやプロパティの追加ができますが、 型という楽園を手に入れた TypeScript では簡単にはできません。 でもどうにかこうにかやる方法があったので、ググって色々試した結果を載せておきます。 ちな…

たった3分で、初心者が Travis CI を導入する!

最近(前から?)「テストが重要」とか「CI」とかよく聞くけど、導入するの大変そう…… と思っている、そこのあなた! いえ、たった「3分」で導入できちゃいます。 モダンな開発環境には欠かせない CI を、簡単にサクッと導入してみましょう! 3分でできる対…

Redux(っぽいもの)を見よう見まねで実装してみた

React + Redux しか触っていなかった私が、Vanilla JS 用で簡単ではありますが、自分でReduxを作りました。