Quantcast
Channel: Node.jsタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 9412

Node.js モジュール?なにそれおいしいの?

$
0
0
駆け出しエンジニアのNode Tutorial学習メモです。 解説するより見て学べ!というニュアンスのまとめとなりました。 実際にコードを読み解いていくと感覚的に理解できるはずです。    学習に使ったサイトはこちら! →Node.js Tutorial - W3Schools 目次 1.ダウンロードからHelloWorldまで 2.モジュールとは? 3.ファイルシステムモジュール 4.URLモジュール 5.NPM 6.イベント 7.ファイルをアップロードする 8.メールを送信する 1.ダウンロードからHelloWorldまで Node.jsをダウンロード Node.jsの公式Webサイトには、Node.jsのインストール手順があります。 [https://nodejs.org/ja/] 入門 Node.jsをダウンロードしてコンピューターにインストールしたら、Webブラウザーに「HelloWorld」を表示してみましょう。 「hello.js」という名前のNode.jsファイルを作成し、次のコードを追加します。 これで、コンピューターがサーバーとして機能します。 hello.js var http = require('http'); http.createServer(function (req, res) { res.writeHead(200, {"Content-Type": "text/plain; charset=utf-8" }); res.end('Hello World!'); }).listen(8080); ターミナルでサーバーを起動します。 C:\Users\Your Name>node myfirst.js インターネットブラウザを起動し、アドレスを入力します [http://localhost:8080] 2.モジュールとは? Node.jsのモジュールとは何ですか? モジュールはJavaScriptライブラリと同じであると考えてください。 内蔵モジュール Node.jsには、追加インストールなしで使用できる一連の組み込みモジュールがあります。 モジュールを含めるには、require()の関数を使用します。 var http = require('http'); これで、アプリケーションはHTTPモジュールにアクセスできるようになり、サーバーを作成できるようになりました。 独自のモジュールを作成する 独自のモジュールを作成して、アプリケーションに簡単に含めることができます。 次の例では、日付と時刻のオブジェクトを返すモジュールを作成します。 date.js myfirstmodule.js //現在の日付と時刻を返すモジュールを作成します。 exports.myDateTime = function () { return Date(); }; これで、任意のNode.jsファイルにモジュールを含めて使用できます。 3.ファイルシステムモジュール Node.jsファイルシステムモジュールを使用すると、コンピューター上のファイルシステムを操作できます。 ファイルシステムモジュールを含めるには、次のrequire()方法を使用します。 var fs = require('fs'); fsモジュールでは以下のようなメソッドを使用できます。 ・ファイルを読む fs.readFile() ・ファイルを作成する fs.appendFile() fs.open() fs.writeFile() ・ファイルを更新する fs.appendFile() fs.writeFile() ・ファイルを削除する fs.unlink() ・ファイルの名前を変更する fs.rename() 各メソッドの解説はこちら ファイルのアップロード Node.jsを使用してファイルをコンピューターにアップロードすることもできます。 後述する7.ファイルをアップロードするで詳しく見ていきます。 4.URLモジュール URLモジュールは、Webアドレスを読み取り可能な部分に分割します。 URLモジュールを含めるには、次のrequire()を使用します。 url.js var url = require('url'); url.parse() url.parse() メソッドを使用してアドレスを解析すると、アドレスの各部分をプロパティとして持つURLオブジェクトが返されます。 url.js var url = require('url'); var adr = 'http://localhost:8080/default.htm?year=2017&month=february'; var q = url.parse(adr, true); console.log(q.host); //returns 'localhost:8080' console.log(q.pathname); //returns '/default.htm' console.log(q.search); //returns '?year=2017&month=february' var qdata = q.query; //returns an object: { year: 2017, month: 'february' } console.log(qdata.month); //returns 'february' ファイルサーバー クライアントから要求されたファイルを提供しましょう。 2つのhtmlファイルを作成し、url.jsファイルと同じフォルダーに保存します。 summer.html //summer.html <!DOCTYPE html> <html> <body> <h1>Summer</h1> <p>I love the sun!</p> </body> </html> winter.html // winter.html <!DOCTYPE html> <html> <body> <h1>Winter</h1> <p>I love the snow!</p> </body> </html> 要求されたファイルを開き、コンテンツをクライアントに返すNode.jsファイルを作成します。何か問題が発生した場合は、404エラーをスローします。 search.js // demo_fileserver.js: var http = require('http'); var url = require('url'); var fs = require('fs'); http.createServer(function (req, res) { var q = url.parse(req.url, true); var filename = "." + q.pathname; fs.readFile(filename, function(err, data) { if (err) { res.writeHead(404, {'Content-Type': 'text/html'}); return res.end("404 Not Found"); } res.writeHead(200, {'Content-Type': 'text/html'}); res.write(data); return res.end(); }); }).listen(8080); サーバーを起動します。 C:\Users\Your Name>node search.js http:// localhost:8080 / summer.html http:// localhost:8080 / winter.html こちらのurlにアクセスすることで、指定したファイルをnode.jsが返してくれます。 5.NPM NPMとは NPMは、Node.jsパッケージ、または必要に応じてモジュールのパッケージマネージャーです。 www.npmjs.comは、ダウンロードして使用できる何千もの無料パッケージをホストしています。 Node.jsをインストールすると、NPMプログラムがコンピューターにインストールされます。 パッケージとは Node.jsのパッケージには、モジュールに必要なすべてのファイルが含まれています。 モジュールは、プロジェクトに含めることができるJavaScriptライブラリです。 パッケージをダウンロードする パッケージのダウンロードはとても簡単です。 コマンドラインインターフェイスを開き、必要なパッケージをダウンロードするようにNPMに指示します。 今回は、upper-caseパッケージをダウンロードしてみます。 C:\Users\Your Name>npm install upper-case NPMは、パッケージが配置される「node_modules」という名前のフォルダーを作成します。今後インストールするすべてのパッケージは、このフォルダーに配置されます。 C:\Users\My Name\node_modules\upper-case パッケージの使用 パッケージがインストールされると、使用できるようになります。 var http = require('http'); var uc = require('upper-case'); http.createServer(function (req, res) { res.writeHead(200, {'Content-Type': 'text/html'}); res.write(uc.upperCase("Hello World!")); res.end(); }).listen(8080); // HELLO WORLD! 6.イベント Node.jsは、イベント駆動型アプリケーションに最適です。 コンピューターでのすべてのアクションはイベントです。接続が確立されたときやファイルが開かれたときのように。 Node.jsのオブジェクトは、ファイルを開いたり閉じたりするときにreadStreamオブジェクトがイベントを発生させるように、イベントを発生させることができます。 Streamとは var fs = require('fs'); var rs = fs.createReadStream('./demofile.txt'); rs.on('open', function () { console.log('The file is open'); }); イベントモジュール Node.jsには、「イベント」と呼ばれる組み込みモジュールがあり、独自のイベントを作成、起動、およびリッスンできます。 組み込みのEventsモジュールを含めるには、require() メソッドを使用します。さらに、すべてのイベントプロパティとメソッドは、EventEmitterオブジェクトのインスタンスです。これらのプロパティとメソッドにアクセスできるようにするには、EventEmitterオブジェクトを作成します。 var events = require('events'); var eventEmitter = new events.EventEmitter(); EventEmitterオブジェクト EventEmitterオブジェクトを使用して、イベントハンドラーを独自のイベントに割り当てることができます。 以下の例では、「scream」イベントが発生したときに実行される関数を作成しました。 イベントを発生させるには、emit()メソッドを使用します。 var events = require('events'); var eventEmitter = new events.EventEmitter(); //Create an event handler: var myEventHandler = function () { console.log('I hear a scream!'); } //Assign the event handler to an event: eventEmitter.on('scream', myEventHandler); //Fire the 'scream' event: eventEmitter.emit('scream'); Node.jsのEventEmitterについていろいろ 7.ファイルをアップロードする ファイルのアップロード 恐るべきモジュール 「Formidable」と呼ばれる、ファイルのアップロードを処理するための非常に優れたモジュールがあります。 Formidableモジュールは、NPMを使用してダウンロードおよびインストールできます。 C:\Users\Your Name>npm install formidable Formidableモジュールをダウンロードしたら、モジュールを任意のアプリケーションに含めることができます。 これで、ユーザーがコンピューターにファイルをアップロードできるようにするWebページをNode.jsで作成する準備が整いました。 成功すると、指定したディレクトリにファイルが追加されます。 ※少し複雑かもしれませんが、実行結果を確認しながら少しづつ確実に読み解いていきましょう。 var http = require('http'); // アップロードされたファイルがサーバーに到達したら解析できるように、Formidableモジュールを含めます。 var formidable = require('formidable'); var fs = require('fs'); http.createServer(function(req, res) { if (req.url == '/fileupload') { var form = new formidable.IncomingForm(); // ファイルがアップロードされて解析されると、コンピューターの一時フォルダーに配置されます。 // このディレクトリへのパスは、parse()メソッドのコールバック関数の3番目の引数として渡される「files」オブジェクトにあります。 form.parse(req, function(err, fields, files) { // 選択したフォルダにファイルを移動するには、ファイルシステムモジュールを使用して、ファイルの名前を変更します。 var oldpath = files.filetoupload.path; var newpath = '/Users/user name/開発している場所のpath/' + files.filetoupload.name; fs.rename(oldpath, newpath, function(err) { if (err) throw err; res.write('File uploaded and moved!'); res.end(); }); }); } else { // アップロードフィールドを使用して、HTMLフォームを書き込むNode.jsファイルを作成します。これが初期画面になります。 res.writeHead(200, { 'Content-Type': 'text/html' }); res.write('<form action="fileupload" method="post" enctype="multipart/form-data">'); res.write('<input type="file" name="filetoupload"><br>'); res.write('<input type="submit">'); res.write('</form>'); return res.end(); } }).listen(8080); 8.メールを送信する Nodemailerモジュール Nodemailerモジュールを使用すると、コンピューターから電子メールを簡単に送信できます。 C:\Users\Your Name>npm install nodemailer メールを送る 選択した電子メールプロバイダーのユーザー名とパスワードを使用して、電子メールを送信します。このチュートリアルでは、Gmailアカウントを使用してメールを送信する方法を説明します。 実際には送信されないでしょう。Googleセキュリティにより、不正アクセスとみなされブロックされます。 var nodemailer = require('nodemailer'); var transporter = nodemailer.createTransport({ service: 'gmail', auth: { user: 'youremail@gmail.com', pass: 'yourpassword' } }); var mailOptions = { from: 'youremail@gmail.com', // 複数の受信者に電子メールを送信するには、toプロパティにコンマで区切って追加します。 to: 'myfriend@yahoo.com, myotherfriend@yahoo.com', subject: 'Sending Email using Node.js', text: 'That was easy!' // 電子メールでHTML形式のテキストを送信するには、「text」プロパティの代わりに「html」プロパティを使用します。 html: '<h1>Welcome</h1><p>That was easy!</p>' }; transporter.sendMail(mailOptions, function(error, info){ if (error) { console.log(error); } else { console.log('Email sent: ' + info.response); } }); 以上です!これで、サーバーがメールを送信できるようになりました。 Congratulations MySQLと組み合わせて、更にNode.jsを学んで行きましょう。 こちらからどうぞ: Node.jsアプリケーションとMySQLを接続しよう!

Viewing all articles
Browse latest Browse all 9412

Trending Articles