Web hiện đại toàn dynamic content. Nhưng hầu hết trường hợp, đây là ảo tưởng công nghệ. Lớn số website dùng trang dynamic generated, tức đọc từ database và render khi request, ngay cả cho thứ không nhất thiết yêu cầu interaction. Điều này tốn resource, và có thể coi kém an toàn, vì instruction xấu hoặc malformed có thể theoretically generate thứ không mong muốn.
Web cũ toàn static content - trang HTML với link và ảnh và không nhiều hơn. Không tệ, nhẹ resource, và an toàn như web server làm. Nhưng không có nhiều interaction, và update content nhàm chán. Có gì ở giữa hai thế giới không? Đó là Nikola, static site generator.
Khám phá, cài đặt, test
Bản chất ý tưởng - bạn tạo website tĩnh một cách dynamic. Đống script Python giúp tạo và edit trang, fix link và vân vân background nên bạn không cần manual mỗi lần thay đổi. Plugin và theme làm nhiệm vụ dễ dàng hơn. Khác biệt với CMS truyền thống: không database, và bạn build mọi thứ locally trước khi upload lên nơi site sống. Và ở đó, chỉ HTML và ảnh.
Tôi thấy thú vị vì offline content creation hiện đại không dễ. Tôi viết về này 2018, và buồn cười, ironic, logical tìm ra KompoZer cổ xưa là tool phù hợp nhất cho cả GUI và flexibility direct code edit. Nikola cung cấp hybrid approach - chủ yếu command line, nhưng cũng có visual editor cộng live browser preview.
Tôi làm theo hướng dẫn setup generic (pip và virtualenv commands), và này work fine. Tôi đoán cả việc có thể automate (đưa vào script). Hoàn thành bước này, tôi làm theo tutorial online tạo website demo đầu tiên.
nikola init --demo test-site
Creating Nikola Site
====================
This is Nikola v8.0.2. We will now ask you a few easy questions about your new site. If you do not want to answer and want to go with the defaults instead, simply restart with the `-q` parameter.
--- Questions about the site ---
Site title [My Nikola Site]:
Sau khi cung cấp data cơ bản - bạn cũng cần domain, đã registered, vì sẽ dùng làm homepage - tôi tạo bài post đầu. Làm theo hướng dẫn, và gặp vấn đề ngay.
(nikola) roger@tester:~/nikola/test-site$ nikola new_post -e
Creating New Post
-----------------
Title: Why Badgers Shouldn't Be Allowed to Drive
Scanning posts........done!
[2019-04-07T18:05:25Z] INFO: new_post: Your post's text is at: posts/why-badgers-shouldnt-be-allowed-to-drive.rst
[2019-04-07T18:05:25Z] ERROR: new_post: The $EDITOR environment variable is not set, cannot edit the post with '-e'. Please edit the post manually.
Vấn đề là, tôi cần manually export EDITOR variable. Tôi set thành Kate trong KDE, nhưng dù sao, có thể dùng bất kỳ editor nào, kể cả Notepad++, khá nifty. Làm vậy, bạn không gặp error này nữa.
Phần edit hơi... kỳ quặc. Nikola dùng file .rst extension, signifying reStructuredText, mặc dù bạn có thể manual config format khác như Markdown. Tôi thấy hơi lạ, vì này ép người học syntax (lạ) nữa. Nó cũng nghĩa là không tách style và content.
Điều này nghĩa là bạn không thể just work - bạn cần học ngôn ngữ khác, sau đó render ra HTML, nhưng tôi thắc mắc CSS classes, styles, HTML elements thực sự. Cuối cùng, nếu ai làm website, họ không nên có control over actual syntax? Cuối cùng, tôi xong bài đầu, và để Nikola build.
Hoàn thành bước, bạn preview thay đổi trong browser. Sau đó, theme và plugin thêm nếu không muốn hack mình. Cho đến nay không tệ, nhưng tôi vẫn có câu hỏi. Lớn nhất: tiếp theo là gì? Giả sử tôi hài lòng website, tôi chỉ upload toàn bộ lên server qua FTP? Và update như thế nào?
Đó không phải tôi trong ảnh, đó là ai đó fabulous hơn tôi nhiều.
Tôi tìm thấy bits thú vị khác, như deploy đến build systems, import gists, tạo chart và thumbnail, dùng code blocks. Nhưng tôi vẫn nghĩ focus thiếu vào final state, tức khi user xong tạo content, họ đi từ local build environment đến online deployment straightforward như thế nào?
Kết luận
Câu hỏi thực sự quan trọng: nếu Nikola Tesla setup website, công nghệ gì ông dùng hôm nay? Microsoft FrontPage? Geocites? Nikola? Tôi thích concept, thích ý tưởng tiết kiệm thời gian user trên skeleton website updates không cần thiết, nhưng tôi thấy approach quá devsy. Tôi biết, xây website không phải game, nhưng cũng không nên hax0rfest.
Đối với tôi, Nikola có thể tốt hơn với setup streamlined hơn, khả năng dùng HTML trực tiếp hoặc ít nhất add code blocks, và preview/deployment intuitive hơn. Tôi biết câu trả lời ở đó, nhưng vẻ đẹp là tool simple, self-explanatory, cho nhiều hơn họ hỏi. Nếu phải labor massive chỉ để reach điểm deploy trang đầu, tool supposed to save time trở thành problem they meant to save. That said, tôi thích Nikola, approach rất cool, và tôi sẽ theo dõi. Cuối cùng, ai biết Web 4.0 hay whatever sẽ mang lại gì.
Chào.