【node.js】サーバサイドjavascript 5【Nashorn】
var that=this
先輩がよく書くこれが何の事か理解するのに半年かかった。 >>250
またRails語の布教してるの?
次世代言語スレで叩かれて学習しただろう? クラスのコンストラクタでasync await使えるようになってほしい >>252
x Rails語の布教
〇 掌田津耶乃の宣伝 Promiseの再帰について質問です
やりたいことは、フォルダの中を再帰的に掘って見つけたファイルを配列に入れて返す、です
フォルダの深さやファイル数は不確定です
1フォルダの中身をループでひとつずつ見ていって
ファイル・フォルダか判定し
ファイルなら返す配列に入れる
フォルダなら再帰
返った配列を、返す配列にconcat
とする再帰関数を作れば良いと考えたのですが
この再帰関数自体と、ファイル・フォルダ判定が非同期なので、全部堀り終わったかわかりません
そこでループの中身をまるっとPromiseにして、仮配列に貯めておき
最後にPromise.allで実行する、としているのですが、なんか回りくどい気がします
考え方は正しいでしょうか?
https://jsbin.com/rocebihipo/edit?js あるいは再帰関数内でasync-await使えばいいんじゃない
どっちによ最初の関数が終了するかpromiseがresolveすればそれが完走判定になる
素直にnpmから同じことをやるモジュール拾って使ったほうがいいと思うけど あざます
>>260
同期ならふつうの再帰関数になるので
数が少ないうちはそれでも良いかなと考えてます
>>261
なるほどー files = [ ]
Dir.glob( 'C:/Users/Owner/Documents/**/*.txt' ) do | full_path |
next if File.directory? full_path # ファイルだけを処理する
files.push full_path
end
puts files
Ruby なんて、これだけ。
glob に、** で再帰する。glob star
ただし、. で始まる、directory, file を除く find ./ -name "*.txt"
find なんて、これだけ。 ウインドーズ環境でnode.jsでcon.拡張子 みたいなファイル作ったら消せなくなるな。
いろいろ調べてやってみたが全部のほうほうで消せなかった。
消せなくなる勇気があればやってみてほしい。 管理者でコマンドプロンプト開いて
rd /s "\\?\フォルダ名" visual studio 2017ってnode.jsは自分でダウンロードして
インストールする必要があるの? >>271
VS2017でもnode.js開発できるよ 日本語通じてない感やばない?
VS2017はインストール時にNodeを一緒にインストールするか選べる グローバル空間に、ネームスペースを付けずに、パッケージに
含まれる関数全部を一度に分割代入を使わずにリクワイヤーするにはどうやりますか? Object.assign(global, require('hoge.js')) >>277
ありがとうございます。
リファレンスエラーになってできませんでした。 未だに--saveが必要なくなったことに気がついてない人がいる あの変更はかえって--no-saveする手間が増えて不便だわ >>287
どうしてそう思うのか書いてもらえないと参考にならない。
海外のブログ読んでると、真っ先にyarn移ったような人たちが最近続々とnpmに戻ってきていて、俺にはなぜyarnに移ったのか、そしてなぜnpmに戻ってきたのかサッパリ分からない。 今さら分からない人は分かりたいとも思ってないだろうからどうでもいんじゃね?
npmに戻る人がいるのはnpmがyarnのいいところをどんどん取り入れたからだろう
まともなロックファイル、パフォーマンス、コマンドラインの改善(npx含む)はyarnの後追い
npm独自なのはセキュリティ周りか 良くも悪くも、標準だからだと思うけど。
俺も標準だから戻ったよ。 標準の地位に胡座をかいてシュリンクラップ糞のまま放置してたからyarnに寝首をかかれた
なんでも独占はよくない切磋琢磨が必要 ラズパイでなんかやろうとしたときに全然うまくいかなくて試しにyarnにしたらうまくいった事はあった ほとんどAPI同じだけどstatsじゃなくてdirent実装したのは何でなん? yarnはパッケージマネージャー界のCoffeeScript 個人的な感覚だけど組込み関連でもっと伸びるんじゃないかと思う
最近シリアル通信のプログラムよく書いてるよ node.js は、Ruby on Rails でも必須
Babel, Webpack で、ES2015 を、ES5 へ変換する。
Coffee Script, Type Script は不要
初めてのJavaScript 第3版 ――ES2015以降の最新ウェブ開発、オライリー、2017
Rails プログラマーも、この本を読むのが必須! jsはフロントエンドで排他的な地位を築いてるわけだがwasmで変わるかどうか class使うと冗長的でイヤだな〜
JAVAの人以外に使う人いるのか?
PHPもclass文化が入ってきてから長ったらしくて見にくくなった 昔はReactはclass必須だったけど最近はconstしか使わなくなったな https://electronjs.org/releases/stable
electron のバージョンを確認すると.6.4.1と出るんですが、最新と違います
なにか間違っているでしょうか
npm electron -v
こうやってます >>309
それじゃnpmのバージョンが表示されてるだけ
npm outdated electronとか
npm list electron 仕事じゃなければclass使う機会ないんじゃないの?
もともと第一級言語だし。
JAVAはいちいち面倒なことしてるなって思う。 去年までのreactではライフサイクル扱うのに必須だったからそれなりにclass使ってた
今はhooksで不要になったけど
vuejsでclass使わないのはvuejsのclassサポートの出来が悪いから
webcomponentsではclass使う おっとwebcomponentsではssrしてないからスレチか ちょっと実装の依存関係について質問。
deps配下って、
依存モジュール構築時、node.jsそれ自体に依存しているけど、どうやってビルドしているの?
https://github.com/nodejs/node dockerでwindowsとalpineの間で共有フォルダを作り、windows上のvscodeで作業しています。
作業ファイル(React)をvscodeを通してdocker内でnpm startしローカルホストを立てそれをwindowsのchromeでアクセスしています。
そのとき、ファイルを変更しては保存をしての繰り返しで挙動を逐一チェックしたいのですが、
修正した.jsファイルを更新してもブラウザ上では内容が更新されません。
一度ctrl c を押して停止させてから、再度npm startをして接続すると、ブラウザでも修正内容が更新されます。
ブラウザのキャッシュ削除や、検証モードでdisable cacheにチェックを入れていても同じでした。
dockerを使わないwindowsだけでの作業をしていた時は、ブラウザの更新マークを押すだけで修正内容が反映されていました。
現在、自動でキャッシュを削除してくれるるnodemonを入れて作業しているのですが、
こちらも結局は、ファイルを上書き保存した時点で自動でnpm startを繰り返してくれるだけなので
どうしても時間がかかってしまいます。
上書き保存をし、ブラウザを更新しただけで修正内容が反映される様にするにはどうすればいいでしょうか? nodemonってことはwebpackは起動してない?
hot module replacement(HMR)使うならdockerの中だろうとwebpack通さないと
あとHMRちゃんと設定できてればブラウザのリロードしなくてもファイル保存しただけで変更が反映されるよ
つか画面周りの開発でdocker使っていいことあるか? 初心者ですがWindowsでnode.jsを使いたいのですが
一人で開発する分にはnvm-windowsとnode.jsとvscodeぐらいを入れとけばやれますか?
作ったアプリを配布する際にパッケージの依存関係を何かに表さなければならないと思うのですが、どう抽出して何に記述しますか?
あとBrowserifyって額面どおりのことを本当にやれるんですか?
(たとえばローカルファイルにアクセスしたりソケット通信するようなJavaScriptコードについて ガチの初心者かい
的外れなこと聞くよりnpmとかyarnのチュートリアル探してやった方が意味があるぞ Node.js, VSCode, Babel, Webpack。
他には、VSCode の拡張機能とか、yarn, gulp
タスクランナーは、gulp, npm scripts
PC 内のファイルにアクセスするなら、Electron とか。
VSCode も、Electron 製 なるほどPC内のファイルにアクセスするためのツールなんですね、Electronって。 ファイルにアクセスするだけならnode.js単体でもできる
electronはブラウザとnode.jsを統合したものでHTMLベースのGUIを持ちつつファイルやネットワークを自在に扱える
つまりデスクトップアプリのプラットフォーム Electron は、サーバー側・GUI の両方を、1つにまとめたもの!
V8 は、JavaScript の実行環境
サーバー側は、Node.js + V8。
GUI はブラウザで、Chromium + V8
おおー!
V8 が重複しているから、これを1つにしたら効率的!
つまり、Electron = Node.js + Chromium + V8
だから、Electron アプリは、300MB もあるw >>327
知らないならそんな無理してレスしなくてもいいやろ >>327
なんで>>322みたいなウソつくの?ねぇ!? この変な改行は見覚えあるな
いつもWeb板の質問スレでめちゃくちゃなレスしてるやつかな 違うよ。Rubyガイジっていう、ム板で一番嫌われているキチガイ。 糖質の見本みたいなやつ。医学発展のために献体すべき。 Nodeって、なんでこんなに広がったんだろうな?
たかだかjs如きが たかがJSと蔑まれる要因だった高過ぎる自由度が、ベストプラクティスの集積のお陰ですべてプラスに転化してしまったんだ 古くはunixやcもたかがだしpcもwindowsもたかがだし
たかがtcp/ip、たかがjava、たかがlinux、そんなばっかだぞ 詰まったので質問させてください
WSH(JScript)で書いたスクリプト[run.js]からnode.js[test.js]を実行して結果を標準出力で受け取って表示させると日本語が文字化けします
文字化けしないように受け取るにはどうすればいいか教えてください
[run.js](WSH)test.jsを実行して標準出力で結果を受け取る
var WShell = WScript.CreateObject("WScript.Shell");
a = WShell.Exec("\"C:\\Program Files\\nodejs\\node.exe\" C:\\script\\test.js").StdOut.ReadAll();
WScript.echo(a);//結果の日本語文字化け
WScript.Quit(0);
[test.js](node.js)コマンドプロンプトのdirの結果
var childProcess = require("child_process");
var iconv = require("iconv-lite");
var buffer = childProcess.execSync("dir",
{
timeout: 60 * 1000, // タイムアウト1分
});
console.log(iconv.decode(buffer, "Shift_JIS")); 少なくともブラウザ上で実質唯一の選択肢だったのがブラウザ以外で実用的になったわけだし, 広がる道理としては十分だと思うけどな >>342
ありがとうございます!
CodePageを65001にしても変わらずrun.js実行で文字化けの結果が返ってきます・・・ あ、CodePageじゃなくてchcpです。レジストリからいじってやりました・・・ >>339
process.stdout.write(buffer); >>345
ありがとうございました!最後の行を置き換えたら文字化けせずに表示されました
ずっとハマってたのでちゃんとできて泣きそう聞いてよかった クリップボード内の複数行文字列の、各行の先頭・末尾から、
連続する空白類を除去して、クリップボードに入れる
CreateObject("WScript.Shell").Run "powershell ""gcb | % trim | scb""", 0
WScript.Shell の、Run, Exec は、絶対パスじゃなくても、node みたいなコマンド名で書けるだろ?
例えば上なら、powershell というコマンド名
コマンドプロンプトで、where node と入力すると、パスが通っているだろ?
C:\Program Files\nodejs\node.exe クリップボード内の複数行文字列の、各行の先頭・末尾から、
連続する空白類を除去して、クリップボードに入れる
CreateObject("WScript.Shell").Run "powershell ""gcb | % trim | scb""", 0
WScript.Shell の、Run, Exec は、絶対パスじゃなくても、node みたいなコマンド名で書けるだろ?
例えば上なら、powershell というコマンド名
コマンドプロンプトで、where node と入力すると、パスが通っているだろ?
C:\Program Files\nodejs\node.exe そのやり取り見てふと探してみたけどNodeから扱えるクリップボード監視APIorモジュールってないんだな
単なるコピペなら見つかったけど