Node Package Manager + Express

npm หรือ node package manager มันทำให้ชีวิตเราง่ายขึ้นในการที่ใช้ code ของคนอื่นที่ทำให้เราแล้ว หรือเราอยากจะแชร์ code เราให้ใครก็ได้ เมื่อ code มีอัพเดทเราก็สามารถเช็คได้แค่คำสั่งเดียว

เมื่อเราติดตั้ง node แล้ว npm จะถูกติดตั้งตามมาด้วย

ลองเช็ค version ใน cmd พิม npm --version

สร้างไฟล์ชื่อว่า app.js ขึ้นมา

หลังจากนั้นเปิด terminal จากการกด ctrl + ` หลังจากนั้นพิมพ์คำสั่ง npm init

มันก็จะให้เราพิมชื่อโปรเจคก็พิมๆไป

กด Enter รัวๆ จนเสร็จ

จะได้ไฟล์ชื่อ package.json มาไฟล์นี้จะเป็นตัวบอกว่าโปรเจคเราต้องมี module ไรเพื่อ install บ้าง

{
"name": "testnpm",
"version": "1.0.0",
"description": "",
"main": "app.js",
"dependencies": {
"express": "^4.15.2"
},
"devDependencies": {},
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC"
}

พอเห็นเจ้านี้อย่างเพิ่งตกใจ มันเป็นตัวบอกว่าโปรเจคเราต้องมี package อะไรติดตั้งบ้างซึ่งจะอยู่ใน dependencies

เดียวเราจะมาลองติดตั้ง express ดู

Express เป็น Framework ที่สร้างบน Node.js อีกทีเพื่อให้เราสร้างอะไรง่ายขึ้น

เริ่มด้วยการ npm install express --save เสร็จลองดูที่ package.json จะมี express โผล่ขึ้นมาตรง dependencies และมี node_modules เป็นที่เก็บสิ่งที่เราลงไว้

"dependencies": {
"express": "^4.15.2"
},

ซึ่ง dependencies นี้มีประโยชน์ตรงไหน

  1. มันทำให้เราสามารถติดตามเวอร์ชั้นใหม่ได้ตลอด เวลาอัพเดทเราแค่พิม npm install
  2. เวลาเราแชร์โปรเจคกับเพื่อนเรา เราไม่จำเป็นที่จะต้องอัพ node_modules ขึ้นไปให้เพื่อน เพราะทุกอย่างอยู่ใน dependencies เราก็ส่งแค่โปรเจคเรากับ package.json อัพขึ้น git แล้วพอเพื่อน pull ลงมาก็แค่ npm install แค่นี้ก็จะได้อะไรที่เวอร์ชั่นล่าสุดทันทีเลย

คราวนี้มาลองสร้างไฟล์ app.js

var app = require('express')();
var port = process.env.PORT || 7777;
app.get('/', function (req, res) {
res.send('<h1>Hello Node.js</h1>');
});
app.get('/index', function (req, res) {
res.send('<h1>This is index page</h1>');
});
app.listen(port, function() {
console.log('Starting node.js on port ' + port);
});

บรรทัดแรก var app = require(‘express’)();เราจะดึง express ออกมาไว้ที่ app

บรรทัดที่สองเรากำหนด port เป็น 7777

บรรทัดที่สาม app.get(‘/’) คือการบอก path ในการ route ว่าถ้าเราพิม localhost:7777/ ในคำสั่งข้างในจะถูก execute

แต่ถ้าเรา app.get(‘/index’) คำสั่งจะถูก execute เมื่อเราพิมเช่น localhost:7777/index เป็นต้น

ส่วน app.listen บอกให้เริ่มเปิด port

เวลารันปกติเราจะรันเป็น node app.js เรามาลองใช้ npm กัน โดยแก้ใน package.json ในส่วนของ script เป็นแบบนี้

"scripts": {
"start": "node app.js"
},

scripts คือเวลาเราพิม npm ตามด้วย … มันจะรันคำสั่งนั้น

เช่นในตัวอย่างถ้าเราพิม npm start -> มันจะรัน node app.js

ซึ่งข้อดีตรงนี้คือบางทีเราอาจจะมีการรันหลายแบบ มีรับ args เราก็สร้างวิธีการรันแบบใหม่ให้มันโดยเราก็แก้ใน package.json ที่เดียว

ลองรันดู npm start

แล้วก็ลองเข้า Browser พิม localhost:7777/ กับ localhost:7777/index ดู

ทุกอย่างก็จะเหมือนกับในบทความที่แล้ว และจริงๆ npm มีให้ใช้มากมายลองเข้าไปดูได้ใน https://www.npmjs.com/ ซึ่งทั้งหมดนั้นฟรีหมดเลย npm ก็เป็นหนึ่งในจุดเด่นของ node.js เลย

ผมจะแนะนำให้ลง nodemon ไว้ซึ่ง nodemon มีไว้รันแทน node มันจะคอย monitor ถ้าเราเซฟไฟล์ปุป มันจะ restart แอพให้เราทันทีโดยที่ไม่ต้อง พิม npm start หรือ node app.js ใหม่อีก

วิธีลงก็พิม npm install nodemon -g

ขออธิบาย -g คือการติดตั้งเป็นแบบ global สามารถใช้ได้ทุกที่ในคอมเราและมันจะไม่อยู่ใน project เรา

ก็ลองใช้ nodemon app.js แทนในการรันดู