By

REVEL - MVC server side web framework Cho Golang

Giới thiệu MVC server side framework Revel

  • Hiện tại đã có khá nhiều framework viết bằng Go giúp cho việc lập trình ứng dụng web được dễ dàng và hệ thống hơn như revel, beego, martini, goji, … Mỗi framework có những điểm mạnh riêng, nhưng ở bài này tui sẽ hướng dẫn các bạn cài đặt và viết ứng dụng myapp đầu tiên bằng REVEL.

  • Trong đó, beego và revel là 2 framework cung cấp mô hình MVC giúp chúng ta dễ dàng code và maintain hơn trong việc tạo ứng dụng web.

  • Về phía martini và goji, 2 framework này tương đối giống nhau (gần giống với nodejs), nhưng chúng không hỗ trợ render view nên theo tui sẽ thích hợp hơn khi sử dụng với mục đích làm server RESTful hay cập nhật real-time cho client.

  • Chúng ta tiếp tục so sánh giữa beego và revel:

  • Hot-compile/reload:

    • Cả 2 đều hỗ trợ hot-compile/reload (không cần phải restart server để chạy code mới), nhưng ở beego, file được tự động compile mỗi khi có thay đổi (mỗi khi save), còn Revel thì không như vậy, Revel sẽ đợi đến khi nhận được request mới thực hiện compile code mới, ở mặt này theo tui thấy Revel có vẻ như sử dụng ít tài nguyên hơn.
  • ORM:

    • Revel không hỗ trợ ORM nhưng có ví dụ cách sử dụng GORP. Beego lại tự build cho mình ORM. Ở phần database, tôi sẽ hướng dẫn các bạn kết nối dễ dàng với upper.io
  • Template engine:

    • Cả 2 đều sử dụng template engine của Golang
  • Vấn đề dev:

    • Revel cho phép ta code và xem kết quả tốt hơn, chỉ việc refresh để xem kết quả, và kết quả hiện trên browser dù cho có lỗi, chúng vẫn được hiện lên browser. Beego thì không hiện lên browser, beego hiện lỗi lên console

  • Theo cá nhân tui, phần Route của Revel khá rõ ràng và gần giống như các framework PHP khác, beego thì không, nên tui sẽ thử chọn Revel để dev xem sao :D.

Trước hết là cài đặt Go

sudo apt-get update
sudo apt-get install golang

Tiếp đến là git

sudo apt-get install git
sudo apt-get install build-essential libssl-dev libcurl4-gnutls-dev libexpat1-dev gettext unzip

Và cuối cùng là mercurial

sudo apt-get install python-setuptools python-dev build-essential
sudo easy_install -U mercurial

  • Việc cài đặt Git và mercurial cho phép go get tải về một số dependencies cần thiết cho việc cài đặt revel

Cấu hình GOPATH

  1. Tạo 1 folder: mkdir ~/goRevel
  2. Thông báo cho Go biết GOPATH là folder vừa tạo: export GOPATH=~/goRevel
  3. Lưu GOPATH để sử dụng cho 1 shell session: echo export GOPATH=$GOPATH >> ~/.bash_profile

Giờ chúng ta đã có thể cài đặt REVEL

go get github.com/REVEL/REVEL

Dòng lệnh trên thực hiện 2 việc sau:
+ Go sử dụng git để tải repository vào $GOPATH/src/github.com/revel/revel/
+ Go tìm tất cả những dependencies cần thiết và chạy go get

và cài đặt REVEL tool

go get github.com/REVEL/cmd/REVEL

  • Công cụ REVEL command line cho phép bạn tạo(new), chạy ứng dụng(run) và đóng gói ứng dụng(package) và 1 số chức năng khác để sử dụng REVEL tiện hơn.

  • Để có thể sử dụng được các lệnh REVEL ở bất cứ đâu, bạn cần phải lưu $GOPATH/bin vào .bashrc bằng cách copy 2 dòng sau vào cuối file .bashrc:
    export GOPATH=~/goRevel
    export PATH="$PATH:$GOPATH/bin"

Kiểm tra cài đặt

revel help

Tạo 1 ứng dụng web

cd $GOPATH
revel new myapp

và bạn đã có thể chạy ứng dụng bằng lệnh sau:
revel run myapp

  • Khi đó, REVEL sẽ chạy trên localhost với port là 9000 và bạn sẽ thấy:

  • Vậy là bạn đã cài đặt và chạy thành công ứng dụng đầu tiên bằng REVEL.

  • Ở bài sau, tui sẽ hướng dẫn các bạn làm việc với Controller, View, Routing và Parameters

Lời kết

  • Việc cài đặt và chạy ứng dụng bằng REVEL không quá khó, nhưng nó lại đem đến cho bạn môi trường mvc gần tương tự như PHP giúp bạn có thể thích nghi nhanh chóng với việc code web bằng Golang, một ngôn ngữ còn tương tối mới và đang có cộng đồng khá đông đảo. Đó là một điều khá thuận lợi cho việc phát triển mạnh hơn của Golang.

  • Nếu có vấn đề gì trong quá trình cài đặt, xin hãy comment bên dưới hoặc có thể gửi mail đến cho tui theo địa chỉ: ivkeanle@gmail.com