【node.js】サーバサイドjavascript 5【Nashorn】
ちょっと実装の依存関係について質問。 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モジュールってないんだな 単なるコピペなら見つかったけど node.jsでローカルのクリップボード操作ってどうしてる? java使ったりFlash使ったりは見つかるけどいまいち npm startをしたところ Something is already running on port 3000. Probably: Would you like to run the app on another port instead? と表示されNoを選択したところローカルで立ち上がりませんでした。 (先にport3000を閉じたくてNoを選んだのですが) 既にport3000が立ち上がっているのが原因かと思うのですが port3000のローカルを閉じるにはどうすればいいのでしょうか? 通常ですとctrl cで閉じれると思うのですが、 気づいたらそのフォルダごと消えていて、でもport3000は更新しても立ち上がったままになっていまして。 フォルダの方は練習用だったので消えても良いのですが 今後のためにport3000を閉じるコマンドを教えて頂けないでしょうか netstat -a -n | grep 3000 >>355 こういったコマンドがあったのですね・・・ 関連コマンドも調べてみて勉強になりました ありがとうございます! prompt系モジュールでtimeout実装したのって無いの? 探したけどinguirerがプラグインで追加できるくらいしか見つからなかった >>358 Promise.race()でタイマーと組み合わせればいい 全く初心者です。 Node.js と nuxt.jsってどうちがうの? Node.js は、Electron, Ruby on Rails でも使う、すべてのweb 系の基礎。 絶対に、インストールして使うもの パッケージマネージャーのnpm/yarn も使う。 Webpack, Babel なども Nuxt.js は、Vue.js をより効果的に使うためのライブラリ JavaScript のサーバー側は、Node.js で、 クライアント側は、jQuery, Vue.js, React など 初めてwebpackでサンプルをビルドした新参ですが、node moduleからbrowser.jsっていうのが組み込まれているようです これって何をするものなんでしょうか? browser.js は、babelで変換せずに、ES6で書いたJSを、ブラウザで実行する Not intended for serious use Compiling in the browser has a fairly limited use case... まあ、実験用 詳しくは「browser.js」で検索して! >>366 有り難うございます ES6で書かなければ必要ないものが組み込まれちゃうって事なんでしょうか? 自分のコードが大丈夫でも使用したmoduleがES6の可能性あるとかなのかな とりあえず気にしない事にします VSCode では、普通にES6 でも動くから、気にした事がない それが他人のプロジェクトなら、その設定ファイルに書いてあるのだろう サーバにphpとDBおいてフロントサイドをjsで運用しているんですが web-dev-serverでこういった環境をローカルに作る事って可能でしょうか? それともnode.jsを使う以上サーバサイドもjsにしてしまうべきなんでしょうか? PHPのbuilt-inのweb server使え >>370 有り難うございます 今までxammpっていうのを使っていたのでそれに流せばいいのでしょうか? ちょっと試してみます >>371 流す? projectのrootディレクトリで $ php -S localhost:8080 ってやれば http://localhost:8080/foobar.php でアクセス可能 Ruby なら、PowerShell から、1-liner で、 Rubyで作られた遅いウェブサーバー、WEBrick が起動する ruby -run -e httpd . -p 8080 そのフォルダに、index.html があれば、 何も考えなくても、これでブラウザからアクセスできる http://localhost:8080 これで遊んだ後は、Routing, O/R マッパーなどを備えた、Sinatra, Rails などのフレームワークを使う。 Rails のコピーが、CakePHP, Spring Boot 最終的な構成で、考えれば? フロントエンドをサーバーサイドと一緒に配布する(ただの静的ファイル扱い)だけなら、同じサーバでいいけど、 そうでないなら、フロントエンド側も初めから別のサーバにしておく方がいい(CORS対応は必須)。 dev-serverだから開発用途のでしょ たぶんwebpack-dev-serverだろうけどそれならhot module replacementとか使えるからサーバが何だろうと開発時は使うべき サーバがnode以外の時はproxyの形で使える >>376 有り難うございます proxyの概念自体がよく解ってないんですが、そういう仲立ち的な使い方も出来るという事ですね ちょっとnpmだけでも覚える事が多すぎるのでゆっくり慣れていく所存です… Node.js のnpm, yarn, PHP のComposer とか、Ruby のBundler のコピーだろ。 別に、覚えることなんてない global/local のインストールの区別と、本番用/開発用の区別だけ。 それと、設定ファイル たぶんnpmレジストリで公開されてるパッケージ群の総称としてnpmと言ってんじゃね npmのパッケージ全部覚えるとか Cの野良ライブラリ覚えるのとか githubのレポジトリ全部覚えるのとか 苦行以外の何物でもない node.jsはjavaにおけるjvmみたいなもの? electronを使ったデスクトップアプリは今後普及するでしょうか? >>382 web開発で培った技術がパソコン・携帯端末でもさらに活かせるようになったら嬉しい。 VSCode は、Electron 製 マルチプラットフォームは、 React Native + Expo アシアルのMonaca(Cordova/PhoneGap) + Onsen UI Mono を使っている、Unity, Xamarin やっぱり漏れは、サーバー側は、Node.js よりも、Ruby を使うけど Ruby使うセンスはわからんな。 今どきRailsとか? あんなの使うぐらいならPHPで素組したほうが早いし安全だと思うわ。 >>385 >あんなの使うぐらいならPHPで素組したほうが早いし安全だと思うわ。 流石にそれはないww >>386 Railsがそれぐらいあり得ない悪手だよ、今どき。 案件の数的にはphp, laravelってのが多いな。 PHPも7以降はプリミティブにもタイプヒンティング使えるからそれを積極的に使うとrailsより良かったりする。 PHPはフレームワーク使わずに、きちんとバリデーションして信頼境界線を意識して使うと、すごく便利よ。 歯を磨くには歯ブラシだなって思う。 Ruby は、JIT で速いから、web サイトの最高速度は未だに、Rails。 世界を驚嘆させた、dev.to もそう 表示速度が“異常な”Webサイト「dev.to」とか https://dev.to/ 元乃木坂46 の川後陽菜のWebサイト、SKIYAKI とか https://kawagopro.com/ でも、PHP も、次からは、JIT を搭載するらしい Electronで作られたソフトってVSCode以外に何がある? >>392 Slack Fiddler Everywhere Skype、Discord、Atom、Wordpress、WhatsAppのそれぞれデスクトップ版はElectronらしい HomebrewのインストーラがBashに置き換えられた GitHub、パッケージ管理システム「npm」をメンテナンスするnpm, Inc.を買収 ttp://forest.watch.impress.co.jp/docs/news/1241272.html どっちにpublishすればいいねん問題は杞憂に終わったか でも一強他弱の構図ってあんまりろくなことにならないんだよなぁ やーんはcliだから今の話とはちょっと… リポジトリ/レジストリがms/github一強過ぎて他の選択肢がーってことよね eventsモジュールにいつの間にか生えてるonceメソッド ずっと前にこのスレで誰かが欲しがってたやつだな Deno出てきたけどコアモジュールの互換性がないのはきつい 両対応のための中間モジュールが必要になって太る結果にならないといいけど 勉強を始めるならそれでもいいがプロダクションで使うのはまだしばらくnode一択だな Deno普通に良さそうだな。 地味に名前で喧嘩売ってるのも嫌いじゃない。 deno、typescriptネイティブに使えるのが良いな セキュリティ機能は、早々にalias切って無効化して使いそう。 あと、モジュール読み込みがgolangぽくURIなのは構わんけど、deno.landの信頼性が未知数だ モジュールがURIなのはgoと同じ轍を踏みそうで気にはなるな。 みんなちゃんと互換性に注意して作って、最初からRESTなAPIのようにv1とかv2とかパスに含めるかな?みたいな猜疑心はある。 ただ、Denoでよくやったと思うのは、バンドラーを積んだ事だと思ってるけど、みんなどう思う? 今までnodeで作ったサーバモジュールをインターネットが繋がってない環境にデプロイするの、結構めんどくなかった? bundleは素晴らしいと思う。 モジュールURIはversion含められるみたいよ read.cgi ver 07.5.5 2024/06/08 Walang Kapalit ★ | Donguri System Team 5ちゃんねる