.wpress の解凍で学ぶ npm と npx の違い

JavaScript 系でよく使われる npm と npx の違いがピンときていなかった。

よく以下のように説明されている。

npxとはエヌピーエックスと読み、Node Package eXecutor の略語であり、Node.jsパッケージの実行を一時的に行うためのコマンドラインツールです。
簡単に言えば、使いたいパッケージをインストール + 実行 + アンインストールをまとめて行います。
つまり、一時的にパッケージを利用でき、使用後はプログラムが残りません。npmとは違い作業環境を汚さずに利用できる便利なコマンドとなっています。

これを初見で理解できる人はそうはいないような?

私の場合、.wpress (WordPress プラグイン All-in-one-Wp-Migration がワードプレスサイトをインポート/エクスポートするために生成するファイル形式)を解凍する際に npx コマンドを使うケースがあったので、ようやく得心した。

npx wpress-extract filename.wpress

とすると、npx wpress-extract があたかもコマンドラインツールのように .wpress を解凍してくれます。

元々は JavaScript なはずなのに小癪な (^^;)

ところで All-in-one-Wp-Migration の評判が微妙なのは
「WordPress サイトの引越しにはAll-in-one-Wp-Migration プラグインを使え」
ばかりで、この手の情報が流通していないからではないかと思ったりする。

実用的な All-in-one-Wp-Migration の使い方

評判がいいようなので追記。

ある程度のサイトの場合、All-in-one-Wp-Migration を使ったとしてもファイルサイズは数百メガになり、大抵のレンタルサーバーでは、アップロードサイズ上限のためこれを一気にアップロードすることはできない。

で、有償版を購入・・・となる流れなんだが、待ってほしい。

上で書いたように .wpress は npx をうまく使うことでローカル環境で解凍可能だ。だから、

解凍後、必要なファイルのみ FTP などでアップロードした方が現実的

ではないかと思う。

なお、記事内容は database.sql というファイルに入っています。

 

 

Vue で書かれた editor

へえ、こんなのあるんだ。

Vue で書かれているなら、Nuxt.js でも使えるってことだよなあ。

Tiptap』というのが公式サイトのようです。

新型コロナ対策サイトとフロントエンド開発

新型コロナ対策サイトが大賑わいだが、うまく使いこなせていないグループもあるような・・・。

なにしろ開発に使っているのが Nuxt.js だからなー。

初学者には敷居高いと思う。

Nuxt.js は、拡張子?の js からわかるように JavaScript をベースにしている。

JavaScript というと「ブラウザに動きを与えるためのスクリプト系の言語」という認識で止まっている人は多い。

もちろんブラウザ環境でしか動かないならば、ウェブアプリなぞ作れるわけがない。

少々齧ったことある人なら、「知ってる知ってる、サーバーサイド JavaScript 使っているんだよね」といった反応が返ってきたりもするんだろうが、それだけで例えばコロナ対策サイトを改変できるかというとできないと思う。

現在のフロントエンド開発は、一昔前とは景色が違う

原理的な理解・習得の難しさという観点から見れば、Java や C++ あたりを習得する方がよほど難しいと思うが、違う、違うんだよ、フロントの難しさは。

歴史的に見れば、実行環境、言語自体の洗練化、ライブラリ、フレームワーク・・といったパーツが、割と統一感なく進化してしまったが故に、全体の把握をしにくくなっているのだ。

私としては、やる気のある人はこれを機会に node あたりから入ってほしいなと思うのだった。

 

(追記)

この当時書き溜めていたメモなどをまとめて AXIA というサイトで記事化しました。

イマドキのフロントエンド開発』初学者向けとは思いませんが、手を動かして覚えるならば、それなりに役にたつと思います。

JavaScript の module や class の話』上の記事よりこっちを先に読んだ方がいいかも。まず、ローカルマシンで JavaScript が動くことを実感してほしい。
話はそれから(笑)。

 

妻僕。さんに聞いてみました

当サイトを作るうえでかなりの部分を『妻と僕。』さんのサイトを参考にさせてもらった。

なかでも感心したのは

レスポンシブ対応!幅が比率指定のサイドバーを下端で追従させる方法-WordPress(Twenty Seventeen)

であった。

当サイトの記事ページをスクロールするとサイドバーがいっしょについてくると思うが、その機能を実現させる方法が簡潔にまとまっている。

いたく感心した私は、

これ、他のページにも使えない?

とよからぬことを思い、ちょっと試してみた。(よせばいいのに…)

どうやって、この機能を実現しているか細かいところまでは読み取れない私は、それでも無い知恵をしぼってコードを眺めていた。


下記コードをコピーして、header.phpのheadタグ内にある<?php wp_head(); ?>の下へ貼り付けます。

ふむ。

<?php if ( is_single() ) : ?>
<script>
jQuery(window).on( "load scroll resize" , function(){
	//画面幅の取得とサイドバー有無の境界幅を入力
	var w = window.innerWidth /*スクロールバー込みの画面幅*/ 
	var x = 768; /*サイドバー有無の境界幅*/
	//サイドバーがある場合に適用
	if (w >= x) {
		//各要素の高さを取得 
		var windowH = jQuery(window).height(); /*表示画面の高さ*/ 
		var pageH = jQuery('#page').height(); /*表示ページの高さ*/ 
		var headerH = jQuery('#masthead').outerHeight( true ); /*ヘッダーの高さ*/ 
		var mainH = jQuery('#primary').outerHeight( true ); /*記事の高さ*/ 
		var sideH = jQuery('#secondary-child').outerHeight( true ); /*サイドバーの高さ*/ 
		var footerH = jQuery('#colophon').outerHeight( true ); /*フッターの高さ*/ 
		var paddingH = jQuery('#content').outerHeight( true ) - jQuery('#content').height(); /*余白の高さ*/ 
		//サイドバーの固定と解除条件を計算 
		var viewSide = headerH + paddingH + sideH ; /*ページトップからサイドバー下端までの高さ*/ 
		var fixedSide = viewSide - windowH ; /*サイドバーを固定するスクロール高さ*/ 
		var scrollBottom = pageH - windowH - footerH ; /*フッターが画面に表示されるスクロール高さ*/ 
		//スクロール値を取得 
		var scrollTop = jQuery(this).scrollTop();
		//記事がサイドバーより長い場合に適用
		if( mainH > sideH ) {
			//サイドバー下端までスクロールしたらサイドバー下端で追従
			if( scrollTop > fixedSide ) {
				jQuery('#secondary-child').addClass('fixed-side'); /*サイドバー固定のクラス付与*/ 
				//サイドバー固定時のサイドバー幅を計算
				var secondaryW = jQuery( "#wrap" ).width() - jQuery( "#primary" ).outerWidth( true );
				jQuery( "#secondary-child" ).css('width', ''); /*サイドバー幅リセット*/
				jQuery( "#secondary-child" ).css( "width" , secondaryW ); /*計算したサイドバー幅を付与*/
			}else{
				//条件から外れたら固定クラスを削除し幅をリセット
				jQuery('#secondary-child').removeClass('fixed-side'); /*サイドバー固定のクラス削除*/
				jQuery( "#secondary-child" ).css('width', ''); /*サイドバー幅リセット*/
			}
			//フッターまでスクロールしたらサイドバー下端をフッター上端に連結
			if( scrollTop > scrollBottom){
				jQuery('#secondary-child').removeClass('fixed-side');
				jQuery('#secondary-child').addClass('bottom-side');
			}else{
				//条件から外れたらクラスを削除
				jQuery('#secondary-child').removeClass('bottom-side');
			}
		}
	} else {
		//サイドバーがない場合に適用
		jQuery( "#secondary-child" ).css('width', ''); /*サイドバー幅リセット*/
	}
});
</script>
<?php endif; ?>

もちろん、このロジックは追えない。
だが、先頭の php if ( is_single() ) から察するに、これは「これから表示するコンテンツが single なら、script 以下のコードを実行せよ」ということをやっているのだろうと推論した。いや、そうに違いない。女の感だ。

ならば、例えば、アーカイブページでこの機能を実現したいならば、

php if ( is_single() || is_archive() )

というズルをすればなんとかなるのではと考えた。

果たして…

この状態から

スクロールすると…

 

ごくり…

 

動いたっーーー!!

 

が、なぜか文字が縦………。

 

秋葉ちゃん

axia
コノヤロ

 




どこを直していいかわからないので妻僕。さんに聞きにいく(詳細はそちらのコメント欄参照)。

「今のままでは、サイドバーの幅 = 0 になっているので、 archive.php にも手を入れ、id を付与しなさい」

というようなことを言われる。

すると…

 

おおー、できました。

さすが、本家。

ついでに is_search() も効かせるようにしました。

AXIA

 

にほんブログ村 ネットブログ ネット生活へ

highlight.js を使う

前々からワードプレス上でソースコードを貼り付けるのをどうしようか悩んでいたのだが、重いプラグインに見切りをつけ JavaScript である highlight.js を導入した。こんな感じなる。

cd ..

html や css でちょっと使う程度なので、こんなもので十分。問題は、余白が微妙にグレイになっていること記事背景を濃くすれば、この部分は透過して目立たないが、背景ピュアホワイト #fff だと、ちょっとやぼったいグレイが出現する完全に透過してくれてないわけですね
ちょっとしたことだが、気になる~ (;´Д`)

→この問題は、pre 要素に色の属性を与えることで解決。例えば style.css に以下のコードを加える。

pre {
  background-color: #fff;
}

lang = “css” と指定しているのに、なんで、こういう配色になるかは不明だが…。