Javascriptのコード
-
JAVASCRIPT Vue.js 3でdayjsをグローバルに組み込む方法import { createApp } from 'vue' import App from './App.vue' import dayjs from 'dayjs'; const app = createApp(App); app.config.globalProperties.$dayjs = dayjs app.mount('#app')
-
JAVASCRIPT Vue.js 3でのmain.jsの書き方import { createApp } from 'vue' import App from './App.vue' import routes from './routes' import { store } from './stores/' const app = createApp(App); app.use(routes); app.use(store); app.mount('#app')
-
JAVASCRIPT Vue.jsのコンポーネントで外部scriptをロードする方法<template> <p id="exscript"> <ins class="banner"></ins> </p> </template> <script> export default { mounted() { let scriptEl = document.createElement('script') scriptEl.setAttribute('src', 'スクリプトのURL') document.getElementById('exscript').appendChild(scriptEl) } } </script>
-
JAVASCRIPT Gridsomeコマンドを短くして使う方法{ "name": "hoge", "scripts": { "build": "gridsome build", "develop": "gridsome dev", "lint": "vue-cli-service lint", "deploy": "gridsome build && netlify deploy --dir=dist/ -p" } }
-
JAVASCRIPT Vue.jsのテンプレート内でundefinedを判定する方法<template> // OK <p v-if="!$route.params.page">1〜{{perPage}}件</p> // NG <p v-if="$route.params.page === null">1〜{{perPage}}件</p> // NG <p v-if="$route.params.page === 'undefined'">1〜{{perPage}}件</p> </template>
-
JAVASCRIPT Gridosomeに秒殺でmatomo analyticsを組み込むplugins: [ { use: 'gridsome-plugin-matomo', options: { host: 'matomoのアドレス', // https:から書くこと siteId: サイトID } } ]
-
JAVASCRIPT Gridosomeでジェネレータのmetaタグを削除する方法export default function (Vue, { router, head, isClient }) { // 省略 const gIndex = head.meta.findIndex(e => e.name === 'generator') if (gIndex !== -1) head.meta.splice(gIndex, 1) }
-
JAVASCRIPT Gridosomeで「No transformer for 'text/markdown' is installed.」と出た時の対応yarn add @gridsome/transformer-remark
-
JAVASCRIPT PWAでキャッシュを消して強制アップデートをする方法window.navigator.serviceWorker.getRegistrations() .then(registrations => { for(let registration of registrations) { registration.unregister(); } }); window.location.reload(true);
-
JAVASCRIPT Vue.jsでCSSスタイルをHTMLヘッダーのインライン化する設定module.exports = { chainWebpack: config => { config .plugin('html-inline-source') .use(require('html-webpack-inline-source-plugin')) config.plugin('html').tap(args => { args[0].inlineSource = '^(/css/.+\\.css)' return args }) } }
-
JAVASCRIPT Gitlab CI/CD/PagesでVue.jsアプリをビルド&デプロイする設定ファイルimage: node:latest pages: stage: deploy only: - master before_script: - 'yarn config set cache-folder .yarn' - 'yarn install' script: - 'yarn build' - 'mv public public_org && mv dist public' artifacts: paths: - public
-
JAVASCRIPT Vue.jsでvue.config.jsからページタイトルを設定するmodule.exports = { pages: { index: { entry: 'src/main.js', // 必須パラメータ title: 'ページタイトル', } } }
-
JAVASCRIPT Dexie.jsでテーブルを作り直したい時の対応import Dexie from 'dexie'; const db = new Dexie('testDB'); async noteInit(){ await db.delete(); await db.version(1).stores({ notes: 'fileName, noteTxt', }); await db.open() },
-
JAVASCRIPT Vue.jsの子コンポーネントに簡単にclassを付与する方法// page.vue (呼び出し元) <Btn :to="'/'" :className="{active: true}">実行する!</btn> // btn.vue (受け取り側) <template> <router-link class="btn" :class="className" :to="to"><slot></slot></router-link> </template>
-
JAVASCRIPT Vue Routerで受けるパラメータの規定値を設定して値を制限するconst router = new Router({ mode: 'history', routes: [ { path: "/index.html", name: "index", redirect: '/', }, { path: "/", name: "Home", component: () => import( './views/Home/Index.vue'), }, { path: "/:categories(code|note|author)", name: "CategoryTop", component: () => import( './views/Categories/Detail.vue'), } ] })
-
JAVASCRIPT 画像プロキシ・camoのdigestコードを生成してURLを返すスクリプトbuildImgProxyUrl: function(url){ const crypto = require('crypto'); const key = 'CAMO_KEY'; // 自分のものに置き換える const hmac = crypto.createHmac('sha1', key); const convUrl = hmac.update(url); const digest = hmac.digest('hex') const result = 'サーバーのURL' + digest + '?url=' + encodeURIComponent(url) // 自分のものに置き換える return result; }
-
JAVASCRIPT Javascriptで連想配列をPHPのforeachっぽい書き方でループを回すfor(let [key, val] of Object.entries(testObj)){ this[key] = val }
-
JAVASCRIPT Vue.jsのnameにマッチしたコンポーネントをkeep-aliveする// 以下router-viewするコンポーネントの設定 <keep-alive :include="/List/" :max="20"> <router-view/> </keep-alive> // 以下キャッシュさせるコンポーネント側の設定 <script> export default { name: "TopList", // ここにマッチする } </script>
-
JAVASCRIPT Vue.jsのmethodでsetInterval、setTimeoutを使う場合の注意点methods: { someMethod(){ setInterval(function () { console.log('30秒毎に処理') setTimeout( function() { console.log('5秒後に処理') setTimeout( function() { console.log('4秒後に処理') }.bind(this), 4000 ); }.bind(this), 5000 ); }.bind(this), 30000) },
-
JAVASCRIPT Vue.jsのSPAでページ遷移時にEventListenerを登録・解除するexport default { beforeMount () { window.addEventListener('scroll', this.scrollHandler); }, beforeDestroy () { window.removeEventListener('scroll', this.scrollHandler); }, }
Javascriptに関するノート
-
nodenvでコマンド実行時にだけバージョンを指定する方法 -
Nuxtをアップグレードする方法 -
Nuxt3のSSGでpayloadの出力を止める方法 -
Nuxt3のサイトにGoogle Adsenseの自動広告を入れる方法 -
Cloudflare WranglerのV1とV2の両方を使い分ける方法 -
Nuxt3でいくつかサイトを作ってみた雑感 -
メインのCMSをDirectusに移行した話 -
Cloudflare Pages Functionsを使ってみた -
Nuxt3 + Cloudflare Workersを使ってみた感想 -
Gridsomeで外部スクリプトやCSSを追加する方法 -
Dexie.jsでクエリビルドを使いこなす -
Vue3でGoogle APIを使う -
Vue3でsleepを実装する -
Vue3でマークダウンを変換する -
Vue3でsetupを使って動的に一覧を絞り込む検索フォームを作る -
Vue3のsetup関数でVue Routerを使ってページネーションを制御する -
Vue3でDexiejsを使う -
GridsomeのblongsToでクエリ操作をする方法 -
Javascriptの静的サイトジェネレータまとめ -
Tailwind CSS互換の「Windi CSS」をGridsomeで使ってみた -
Vue + Dexie + IndexedDBで作る簡単ノートアプリ -
Cockpit CMSでは静的コンテンツを管理しない方が良い理由 -
Cockpit CMSをCloudflare Pagesと連携させる -
GirdsomeでヘッドレスCMS・APIのマークダウン記法のデータを変換する -
画像ファイルのstaticとassetsの使い分け -
Gridsomeでマークダウンの中でコンポーネントを使う方法 -
Gridsomeで検索ページを作る方法 -
Gridsomeでページャーを設置する方法 -
Gridsomeでのデータの構築され方と抽出方法 -
Gridsomeで1万ページ以上の中規模サイトを構築した感想 -
Gridsomeのstatic-queryとpage-queryの違い -
GridsomeでCSSフレームワーク・Tailwindcssを使う(PurgeCSSも) -
Gridsomeのビルドで「JavaScript heap out of memory」の対処方法 -
Vue.jsのUIライブラリ・フレームワークまとめ -
Gridsomeで「window」の値を使うときに注意したいこと -
Gridsomeで「require() of ES modules is not supported」の対処方法 -
GridsomeでTable Of Contents(目次)を自動挿入する方法 -
GridsomeでVue.jsプラグインを使う方法 -
GridsomeでGoogle Analytics 4を使う方法 -
静的サイトジェネレータ・GridsomeとHUGOの比較 -
しばらく使って感じたGridsomeの弱点 -
Vue.jsベースの静的サイトジェネレータGridsomeの感想 -
Cloudflare Workerで価格コムライクなリダイレクト(扉)ページを完全無料で作る -
AMP Scriptでamp-script-srcのハッシュに対応する -
関数型コンポーネントで呼び出せる、よく使うAPIまとめ -
PWAアプリをOSのシェアダイアログの一覧に登録させてデータをシェアする方法 -
AMPページでWeb Share APIを呼び出す方法 -
CloudFlare WorkersでAPI情報を秘匿するProxyを建てる -
Vue.jsでCSSファイルをindex.htmlにインラインCSSとして取り込む方法 -
Vue.jsアプリの初期ロードを高速化するためにやったこと -
JavaScriptのfetch API&DOM Parserで外部HTMLを解析する -
Vue.js PWAで、勝手にheadに挿入されるiconのリンク先を変更する方法 -
Vue.jsのMixinはコーポネントをまたいだ共通変数(設定)に使うと便利 -
Vue.jsアプリでAPIのCORSの壁を越える方法 -
Vue routerでルート変更の度に、inputで開いているメニューを閉じる方法 -
AMPページでページシェア用に任意のURLをコピーするボタンを実装する -
Node.jsでGoogle Cloud Storageをセキュアに操作する -
Netlify CMSのeditorial_workflowで間違ってsave済みの編集画面を消してしまった時の対応 -
Dexie.jsでよく使うコマンドまとめ -
Vue.jsでIndexedDBとプラグイン「Dexie」で楽々クライアントデータベースを作成する -
Vue.jsで使えるブラウザストレージを調べた -
多言語SPAサイトでPWA(Service Worker)を使う時はファイルパスに注意 -
Herokuで「xxx has unmet peer dependency yyy」というエラーが起きた時の対応 -
GraphQLのAPIをNode.js + Express + MySQLで試してみた -
SSRは必要?Javascriptで構築したSPAサイトのSEOを考える -
Vue Routerで複数ルートを一つのルートにまとめて制御する -
PWAアプリをホーム画面に追加した時のリクエストヘッダのオリジンを検証 -
Herokuでワンクリックでcamoの画像HTTPSプロキシを立ててnode.jsアプリから呼び出す -
Vue.jsのSPAでPreFetchを使ってコンテンツを先読みして高速化する -
Vue.js + VuexでステートをブラウザのLocalStorageに保存・復元して永続管理する -
Vue.js + Vuexでkeep-aliveなコンポーネントに戻った時にstateを更新する方法 -
Vue.jsのSPAで、メンテナンスページを出す -
Vue.jsで作ったSPAがiOS Safariでクラッシュ多発した原因がCSSのトランジションだった話 -
Vue.jsで関数型コンポーネントの中で@clickでmethodを実行する -
Vue.jsでトランジションの間にページがスクロールしちゃう問題 -
Vue.jsで、入れ子になったコンポーネントの読み込みの動きを確認してみた -
Vue.js + Firebase AuthでログインsignInWithRedirectでログインフローを作る -
node.jsのExpressでCloudflareのキャッシュを効かせる -
Vue.jsでlazysizesを使って画像遅延ロードを実装する -
Vue Routerの導入と基本的な使い方 -
Vue.jsのテンプレート挙動まとめ -
Vue.jsで、「Component template should contain exactly one root element.」エラーが出た時の原因と対応 -
Cloudflare WorkersでCookieを使う方法