- 1. ReactJS での条件付レンダリングをシンプルにしてみせて差し上げましょう
- 2. 循环js中的object
- 3. 対戦ゲームを作る。
- 4. [Rails]JavaScript(jQuery)を使ったアコーディオンメニュー
- 5. let と const を使い分けよう
- 6. Bootstrap : モーダルを連続で開けない
- 7. 遊び: コピペ禁止解除とQiitaのShadow DOMのCSSの上書き
- 8. javascriptで作る〇✕ゲーム
- 9. 【LINE bot】GASで家計簿作った
- 10. メモ:JavaScriptでダークモードの切り替えを検知する
- 11. コーディングについて~実装編①~
- 12. 配列をそのままターミナルに表示するためには
- 13. ContentfulからMarkdown内に使用できるGatsbyの独自コンポーネント内の画像も最適化する
- 14. FullCalendar React+TypeScript Example Projectを関数コンポーネントで書いてみる 03
- 15. JavaScript の即時関数さんてさ?
- 16. Vue.jsで環境変数を超簡単に切り替える
- 17. async と await のまとめ(apiを後回しにするパターン例)
- 18. Backlogの課題にScrapboxでメモするためのブックマークレット
- 19. 初心者のための静的サイト・ジェネレーター・ガイド①
- 20. [Rails]ローディング(ロード画面)の実装
ReactJS での条件付レンダリングをシンプルにしてみせて差し上げましょう
# 条件が真のときだけ描画する
[Simplify condition rendering in React.js ~ DEV Community ~](https://dev.to/ornio/simplify-condition-rendering-in-react-js-33l8)
という記事で、条件が真のときだけ子ノードを描画するコンポーネントが紹介されています。次のようなものです。“`jsx
const IF = ({ condition, children }) => {
if (!condition) return null;
return <>{children}>;
};“`
単純に `return children;` としない理由が僕には分かりません(理由が分かる方教えてください)が、素敵なコンポーネントです!
使用例は次の通りです。“`jsx
“`
パッと見て分かりやすい!いやぁ、シンプルで
循环js中的object
for(var propt in obj){
console.log(obj[propt]);
console.log(propt);
//obj[propt].toString().includes(ContainsValue)
}
対戦ゲームを作る。
#概要
対戦ゲームを作る。
構想編。#方針
アプリの保管場所は、plunker
サーバーは、enebularでnode-redでherokuapp
プロトコルは、websocket
フロントは、vue
エンジンは、tateno
ゲームは、オセロ。#役割
|機能|クライアントアプリ|サーバーアプリ|
|:–|:–|:–|
|クリックを検出して、指せるか確認して、データを送る。|○|×|
|データを受信して、指せるか確認して、置く。|○|×|
|終了を確認する。|○|×|
|通信|×|○|#やらない事
– 何人ログインしてるか。
– 勝ち負けの判定。#通信データ
jsonです。
id: ユニークなIDを持ちます。
state: 現在の状態を指します。待機中、ゲーム中、終了など。
data: 8*8の盤の状態と次の一手。“`
{ id: 1234, state: 0, data: [] }
“`#クライアントAとB、サーバーSの通信イメージ
イべント
– Aがlogin
– Bがlogin
– Aが先手を打つ
– Bが打つ“`pla
[Rails]JavaScript(jQuery)を使ったアコーディオンメニュー
今回はクリックしたら開閉できるアコーディオンメニューの実装をしていきます。
メニューの中身は最初隠していて、クリックで出てきて、しまうとまた隠れるので、色々なところで使える便利な機能です。完成イメージはこちらです。
![スクリーンショット 2021-07-14 9.36.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1554142/876e5a78-9cea-e05b-507d-878f6e14d0f9.png)
画像なので動きがないので、確認したい方は、ぼくの[ポートフォリオ](https://oogiri-legendroad.com/homes/guide)を確認してみてください。
下部のQ&Aが同じ手順で実装しています。それではいってみましょう!
#開発環境
> ruby 2.6.3
> Rails 5.2.6#前提
– jQueryが使える状態
– homes/topビューで実装していきます
– Bootstrapのcardを使っています(別にcardじゃなくても問
let と const を使い分けよう
▪️ letとは
今後変わる予定の値に定義する場合に使う▪️ constとは
今後変わる予定のない値に定義する場合に使うletとconstはこのような違いがありますが、結論どちらを使っても処理は変わりません。では、なぜletとconstを使い分けなければいけないのか?
これには明確の理由があります。”一人でコードを書く際はletとconstを使い分ける必要はありませんが、企業に属した場合チームで開発することは避けて通れません。”
そこでコードを書く際にletだけで統一したり、constでけで統一してコードを書くと他の人が見たときにこれは今後変更する値なのか、変更しない値なのか瞬時に読み取れません。だから、他の人が瞬時に読み取れるようにするためにもletとconstは使い分ける必要があります。▪️ おまけ
varという定義もありますが、あまり使わない定義なので覚えなくても良いそうです。
Bootstrap : モーダルを連続で開けない
## 現象
Bootstrap を使って複数のモーダルを連続で開いたときに
2つ目以降のモーダルがスクロールできなくなりました。“`html:NGコード(全文)
遊び: コピペ禁止解除とQiitaのShadow DOMのCSSの上書き
# 前書き
- 痒い所に手を届けたい派なので、不満があったらちょくちょく`Script`を書いています。今回はその一部を記載。
- `TypeScript`依存症なので`TypeScript`で書いていますが、トランスパイル後の`JavaScript`ソースも記載。
(拡張機能上でちょっとした修正を行いたいときがあるので、`Minify`はしておりません)- 筆者は以下の`Chrome`拡張機能を常用。
[ScriptAutoRunner](https://chrome.google.com/webstore/detail/scriptautorunner/gpgjofmpmjjopcogjgdldidobhmjmdbm): Webサイトを訪れた時、任意の`JavaScript`を自動実行
[Stylus](https://chrome.google.com/webstore/detail/stylus/clngdbkpkpeebahjckkjfobafhncgmne): Webサイトに任意の`CSS`を適用
# ソース
## コピペ禁止解除
- 大抵これでコ
javascriptで作る〇✕ゲーム
##はじめに
最近、javascriptを学ぶ機会があり簡単なアプリを開発したいと思いました。
そこで、〇✕ゲームを開発しようと考え今回に至ります。
これを作ることができれば、友達との対戦が可能になるので是非見てください!!##〇✕ゲームとは?
3×3 の格子を用意し、二人が交互に「○」と「×」を書き込んでいき3つ並べるゲームのこと。##コード
###javascriptのコード```
var turn = '×';
function clickHear(e){
if (turn == '○') {
turn = '×';
e.textContent = turn;
} else {
turn = '○'
e.textContent = turn;
}
}
【LINE bot】GASで家計簿作った
GASでLINEのbotを作れると知ったので、GASやjavascに触ってみたくて作った。
#やったこと
- LINEビジネスアカウントを作成、LINEアカウントを開設
- GASでグーグルスプレッドシートと連携開設方法、接続方法は下記サイトをそのまま参考にしました。
参考:[LINE BOTの作り方とは?Messaging APIを利用した作成法3選|Udemy メディア](https://udemy.benesse.co.jp/development/app/line-bot-making.html "LINE BOTの作り方とは?Messaging APIを利用した作成法3選|Udemy メディア")#アカウントの画面
|![IMG_9204.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/689250/f420c08f-e95c-7896-8bb9-833191f511ee.jpeg)
|:--:|※アカウントを削除後に送信したメッセージには、既読がついていない
※メッセージの
メモ:JavaScriptでダークモードの切り替えを検知する
```JavaScript
window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change",function(event){
if (event.matches) {
//ダークモード
} else {
//ライトモード
}
});
```
コーディングについて~実装編①~
前回の命名編に引き続き、実装面に関しても勉強した内容を備忘録としてまとめます。
# はじめに
本記事はJavaScriptをベースに作成しています。# 変数の定義
基本的にconstを使いましょう。
過去に書いたコードを振り返ってみると、letではなくconstでよかった変数がいくつもあります。constでは処理できない場合にletを使いましょう。
簡単にはイテレータ変数やフラグなどです。varはどうしても必要な場合のみ使いましょう。
ちなみにですが、今のところどうしても必要になったことはありません。```Javascript
// OK
const test = "test";
// 状況に応じてOK
let test = "test";
// 基本的にNG
var test = "test";
```# 変数の使い回し
これはNGです、新たに変数を定義しましょう。
使い回してはいけない理由として* 変数の生存期間が長くなる
* 影響範囲が広くなる
* デバッグが難しくなるなど様々です。
constで定義することで防止することができます。# fore
配列をそのままターミナルに表示するためには
配列`numbers = [1, 3, 5]`を
そのままターミナルに出力させようとしたが表示されないので、
間違えていた部分をまとめました。文字列か否かを、頭の中で整理できていない時があるので注意したいと思います。
**誤①**
``` .rb
numbers = [1, 3, 5]
puts numbers
```
(出力)```
1
3
5
```
**誤②**
```.rb
numbers = [1, 3, 5]
puts "numbers"
```(出力)
```
numbers
```
**正**
```.ruby
numbers = [1, 3, 5]
puts "numbers" + numbers.to_s
```
(出力)```
numbers[1, 3, 5]
```
ContentfulからMarkdown内に使用できるGatsbyの独自コンポーネント内の画像も最適化する
# はじめに
こんにちは。東京五輪のチケットは入場不可に伴い、自動払い戻しになった模様です、筆者です :innocent:さて、前回以下記事で**Gatsby**の独自コンポーネントを作成したのですが、画像に対して最適化をするべく、**gatsby-plugin-image**を挟むことができませんでした。
https://qiita.com/akitkat/items/58332b972aac6145de80
今回はそれを対応していこうと思います!
結構これ系の記事が少なかったので、今後作成する方に参考になれば幸いです :smile:もし当記事が役に立ったら、**LGTM**ください! :pray:
# 方針
1. プラグインのインストール.
2. gatsby-config.js編集.
3. 記事内から独自コンポーネント箇所を抽出.
4. 2から画像URLを取得.
5. 3のファイルノード生成.
6. 2-4の処理を`gatsby-node.js`に取り込む.
7. 独自コンポーネント作成.
8. 独自コンポーネント内で4を取得.
9. 5を基に`gatsby-pl
FullCalendar React+TypeScript Example Projectを関数コンポーネントで書いてみる 03
FullCalendar公式の「[FullCalendar React+TypeScript Example Project](https://github.com/fullcalendar/fullcalendar-example-projects/tree/2fb4a584a04684b1c3c7e77920fd2d0a8c6b0da0/react-typescript)」を関数コンポーネントで書き替えるチュートリアルの最終回は、カレンダーの左側にパネルを差し込み、さらに公式作例にない機能も加えます。でき上がりはCodeSandboxに公開したつぎのサンプル001でお確かめください。
#### サンプル001■React + TypeScript + FullCalendar: Example calendar 03
[![2107003_006.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/128949/55bf3de5-0dbc-2b8f-857d-1825e52d8726.png)
\>>
JavaScript の即時関数さんてさ?
## 即時関数とは
即時関数について知らない方はググって知識を得てからいかに進んでくださいm(_ _)m## 文が書けるとこでは即時関数の出番は減る
JavaScript には、「文(statement)」と「式(expression」という概念があります。それを知らずにプログラミングするということは、冬に富士山頂上を目指すようなものですから(?)、ググって知識を得てからいかに進んでくださいm(_ _)mさて、ここまで進んでこられた皆さんにすればどうということもない話であると思いますが、ブロック文を使えば、即時関数の出番は減ります。
```js
let c = 0;
{
const a = 1;
const b = 2;
let c = a + b;
}
console.log(c); // 0```
つまり、変数のスコープを狭めるだけの目的でわざわざ即時関数を使う種族は絶滅したはずである、ということです。
## 文が書けない場所
JavaScript には、「式」しか書けない場所というものがあります。
有名なところでは、React などの jsx 内の
Vue.jsで環境変数を超簡単に切り替える
# 環境変数
本番環境、検証環境、開発環境の複数環境を作成したときにAPIの向き先を変えたりする必要がある。その都度ベタがきのコードを改修してfirebase,AWSにデプロイするなんていうのは嫌ですよね?
また、中にはビルド時に秘密にしたい秘密情報が必要な場合があります。そういったものをデプロイ・ローカルホストの起動時だけ利用できるように設定する簡単な方法がVue.jsには用意されています。## 環境変数の切り替え
環境変数の切り替えをローカル上での起動とビルド時にできるようにするための7ステップを紹介します。###1 .env.\*\*\* に変数を追加する
VUE_APP_\*\*\*をプレフィックスにして変数名を定義
例 : http://hogehoge を develop に登録する場合
``` .env.develop
VUE_APP_API_DOMAIN = http://hogehoge
```###2 .env.\*\*\* に登録した環境変数を利用する
process.env.\*\*\* で利用したいところから呼び出す
記入例
```
async と await のまとめ(apiを後回しにするパターン例)
##async と await を使うとき、よくあるのが、apiを後回しにするパターンだと思う。
たとえば、下記のようなことがやりたいとする。
1.api以外の処理をする
2.画面を表示
3.apiで値をとってくる
4.とってきた値をいい感じに変更したりする
5.画面に反映##もしこれを順番に書いてしまうと、こうなる。
apiが終わるまで画面が表示できない。。```node.js
let tmp1 = sample()
console.log(tmp1)let tmp2 = samAsync()
console.log(tmp2)console.log("画面表示!!")
function sample(){//api以外の処理
return "api以外の処理"
}function samAsync(){//apiの値を操作する処理
console.log(samAwait())
return "apiの値を操作する処理(画面に反映)"
}function samAwait(){//apiの処理
return "api
Backlogの課題にScrapboxでメモするためのブックマークレット
# 概要
各チケットの雑多なメモをScrapboxで書いている。
タイトルや引用を毎回書くのは大変なので、ブックマークレット化したものを使い続けている。# 手順
1. 下記をブックマーク登録のURL欄に貼り、`proj-name`をScrapbox側に合わせて変更
1. 課題のページにてブックマークを実行```js:Backlog => Scrapbox
javascript:(function(){
var PROJ_NAME = 'proj-name';
var getElement = function(className) {
var element = document.getElementsByClassName(className)[0];
return element ? element.textContent : null;
};
var keyNumber = getElement("ticket__key-number");
var titleText = get
初心者のための静的サイト・ジェネレーター・ガイド①
今回からは、色んな種類がある静的サイトジェネレーターについて
それぞれご紹介していきたいと思います:mega:静的サイトの世界は、HTMLやCSS、時にはJSを超えて発展していますが、静的サイトジェネレーターの進歩がこのことに大きく貢献しています。
著者:Thom Krupa@thomkrupa 2020年11月18日
原文:https://bejamas.io/blog/static-site-generators/![1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1242415/6a29fb29-48e3-ec26-811b-696ae1f8d531.jpeg)
急速に進化しているJamstackのエコシステムと静的サイトジェネレーターは、そのアプローチとツールに大きな関心が寄せられています。まだ主流にはなっていませんが、VCがこの分野の企業への投資を競うことで、より広く普及する道が開かれるのは確かです。
静的サイトジェネレーターを使用することの利点は、スピード、セキュリティ、スケ
[Rails]ローディング(ロード画面)の実装
おしゃれなサイトはローディングをよく実装していますので、今回はポートフォリオにて実装してみました。
思ったよりかんたんに実装できて、サイト全体の雰囲気がアップするのでおすすめです!
参考にしたサイトは以下で、「1.【サンプル】ローディング(テキストだけでふわっと)」をRailsのアプリケーションに落とし込んで解説していきます。
[【jQuery】 ローディング、実装サンプル集](https://125naroom.com/web/3835)#開発環境
> ruby 2.6.3
> Rails 5.2.6#実装方法
今回はHTMl,CSS,JavaScriptを使ってローディングを実装していきます。
ではいってみましょう〜!#ビュー
まずはビューから、このビューのid名、class名に対してCSSやJavaScriptをあてていきます。今回はhomes/topで実装。
`1番上の行`から記述していってください。
```erb:views/homes/top.html.erb
関連する記事
OTHERカテゴリの最新記事
- 2024.09.19
JavaScript関連のことを調べてみた
- 2024.09.19
JAVA関連のことを調べてみた
- 2024.09.19
iOS関連のことを調べてみた
- 2024.09.19
Rails関連のことを調べてみた
- 2024.09.19
Lambda関連のことを調べてみた
- 2024.09.19
Python関連のことを調べてみた