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 นี้มีประโยชน์ตรงไหน
- มันทำให้เราสามารถติดตามเวอร์ชั้นใหม่ได้ตลอด เวลาอัพเดทเราแค่พิม
npm install
- เวลาเราแชร์โปรเจคกับเพื่อนเรา เราไม่จำเป็นที่จะต้องอัพ 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 แทนในการรันดู