こんにちは、しきゆらです。
今回は、SimpackerというGemを使ってサーバ・フロント両方が良しなに動いてくれる環境を整えていきます。
今回はWSL2環境にUbuntuを入れ、そこで動かすことを想定しています。
手を動かした記録
こんにちは、しきゆらです。
今回は、SimpackerというGemを使ってサーバ・フロント両方が良しなに動いてくれる環境を整えていきます。
今回はWSL2環境にUbuntuを入れ、そこで動かすことを想定しています。
こんにちは、しきゆらです。
今回は、DOMに対してクラス名を外す処理とつける処理を1行でやる方法を知ったのでメモしておきます。
DOMに対してクラスを追加・削除するには、それぞれadd/removeというメソッドが定義されています。
これらを使えば、動的にDOMのクラスを変更することができます。
しかし、例えば既存のAというクラスを外してBというクラスをつける
という処理を書く場合、素直に書くならば以下のように2行になってしまいます。
dom.classList.remove('A'); dom.classList.add('B');
上記のようなコードを1行で書くには、以下の方法で行えます。
dom.classList.replace('A', 'B');
replace( oldClass, newClass )
既存のクラスを新しいクラスで置き換えます。
Element.classList – MDN
MDNを眺めていて見つけました。
知っていなくてもなんとかなるけど、知っているとコードがスッキリするやつですね。
知っているつもりでも、改めて見てみると知らないことがあるので、時々見てみるといいかもしれません。
今回は、DOMの追加・削除を1行で行うメソッドを発見したのでメモしてみました。
置き換えるという方法でできる処理は1行で書けるので、知っていると少しだけコードが短くなると思います。
今回は、ここまで。
おわり
こんにちは、しきゆらです。
今回は、以前に少しだけ触れたparcelを使って開発環境を構築してみました。
また、個人的に以前まで疑問だった、JSとSCSSを用いた場合にどう管理するのか問題を解決することができたので合わせてメモしておきます。
parcelに関しては、以前少しだけ記事にしたことがありました。
=> 以前の記事:【JS】フロントエンド界隈で話題のparcelことはじめ
以前まではWebpackを利用していましたが、難解な設定や多様なプラグイン等、気軽に使うにはハードルが高い状況でした。
そんな中で、parcelは面倒で難解な設定ファイルを作成せずとも、自動で関連するファイルを監視し、変更があれば適宜処理を走らせてくれます。
そんなparcelさんですが、実際にparcelを使ったものづくりをするときにどうすればいいのかわからない部分がありました。
それは、SCSSを使った場合の読み込み方です。
HTMLからSCSSを読み込んでも、ブラウザは反映してくれません。
それをどう読み込めるようにするのかが疑問でした。
これを解決することができたので、合わせて記録しておきます。
こんにちは、しきゆらです。
今回は、electron-builderというものを触ってみます。
私は、よく使うサイトをElectronアプリとして書き出して使っています。
ビルドはelectron-packagerというものを使い、時々Electronをビルドしていました。
先日久々にビルドしていると、エラーが出て動かなくなっていました。
正直、NodeやElectronについてはにわか程度の知識しかなく、更新情報なども追えているわけではありませんでした。
調べてみると、electron-builderというものもあるということで、今回はこっちの方を使ってみました。
簡単ではありますが、記録として残しておきます。
といっても、参考サイトをほぼそのままやっただけ。
参考サイトは以下です。
electron-builderでElectronアプリのビルド
最近のフロントエンドは、様々なツールやフレームワーク、ライブラリ等を利用し、
いろいろなものを組み合わせてコーディングしているようです。
こうなってくると、細かいファイルが沢山生成されていきますね。
それぞれの管理をどうするのか、というと細かいファイルをガッチャンコとまとめてくれるツールを利用するわけですね。
今回触るparcelもがっちゃんこしてくれるツールの一つです。
公式サイト
特徴といえば、設定ファイルがないこと。
Webpackは便利で情報も多く、導入している方も多いかと思いますが、設定ファイルを作るのが、なんとも面倒。
parcelさんは、そんな面倒さをなんとかしてくれるかもしれない救世主となるのか。
ということで、今回はparcelを導入し実際に実行してみて便利さを味わっていきます。
こんにちは、しきゆらです。
台風の影響で天気が悪いですね。
それに伴い、やる気もどこかに飛んでいってしまいました。悲しい。
以前、JSで特定の要素のみを前/後ろにまとめる記事を書きました。
【JS】特定のものを前/後ろにソートする
この後、色んなサイトを眺めていると、よりきれいに書く方法を知ったのでメモしておきます。
眺めたサイトは以下。
JSのsortに渡す関数は、正負もしくは0を返すことでソートしてくれます。
これを生かして、より簡単に各方法を示してくれていました。
今までは、以下のように愚直に分岐させていました。
function(item1, item2){ if(item1 < item2) return -1; else if(item1 > item2) return 1; else return 0; }
しかし、比較するものを計算して、その結果を返す関数を渡しても良いとのことでした。
例えば以下のような感じ。
array = [1,2,3,4,5]; array.sort(function(item1, item2) { return item1 - item2; });
item1とitem2にはarrayの中にある数が渡されてきます。
この2つを計算し、その結果をそのまま返してしまうのです。
パッと見はよくわかりませんが、計算の結果は以下のようになるはずです。
このようになり、きちんとソートしてくれるわけですね。
これは、目からウロコでした。
条件式で記述すると3行は使う内容ですが、引き算で表現すると1行で済んでしまいますね。
正直パっと見てわからないと思うので
可読性を取るか、記述量を取るか、という状況かな、と思います。
なお、以前の記事を今回の方法で書き換えるとするとこうなると思います。
array = [1,2,3,4,5,6,7,8,9]; array.sort((item1, item2) => { return 3 - item1; }); // => [3, 4, 5, 6, 7, 8, 9, 2, 1]
このようにすると
となり、想定通りの動きをしてくれます。
今回はここまで。
おわり。
こんにちは、しきゆらです。
最近、怖いと思っていたライブラリやフレームワークは、使ってみると大したことないということに気づき始めました。
Reactさんもその一つです。
基本的なReactの環境構築や使い方をまとめようと思っていますが、今回はちょっとしたメモです。
Webpack、Babelを使ってES6をトランスパイルするという状況です。
Reactでstateを変更するときにお世話になる関数であるsetState。
この間、stateを変更すべくsetStateを実行していたら「Uncaught TypeError: this.setState is not a function」とエラーが・・・。
コードはこんな感じでした。
import SubComponent from './SubComponent'; class MainComponent extends React.Component { constructor(props) { super(props); this.state = { data: props.data, } } updateState(data) { this.setState({ data, }) } render(){ return( <SubComponent updateState={this.updateState} /> ); } }
Mainの方のデータをSubから更新しようとしています。
このとき、上記のようなエラーが起こりました。
原因は「this.updateState」のthisがundefinedになることが問題のようです。
対策としては、classで定義する場合constructor内でbindしないと行けないようです。
constructor(){ super(props); this.state = { data: props.data } this.updateState = this.updateState.bind(this); // <= これが重要 }
これでエラーが出ずに更新できるはずです。
わかってしまえば案外簡単ですが、そうでないと無駄に時間がかかってしまいますよね。
今回はここまで。
おわり
こんにちは、しきゆらです。
今回は、JSのソート時に特定の要素だけを前/後ろにソートする方法をメモしておきます。
・・・お前は何を言っているんだ?
と思われるかもしれませんが、たとえば以下のようにしたい、というのが今回の話。
array = [1,2,3,4,5]; //↓ array.sort() //=> [3,4,5,1,2]
特定の条件に合ったものだけを配列の前/後ろに回してほしいということです。
普通であればfilterとかで分けた後にconcatするのかもしれませんが、
今回はソートだけでなんとかしてみよう、という内容です。
こんにちは、しきゆらです。
前々回から、Raspiを使ったダッシュボードを作ろうとしています。
今回は、クライアントサイドの方で使いたいと思っているReactさんと戯れていこうと思います。
環境構築から、簡単な触り方までを見ていきます。
こんにちは、しきゆらです。
前回、Raspiを使ってダッシュボードのようなものを作りたいということで準備をしていました。
そこからかなり間が空いてしまいました。
さっくりと作ろうとしている環境をメモしつつゆっくり進めていこうと思います。
ということで、今回は開発のための環境づくりとしてフロントエンドでよく使われるWebpackを使って見ようと思います。