Xây dựng website bằng Nodejs và Express
Bài đăng này đã không được cập nhật trong 7 năm
Chắc hẳn các bạn đã nghe nhiều đến Nodejs - một nền tảng server side được xây dựng từ nền tảng Javascript, hôm nay tôi sẽ giới thiệu đến các bạn một cách nhanh chóng để xây dựng website bằng Nodejs. Trước hết, hãy chắc chắn rằng bạn đã cài Nodejs và npm, nếu chưa, bạn có thể tham khảo cài Nodejs và npm (trên Ubuntu):
sudo apt-get update
sudo apt-get install nodejs
sudo apt-get install npm
hoặc có thể tham khảo thêm cách cài đặt Nodejs trên nền tảng khác tại đây
Để kiểm tra nodejs và npm đã cài đặt thành công hay chưa, hãy thử kiểm tra version:
nodejs -v
v6.10.3
npm -v
4.2.0
Cài đặt express:
npm install -g express-generator
hoặc
sudo npm install -g express-generator
Flag -g
có nghĩa là ta đã cài đặt express trên phạm vi global (trong hệ thống của bạn)
Nào, bây giờ chúng ta sẽ bắt đầu xây dựng website:
express -c stylus express_example
Flag -c
nghĩa là chúng ta muốn sử dụng stylus cho css.
Bạn có thể nhìn thấy kết quả:
warning: the default view engine will not be jade in future releases
warning: use `--view=jade' or `--help' for additional options
create : express_example
create : express_example/package.json
create : express_example/app.js
create : express_example/public
create : express_example/routes
create : express_example/routes/index.js
create : express_example/routes/users.js
create : express_example/views
create : express_example/views/index.jade
create : express_example/views/layout.jade
create : express_example/views/error.jade
create : express_example/bin
create : express_example/bin/www
create : express_example/public/javascripts
create : express_example/public/images
create : express_example/public/stylesheets
create : express_example/public/stylesheets/style.styl
install dependencies:
$ cd express_example && npm install
run the app:
$ DEBUG=express-example:* npm start
Tiếp theo là đi đến thư mục vừa tạo express_example
:
cd express_example && npm install
npm
thứ không thể thiếu được - dùng để cài đặt, chia sẻ và phân phối mã nguồn, gần giống như chức năng của Gem trong Ruby on Rails vậy.
Cài đặt thành công npm sẽ bao gồm rất nhiều các gói con được cài đặt và hiển thị ra màn hình console dưới dạng như:
├─┬ body-parser@1.17.2
│ ├── bytes@2.4.0
│ ├── content-type@1.0.2
│ ├── debug@2.6.7
│ ├── depd@1.1.0
│ ├─┬ http-errors@1.6.1
│ │ └── inherits@2.0.3
....
Nếu lỗi sẽ báo ERROR
và công việc tiếp theo của bạn trong trường hợp này là tìm lỗi và khắc phục nó, đa số các trường hợp lỗi là do npm và nodejs chưa tương thích hoặc quá cũ, bạn nên update trước khi bắt tay vào xây dựng project.
Sau khi cài đặt npm thành công, chúng ta có thể khởi động app được rồi: Đối với Linux or OSX:
DEBUG=express_example:* npm start
còn đối với Windows:
set DEBUG=express_example:* & npm start
Cổng mặc định của web trên local là 3000, hãy truy cập trên trình duyệt địa chỉ http://127.0.0.1:3000 (hoặc localhost:3000) .
Phát triển Nodejs sites: Thông thường, khi xây dựng trang web với nodejs, bạn sẽ phải khởi động lại ứng dụng của bạn mỗi khi có sự thay đổi (về code). May mắn thay, một dev tay to Javascript người anh là Remy Sharp đã giải quyết được vấn đề này bằng nodemon. Nodemon sẽ tự động reload ứng dụng của bạn mỗi khi có sự thayd đổi code mà không cần khởi động lại. Nếu bạn đã sử dụng Shotgun cho Ruby với Sinatra thì nó cũng tương tự như vậy. Cài đặt nodemon (thật tiện lợi vì chúng ta có npm)
npm install -g nodemon # hoặc sudo npm install -g nodemon
Bây giờ chúng ta có thể bắt đầu với nodemon:
DEBUG=express_example:* nodemon
Nodemon sẽ tự động tìm trong project setting của bạn để tìm các files thích hợp để start server của bạn. Nếu không được thì hãy thử :
DEBUG=express_example nodemon npm start
Sử dung nodemon không có nghĩa là trong tất cả các trường hợp bạn không phải khởi động lại server. Để rõ hơn các trường hợp cụ thể về nodemon bạn hãy đọc README
HTML với Express Express không khuôn mẫu như các ngôn ngữ bạn sử dụng. Các ngôn ngữ khuôn mẫu luôn là các đề tài tranh luận, nhưng ở đây tôi sẽ sử dụng jade (nó cũng tương tự như haml):
doctype
html
head
title= title
link(rel='stylesheet', href='/stylesheets/style.css')
link(rel='stylesheet', href='/stylesheets/chunkfive-fontface.css')
body
header
nav
ul
li
a(href="/") Home
li
a(href="/about") About
li
a(href="/contact") Contact
section#wrapper
block content
footer
section.css-table
section.four-column
section.cell
p Mauris porttitor <br />felis eu leo aliquet<br /> ac rutrum odio aliquet
section.cell
p Mauris porttitor <br />felis eu leo aliquet<br /> ac rutrum odio aliquet
section.cell
p Mauris porttitor <br />felis eu leo aliquet<br /> ac rutrum odio aliquet
section.cell
p Mauris porttitor <br />felis eu leo aliquet<br /> ac rutrum odio aliquet
Lưu file ở /views/layout.jade
CSS với Express:
body
font 62.5%/1.5 Helvetica, Arial, "Lucida Grande", "Lucida Sans", Tahoma, Verdana, sans-serif
text-align center
background #000
#wrapper
width 920px
text-align left
margin-left auto
margin-right auto
background #fff
padding 20px
border-bottom-radius(15px)
Ở đây tôi sử dụng stylus , nó cũng tương tự như sass
.
Routing in Express routes/index.js
var express = require('express');
var router = express.Router();
router.get('/', function(req, res){
res.render('index', {
title: 'Home'
});
});
router.get('/about', function(req, res){
res.render('about', {
title: 'About'
});
});
router.get('/contact', function(req, res){
res.render('contact', {
title: 'Contact'
});
});
module.exports = router;
Chức năng và hiển thị đã có chút thay đổi so với project khởi tạo ban đầu, hãy bắt tay vào phát triển thêm những tính năng mà bạn thích nhé.
Push lên heroku:
heroku apps:create
git push heroku master
Kết: Trên đây tôi đã trình bày với các bạn một cách cơ bản để tạo ra một trang website từ node và express, và một số điều từ Nodejs ecosystem. Các điểm mạnh của Nodejs không quá nhiều khi xây dựng static websites như thế này. Các bạn nên tìm hiểu thêm thư viện của Nodejs có rất nhiều thứ hay ho :v , và tôi nghĩ chúng ta sẽ có những ứng dụng tuyệt vời được xây dựng từ Nodejs. Nhân tiện hãy trải nghiệm một chút với socket.io nhé. Cám ơn các bạn đã theo dõi bài viết, hi vọng các bạn sẽ có những trải nghiệm thú vị. Tham khảo tại đây
All rights reserved