*この記事は2020年3月頭に書かれている記事です どうも、Vueはいいぞおねーさん(自称)です。 Vue.jsは私に言わせるととてもよいフロントエンドフレームワークであり、その理由の一つにプログレッシブフレームワークである(段階的に利用する機能を増やしていくスタイルにマッチしている)ものとして、フロントエンド初学者の皆さんにもおすすめしたい代物です。 しかし、現在までに様々なプラクティスが考案されたがゆえに、「最初からベストな方法で始めたい」という思いから一度にたくさんのことに挑戦してしまいたくなりがちです。 そしてそれはプログレッシブという思想に反するもので、結果として挫折を生んでしまっているのではないかと思いました。 そこで今回は「知るのを後回ししてよいこと」として、Vue.jsへの入門する方へのアドバイスを独断と偏見で不要度という指標でまとめてみました。 不要度というネガティブな指
Vue.jsを100時間ほど勉強して分かったことを整理します。 勉強時間の内訳は、 Udemyの Vue JS 2 - The Complete Guide (incl. Vue Router & Vuex) をだいたい全て完了(85時間) 実際に自分でコードを書いてみた(15時間) です。 学習開始時のレベルは、JavaScript・jQueryはそれなりに扱うことができ、過去に少しだけReactを勉強したことがある感じでした(専門は Ruby on Rails)。 Vue.js 自体の構文 まず、Vue.js 自体の基本的な構文を整理します。 Vue インスタンス Vue インスタンスの書き方は次のような感じです。 new Vue({ el: "#app", data: { name: "Kei", age: "30", counter: 0 }, methods: { increas
【GAS x Vue.js】JavaScript のみで今、家計簿をつくるとしたら【ハンズオン付き!】JavaScriptGoogleAppsScriptVue.jsQiita夏祭り2020_パソナテック 「JavaScriptのみ」&「無料」&「サーバーレス」なスプレッドシートと連携した家計簿をつくる方法を考えてみました。 実際に家計簿アプリを作るハンズオン付きです! ※こちらの記事は一部古い内容となっております。 Zennに投稿している本を更新していますので、よければこちらをご覧ください。 https://zenn.dev/matsu7089/books/gas-account-book なにを作ったの? Web上でデータを登録すると、スプレッドシートに反映される家計簿アプリです。 実際のページはこちら。使い方は「家計簿アプリお試し方法」で説明します。 データ追加の他に、データ編集と
皆さん、こんにちは。LINEでフロントエンド開発を担当しているUIT1室のシュウと申します。 今回、年に一度の企画「LINEのお年玉」キャンペーンにて JavaScript の部分を担当させていただきました。LINEのお年玉は多くのトラフィックが流れる大規模かつ短期間の企画となります。 技術的な挑戦をするためのプロジェクトとしてもちょうど良いサイズ感であったため、今回多くの挑戦を行いましたので、連載形式で紹介していければと思います。 初回である今回は、Vue.js と TypeScript を併用した開発についてです。 なぜ TypeScript を使うのか? これまで LINE のプロジェクトでは、JavaScript をメインの言語としてフロントエンド開発を行ってきました。ですが、時代の流れもあり、現在では新規プロジェクトの多くが TypeScript を採用しています。 月並みですが
Vue + Vuexで中〜大規模なアプリケーションの開発をするとき、どんな設計にするか未だによく悩みます。試してみては捨ててを繰り返していて、そろそろ自分の中でベターなパターンを固めたいと思いつつも固まらず、気づけば数年経ちました。 そういった前提を踏まえつつではありますが、現時点で設計時に意識していることをTips的に少しずつまとめてみようと思います。今回はVuexのGetterに関するお話です。 Getterの役割を見直す 副作用のないクエリとして実装する プロパティアクセスとメソッドアクセスを区別して命名する プリミティブでシンプルなクエリとして実装する 表示用の加工処理はComponentに実装する 例外1. 加工された値の賞味期限が長い場合 例外2. 加工処理が複数Componentで繰り返される場合 おわりに Getterの役割を見直す VuexはFluxアーキテクチャを参考に
前書き はじめまして、ANDPADでフロントエンド開発を担当している小泉です。入社から2年弱ですが、ここ1年の社員数の増えるペースが速すぎてすっかり古株になりつつあります。 自分は入社当初からVue.js・Nuxt.jsを使って開発を行っているのですが、2020年7月頃よりスタートしたプロジェクトで、Vueの新しい記法であるVue Composition APIを全面的に採用しています。 この記事では、Composition APIを実際に製品開発に導入するまでの流れから、9ヶ月ほど使っていく中で気づいたComposition APIのメリットとデメリットなどをまとめています。 昨年秋にVue 3.0が正式リリースされ、今年はNuxt 3.0も控えており、これからVue 3.0やComposition APIを本格導入するチームや会社も多いと思いますので、その際の参考になれば幸いです。 技
Vuex is an awesome state management library. It's simple and integrates well with Vue. Why would anyone leave Vuex? The reason can be that the upcoming Vue 3 release exposes the underlying reactivity system and introduces new ways of how you can structure your application. The new reactivity system is so powerful that it can be used for centralized state management. Do You need a shared state? The
これは 2020-01-10 に開催された、DDD meetup#3 でのLTの内容を記事化したものです。 Vuex+Express環境でどんなアーキテクチャを採用したか、して良かったこと/悪かったことを発表しました(LT資料はこちら)。 問題提起 フロントエンドでDDDを実践しようと考えて、結局採用を見送った経験のある方は以外に多いのではないでしょうか。ドメイン知識はバックエンドに集中させてフロントはできるだけライトウェイトに…。と、がんばっても、どうしても気になるものの一つがバリデーション。些末なことだけどバリデーションはれっきとしたドメイン知識。これだけ半端にフロントにいるの、気持ち悪いですよね? 折角ドメイン知識をその他と分離するなら、フロントとバックでもそれらを共通化したい!できるんです。そう、Full-Stack JavaScriptでの開発なら。 結論 こんなアーキテクチャを
本連載では、Webページのユーザーインタフェース(UI)フレームワーク「Vue.js」と、Vue.jsを利用してWebページを作成できるフレームワーク「Nuxt.js」の活用方法を、サンプルとともに紹介します。前回はWebページの一部分を部品として再利用できるコンポーネント機能を説明しました。今回は、Webページの入力内容や表示内容といった状態を集中管理できるVuexストアについて説明していきます。 はじめに Nuxt.jsは、Webページのユーザーインタフェース(UI)フレームワークであるVue.jsに、Webページの作成に必要なUI以外の追加機能をまとめて提供するフレームワークです。 Webページを複数のコンポーネントに分割できるJavaScriptフレームワークでは、あるコンポーネントの状態(入力/表示内容)を他のコンポーネントで利用する場合、不整合なく状態を共有する仕組みが必要とな
この記事は Nuxt.js アドベントカレンダー 24 日目の記事です。 ここ一年ほどほとんど Nuxt.js で Vue.js を単体で使うことがめっきり減った @potato4d です。 今回はニッチな話題として、「JavaScript の世界のオブジェクトに Vue.js のリアクティブ機構をもたせる」という話をしたいと思います。 なお、今回はややこしいコードベースを省く意味でも Nuxt.js 環境を前提とします。 実現したい要件 まずは実現したい要件を定義します。 今回は、現在弊社にて開発中の Web サービスのシステムをベースとして考案します。 Firebase Authentication を使ってユーザー情報をやりとりする データベースヘの取得・保存操作では、 Firebase 側のユーザーの uid を利用するためグローバルから認証情報にアクセスできてほしい できればその
Vuexの根幹 【ストア】 【役割】 Vuexを使う上でアプリケーションの状態(情報)を保持する役割です。 Vuexのコンセプトである『Vuexは信頼できる唯一の情報源である事』が前提にあるため、ストアはアプリケーションの中でただ一つだけの根幹となる存在です。 今回はその大事な役割であるストアの4つの概念をまとめます。 4つの概念 ・state→アプリケーションの状態(情報) ・getter→stateの一部やstateから返された値を保持する ・mutation→stateを更新(変化)させる ・action→非同期通信や外部APIとのやりとりを行う この4つを一纏めにしたものをモジュールと言います。 モジュールでこの4つを守っているイメージです。 ストアの作成 Vue-cliでVuexを取り込んでおけば、srcフォルダにstore.jsが入っています。 Vuexも読み込まれていますので
Piniaとは PiniaはVue用のState Managementライブラリで複数のコンポーネントでデータを共有するために利用することができます。アプリケーションの中にStoreという場所を準備しその中にコンポーネント間で共有の必要があるデータを保存していきます。またデータを保存するだけではなくデータを更新する機能も備えています。 Piniaによるデータ管理のイメージ Vueプロジェクトの作成 Piniaを利用するためにVueのプロジェクトの作成を行います。本文書ではViteでプロジェクトを作成後にnpmコマンドでpiniaのインストールを行います。 viteではなくnpm init vue@latestコマンドを利用するとプロジェクトの作成と同時にpiniaをインストールすることもできます。 Viteによるインストール npm init viteコマンドを実行してVueのプロジェクト
本文書ではできるだけシンプルな例を通してVuexの説明を行っていきます。Vuexを使った経験がないという入門者の人また下記の図がわからないという人を対象にしています。Vuexが難しいなと感じている人がいるとすれば用語がこれまでのvue.jsよりも増えていることまた記述方法が長かったり短縮形によって複数の書き方があることが原因だと思います。一度理解してしまえば決して難しいものではないので安心して読み進めてください。 vuex diagram Vue3では新たに状態管理のライブラリとしてpiniaが登場しました。Vue3で新しいプロジェクトを作成する場合にはpiniaを利用することが推奨されています。
はじめに 現在リリースされている Vuex の最新のバージョンは Vuex 4 です。 これは Vuex 3 と互換性のあるバージョンで Vue 3 で使用するためのバージョンであり、 Vuex 3 と同じ API となっています。 そのために現状 Vuex の問題点としてよくあげられている TypeScript サポートの問題点を解決できていません。 Vuex 5 は Vue 3 において Composition API による Reactivity API が登場したことにより Reactivitty API によってどのように Vuex をどうさせるか再考されたバージョンとなっています。 Vuex 5 は以下の点にフォーカスしています。 グローバルな状態を定義する コードの分割 SSR サポート Vue Devtools のサポート 拡張性 「グローバルな状態を定義する」「コードの分
PHPの人気のフレームワークLaravelではWebサイトの管理画面を開発することができます。 このシリーズではそんな管理画面の構築に関して、技術者向けにその手順を紹介しています。 この記事ではVuetifyを利用してCRUDを作る方法をご紹介! Nuxt.jsからLaravelのAPIをAjaxで通信できるようにする手順はこちらの記事で解説。CookieによるAPI経由のユーザー認証機能を作る方法はこちらの記事で解説しています。 ・Laravelを使って構築をしたい方 ・Webサイト構築の具体的な手法が知りたい方 これらに当てはまる方におすすめの記事となっています。このシリーズを読めばLaravel6とNuxt.jsで管理画面を作成することができますよ。 Vuetifyを使う理由VuetifyはマテリアルデザインベースのVueのUIコンポーネントライブラリです。 Vueを使って画面を作り
In the last chrome dev summit, Surma’s talk on the off-main-thread architectures and a following article on its possible applications on common technologies like React and specifically Redux inspired me to explore similar opportunities for Vue and Vuex. This article was intended to be a 30-minute talk, but I decided to write it down in-case I didn’t get the chance to do it. Nature of JavaScript Fi
ログインに成功すると token を取得できて 以降、認証が必要な API と通信する際は header に token をセットする、という想定です ちなみにバックエンドの API は Rails で作っています。 Rails でトークン認証 API を 15 分で実装する ディレクトリ構成 store の使い方が肝でしょうか うーん、状態管理って難しいですね src/ ├── App.vue ├── assets │ └── logo.png ├── components │ ├── error.vue │ ├── login.vue │ ├── logout.vue │ ├── menu.vue │ └── top.vue ├── lang │ ├── index.js │ └── messages.json # エラーメッセージ等、文言をここに ├─
Vuexとは Vuex(ビューエックス)は、ReactにおけるReduxのように、データの管理を一元化するためのライブラリです。 コンポーネント間で状態の受け渡しが容易になるため、ある程度以上の規模の開発において利用されることが多いライブラリになります。 説明は以下の公式ページが分かりやすいです。 https://vuex.vuejs.org/ja/ 簡単なプロジェクトを使った使用例をまとめます。 今回は以下の4ステップをまとめました。 1つのコンポーネントを使う 2つのコンポーネントを使う 他のコンポーネントの状態を参照するコンポーネントを使う 同じコンポーネントを再利用する 環境構築 プロジェクトを作成 今回は、Vue CLIというものを使って、プロジェクトを作成します。 Vue CLIを使うと、基本的なファイルを自動的に作成してくれます。 以下コマンドは、vue-cliをグローバルに
This is the official Vuex 4 release. The focus for Vuex 4 is compatibility. Vuex 4 supports Vue 3, and it provides the exact same API as Vuex 3, so users can reuse their existing Vuex code with Vue 3. There are a few breaking changes described in a later section, so please check them out. You can find basic usage with both Option and Composition API in the example directory. It's still released un
はじめに Nuxt.js + TypeScript + Vuex(ストア)で簡単な Todo リスト制作を行った際の覚書です。 完成品はこちら → https://github.com/tigrig29/todo-nuxt-typescript 2019/09/20 執筆 Nuxt v2.10.0 ~ v2.14.0 あたりが対象です(v2.15.0 は未確認です) Nuxt TypeScript 公式 も参照して、比較しながら読んで頂けると幸いです。 対象 Nuxt.js 経験あり TypeScript 試したい Vuex(ストア)も使ってちゃんと型推論(入力補完)させたい 筆者の環境 Windows10 VSCode yarn Nuxt + TypeScript の環境構築 当記事では触れません。 環境構築が必要な方は、以下の記事を参考にしてみてください。 Nuxt + TypeSci
vuex 1ファイルの行数が増えすぎたのでリファクタついでにmodules 使い始めたら少しひっかかったので書き溜め。 構成 <template> <div> {{record.length}} </div> </template> <script> import { mapGetters } from 'vuex' export default { computed: { ...mapGetters(['record']) // NG }, record_count() { return this.$store.getters.record.length; // NG } } </script>
import Vue from 'vue' import App from './App.vue' import router from './router' import store from './store'// 追加 Vue.config.productionTip = false new Vue({ router, store, //追加 render: h => h(App) }).$mount('#app') import Vue from 'vue' import Vuex from 'vuex' Vue.use(Vuex) export default new Vuex.Store({ state: { count: 2 //状態を指定 }, getters: { //gettersには メソッドを記述 doubleCount: state => state.count
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く