親バカエンジニアのナレッジ帳

webのエンジニアをやっており、日頃の開発で詰まったことや書き残しておきたいことを載せています。

Javascript

vue-slickをNuxt.jsで使用した時の「window is not defined」エラー解消法

vue-slickを使用した場合のエラー 複数画像のスライド表示を簡単に実装できるJavascriptのプラグインであるslick.js。 これをVueやNuxtに実装する場合はvue-slickをインストールしてimportすれば簡単に実装できます。 ただここでNuxtに実装する場合は注意が…

Nuxtのrouterやmetaを自由にカスタマイズしたい

Vue.jsとNuxt.jsのrouterの違い Vue.jsでは、ルーティングを設定する際にrouter/index.jsなどで自分で自由に設定することができます。 カスタマイズなど自由自在で、pages配下のファイルの置き場所に関係なく、pathやcomponentやname、それにmetaなどを設定…

文章どうしの差分を取得するならdiff-match-patchが便利

文章どうしの差分を取得 文章の差分を取得するような機能を作りたい時、diff-match-patchを使えば簡単に実装することができます。 PythonやGo、PHPなど、各種言語にライブラリが用意されていますが、今回はJavascriptのライブラリを使用し、フロントエンドだ…

複数のURLリンクを一発でタブ表示!

Javascriptのwindow.open Javascriptでaタグの「target=_blank」の要領で、別タブでページを開きたいことありますよね。 そんな時にはwindow.open('ここにURL', '_blank')を使えばOKです!これを応用すれば、以下のような複数のURLリンクを一括でタブ表示す…

target="_blank"にはrel=noopenerを付けないと超怖い

target="_blank" 外部ページへ遷移する際に使われるtarget="_blank"。 あまり知られていないのですが、そのまま使うと実はセキュリティ的なリスクをはらんでいるのです。 その脆弱性対策として、リンクに「rel="noopener"」を付けましょう。 <a href="https://jidou.jp" target="_blank" rel="noopener">リンクのテキスト</a>…

NuxtでQRコードを簡単に生成する機能を実装!こんなに簡単に実装できたのか!

QRコード生成機能は実装が簡単! URLを入力してポチッとボタンを押せばQRコードが生成されるあの機能。 実際に実装してみましたが、超簡単にできたので共有します。 バックエンドは不要で、Javascriptだけで実装できてしまいます。 (複雑そうな仕組みに見え…

Nuxtのソース表示でcssが全部出力されないようにする方法

Nuxtでソースの表示 ブラウザ上からページのソースを見ることができますが(Chromeで「ページのソースを表示」を実行する)Nuxtでソースを表示させた時にデフォルトの設定だとCSSが全部出力されませんか? 本来見たい部分までひたすらスクロールして大変な思…

Vue.jsではjavascript:void(0)をなくそう

aタグのイベント javascriptでは数々のイベントを設置するもの。 ホバーした時、スクロールした時、、、など色々パターンはありますが、特に多いのはクリック時のイベントではないでしょうか。 そして大体それらはaタグに設置されますよね。ただ、aタグには…

Vue.jsから開発モードでクロスドメインのアクセス

開発時のVueとサーバサイドのポート番号 VueでサーバサイドのAPIを使用する開発をしており、サーバサイドのサーバも起動させている場合、Vueとサーバサイドのポート番号は異なることと思います。 Vueで「npm run dev」コマンドを使用して開発している場合、…

Nuxtの$axiosにおけるgetと$getの違い

Nuxtで使用する$axios SPAサイトではガンガン行う非同期通信、その中でもaxiosは良く使われると思いますが、 Nuxtの場合はnuxt-community/axios-moduleのモジュールを使うことが一般的でしょう。注意したいのが、何も考えずに $axios.$get とやると、いつも…

VueやNuxtで消えないdefault child route のWARNING

routerでchildrenを設定していると表示されるWARNING VueやNuxtでは、routerの設定でchildrenを使うと構造的に見やすいルーティングを生成できますよね。 ただし、以下のような一件問題なさそうなルーティングを書いた場合、WARNINGが表示されてしまいます。…

Nuxtでfunction()から始まるようなJavascript構文を呼び出し

function()から始まるような構文 サイト制作でJavascriptのライブラリを使う昨今、サイト表示時点で外部にアクセスするような、 function()から始まるような構文を使うことはよくありますよね。 例えば流入数を計測するためのお決まりのタグや、Typekitなど…

Nuxt.jsでプロジェクトを作成してみた

Nuxt.jsとは? Nuxt.jsとは、Vueアプリケーションを作成するフレームワークです。 通常のVue.jsの開発で頻繁に使用する以下の機能を最初から含んでいます。・Vue 2 ・Vue Router ・Vuex ・Vue Server Renderer ・vue-metaなんと言っても「Vue Server Rendere…

Vue.jsでビルド時にgzipファイルを出力する方法

出力ファイルは極力圧縮したい Webサービスにおいて、コンテンツ内容や機能面の充実度が重要であることは言うまでもありませんが、ページのパフォーマンスも重要ですよね。 当然遅いより早い方が良いに決まっています。今回はパフォーマンス改善策の1つであ…

Vue.jsのv-ifやv-forで無駄にタグを増やしたくない時はtemplateで代用するのが便利

Vue.jsでの分岐やループ処理 Vue.jsでは分岐やループ処理で、動的にタグを描画したい場面がありますよね。 例えばリストを動的に増やしたい時は、liタグにv-forを付与したり、ある文言が特定の条件を満たした時のみ表示させる場合はpタグにv-ifを付けたりな…

Vue.jsでURLの#(シャープ)を取り除く方法

URLの#(シャープ) Vue-cliでvue.jsのセットアップを行った時、開発環境のURLを叩くと後ろに#(シャープ)が付いてしまいます。http://localhost:8080と入力しても、http://localhost:8080/#/ となってしまいます。これはhashモードという状態で付くものであり…

XSSってどうやって仕込まれる?

XSSについて このページを閲覧している方ならご存知とは思いますが、まずはXSSについて超簡単に説明します。この事象は入力フォームがある画面が狙われるものですが、Javascriptのタグを攻撃者によって画面上に埋め込まれ、ユーザ情報やcookieのセッションが…

SPAサイトのCSRF対策

CSRF対策について CSRFとは? このページに来られた方ならもう理解している方も多いとは思いますが、CSRFについて簡単に説明します。 CSRFはリクエスト強要(CSRF:Cross-site Request Forgery)という意味で、クロスサイト(Cross-site)の名の通り、正規のサイ…

Spring BootのFormクラスでIntegerの項目にNULLはPOSTできない

NULLをPOSTした時点でStringとして認識されてしまう Spring Bootにおけるフォームから値をPOSTする際の挙動になりますが、Integer型の変数にNULLを送信すると以下のようなエラーが発生してしまいます。 Failed to convert property value of type 'java.lang…

Vue.jsのdataプロパティで配列の変更はspliceで置き換えろ!

dataプロパティで配列の定義 ti-tomo-knowledge.hatenablog.comのページで、Vue.jsではdataプロパティの変更がリアクティブに変化すること、また、それを単なる変数ではなくオブジェクトでも実現させるための方法について説明しましたが、このページではdata…

Vue.jsのdataプロパティでオブジェクトの変更は$setで置き換えろ!

dataプロパティでオブジェクトの定義 Vue.jsでインスタンスを生成した際、dataオブジェクトに変数を定義した場合のリアクティブな動作についてはご存知だと思いますが、テンプレート内でdataオブジェクトに定義した変数を使用していた場合、変数の中身が変更…

ThymeleafでJavascriptエラー(SAXParseException)

Thymeleafでのorg.xml.sax.SAXParseException例外 Thymeleafは構文チェックが厳しく、Javascriptなどをそのまま文中に貼り付けると、以下のようなエラーが発生してしまいページが開けないことがあります。 org.xml.sax.SAXParseException: エンティティ"l"へ…

vue.jsで全ページ共通コンポーネントのまとめ方

コンポーネントでヘッダーやフッターなど、どのページでも共通となる部分をまとめることってありますよね。 Vue.jsではその時、どのようにまとめるのが良いのでしょうか。 全ページで毎回コンポーネントを書く方法 まずは全ページで毎回コンポーネントを書く…

vue.jsでheadの要素を設定する時はvue-headが便利!

SPAでサイトの実装をすべてJavascriptで行う場合、headの要素までもJavascriptで行わなければいけないですよね。 要素を挿入するだけなのでやり方は色々ありますが、やはりライブラリなどを使用して簡単に実装したいところ。 そこで、vue.jsを使用している場…

WPML Multilingual CMSでリダイレクトされてしまう問題

WPMLはWordPressで多言語対応する時に最も有名なプラグインですね。 僕も業務でこのプラグインを用いた対応を行ったのですが、ブラウザの言語でリダイレクト設定をし、日本語を母国語として設定した状態で他の言語を選択すると1回目はなぜか反映されないとい…

WEBページを自動スクロールさせて、画像をゆっくり見たい!

今回の記事は、非プログラマー向けの記事になります。 WEBページを開いた時に、画面を自動スクロールしたい時はありませんか? 例えば写真が一覧で表示されるギャラリーページなど、どこまで続いているのかわからないページでは、手動で一番下までスクロール…