JavaScript関連のことを調べてみた2019年12月12日

JavaScript関連のことを調べてみた2019年12月12日

FirebaseとVue.jsを使って息子の教材を作った話

## はじめに
はじめまして。ジークスの酒井です。
今回は業務とは別で日曜プログラミングネタになります。

中1の息子のために家族で単語カードを作ろうとしてたんですが、あまりに面倒くさいので
ツールを作ってみる事にしました

## 設計方針

・用紙はミシン目や穴があらかじめ空いている単語カード向け用紙を使います。

https://www.a-one.co.jp/product/search/detail.php?id=51163

・シンプルなPWAとして、入力画面 -> 印刷画面 の2画面構成にする

・vue.jsを使って、画面遷移などを実装する

・最後はFirebaseのHostingを使ってWebサイトにアップする

・印刷はpaper.cssにまかせる

paper.css
https://github.com/cognitom/paper-css

## いざ実装
まずは2画面を切り替える仕組みを作ってしまいます。
vueのlistというデータに画面名が入っていて、代入すると画面が切り替わる仕組みです。
入力画面:list、印刷画面:print

JS側

“`j

元記事を表示

簡単なTypeScriptの型一覧

# TypeScriptの型

– `boolean`型
– `true` or `false`
– `string`型
– 文字列
– `number`型
– JS同様にTSの数値は**浮動小数値**
– 2,8,10,16進数のリテラルもサポート
– `tuple`型
– 固定数の型がわかっている要素を定義できる **ex) `let x: [string, number]`**
– `any`型
– 型が不明な場合に用いる型。コンパイルでエラーがでない
– 型チェックが通るので推奨されない
– `unknown`型
– `any`型より少し型安全なany
– 値の代入には寛容(ok)だが値の利用には厳しい (error)
– `void`型
– 名前の通り型がない
– `null`か`undefined`しか代入できない
– `null`型
– `null`
– `undefined`型
– `undefined`
– `never`型
– 発生しえない値の型。戻り値が得られない場合の型として指定
– `object`型

元記事を表示

ES Modules形式をCommonJS形式でも利用できるようにする

YAMAP エンジニア Advent Calendar 2019 の12日目になります。
YAMAPで、フロントエンドエンジニア?として活動中の @issyxissy です。
フロントエンドエンジニアと言っても、他にもいろいろなことやっています。

YAMAPでは、Nuxt.js + Vue.jsを使ったフロントエンドの開発を行っています。
( https://yamap.com をみていただければと〜)

最近、ちょっと悩んだことがあって、解決できたので、まとめてみました。

## ケース
Node.js と Vue.jsで、共通関数を使いたい・・・

## 問題
Node.jsは、CommonJS 形式 (module.exports / require() )
Vue.js (ブラウザ環境) は、 ES Modules 形式 (export / import ) となるため、
共通関数をES Modules 形式で書くと、Node.js側で怒られるし、かといって、CommonJS 形式で書くと、Vue.js側で怒られる、どっちつかずな状況になります。

Node.jsのバージョン

元記事を表示

【JavaScript】 reduce()について

学校の先生が、一人の生徒のテストの合計を算出するプログラムを作るといったときに、
forやwhileではなくreduce()を使うことでも算出できたので備忘録として記載します。

例えば、テストの点数が
国語:60点
英語:100点
数学:80点
理科:70点
社会:80点
だとします。

これを配列にすると

let points = [60,100,80,80,70,80];

です。

forを使うと

let sum = 0;
for(let i=0; i

元記事を表示

javascriptで配列にオブジェクトをぶち込む方法はこれ以外にないのか

ReactNativeでアプリを作っている最中に思わぬところで詰まりました。
タイトルの通りです。

目標は、

“`js
[ { num1: 1, num2: 1 }, { num1: 2, num2: 2 } … { num1: 100, num2: 100}]
“`
という配列を作ることである。

まずは手打ちでやってみる。

“`js
box = [{},{},…,{}] //100個用意
for(i = 1; i <= 100; i++){ box[i].num1 = i; box[i].num2 = i; } ``` できるが、100個も用意するのはめんどくさい。 ならば、こうしてみよう。 ```js box = [{}*100] ``` しかし、上のコードは``NaN``というエラーが出てしまう。 仕方ない、for文を使おう。 ```js box = [] for(i = 1; i <= 100; i++){ box.push({}); box[i].num1 = i; box[i].num2 = i; } ``

元記事を表示

【AngularJS】ネストしたデータをng-repeatで表示させる

三階層ぐらいにネストしたデータをng-repeatで表示させてみた。

#実装
~~~JavaScript
// データ構造はこんな感じです
data:[
{“id”:1,”name”:”最初の項目”,”status”:1,”created_date”:”2019-01-01 00:00:00″,”updated_date”:”2019-01-01 00:00:00″,
“nest1”:[
{“id”:2,”name”:”説明”,”status”:1,”created_date”:”2019-01-01 00:00:00″,”updated_date”:”2019-01-01 00:00:00″,
“nest2”:[
{“id”:3,”name”:”使い方”,”status”:1,”created_date”:”2019-01-01 00:00:00″,”updated_date”:”2019-01-01 00:00:00″
}]
}]
},
{…},
{…}
]
~~~

~~~index.html

元記事を表示

Vue.js の inheritAttrs に関する大きな勘違い

# はじめに

Vue コンポーネントには `inheritAttrs` というディレクティブがあります。

– [API — Vue.js #inheritAttrs](https://jp.vuejs.org/v2/api/index.html#inheritAttrs)

直訳すると **「属性を引き継ぐ」**。

まず簡単な例を示します。[Vuetify.js](https://vuetifyjs.com/ja/) の [v-btn](https://vuetifyjs.com/ja/components/buttons) をラップしたボタンを作ってみましょう。

– クリックすると消滅する `DismissibleButton` を作ります。
– 消滅するまでの時間をミリ秒で `timeout` で指定できるようにします。

“`vue:DismissibleButton.vue