Cách sử dụng Chức năng Netlify Lambda và thêm xử lý động vào các trang web JAMstack
Tôi đã viết về Netlify trước đây trênHướng dẫn Netlify. Tôi sử dụng nó để lưu trữ blog này, và nó thật tuyệt.
I also use it to run other sites, and all run on Hugo - which makes my stack 100% JAMstack.
Điều thú vị về JAM là tất cả không chỉ giới hạn ở các trang web tĩnh và “ngu ngốc” - bạn có thể thực hiện RẤT NHIỀU thứ động như bạn muốn.
Hầu hết sức mạnh đó đến dưới dạnghàm lambda.
Bạn có thể có JavaScript trên trang web của mình (hoặc các dạng HTML thuần túy) gọi một điểm cuối URL, điểm cuối này khi được gọi sẽ thực thi một số mã định trước. Các nhà cung cấp khác nhau cung cấp hỗ trợ cho các ngôn ngữ khác nhau. Netlify hiện hỗ trợ Node.js và Go.
Trong hướng dẫn này, chúng tôi tập trung vào các hàm lambda được viết bằng Node.js.
Netlify cung cấp cho chúng tôi giới hạn bậc miễn phí rộng rãi, với tối đa 125.000 lệnh gọi hàm và tổng thời gian chạy là 100 giờ mỗi tháng. Các hàm có bộ nhớ 128MB và mỗi hàm có thể thực thi trong tối đa 10 giây. Đối với nhu cầu thông thường, điều này là quá đủ.
Nội bộ, Netlify chạy chức năng này trênAWS Lambda, loại bỏ tất cả sự phức tạp của AWS cho bạn.
Làm cách nào để chúng ta tạo một hàm? Chúng tôi tải lên một tệp JavaScript trongfunctions
thư mục của trang web.
Trong tệp này, chúng ta phải tuân theo một phương thức có tênhandler
:
exports.handler = (event, context, callback) => {
//functionality
}
Nếu bạn đã quen thuộc với AWS Lambda, thì mã hàm sẽ quen thuộc với bạn. Nếu bạn chưa bao giờ sử dụng nó, đừng lo lắng - đây là tổng quan ngắn gọn về các tham số mà trình xử lý của chúng tôi nhận được:
event
là một đối tượng chứa dữ liệu theo yêu cầucontext
chứa thông tin người dùng khi sử dụng Identity để xác thực người dùngcallback
là một chức năng chúng ta có thể sử dụng để tạo phản hồi
Điều đơn giản nhất chúng ta có thể làm là gửi lại phản hồi tích cực. Để làm như vậy, chúng tôi sử dụngcallback()
phương pháp:
exports.handler = (event, context, callback) => {
callback(null, {
statusCode: 200,
body: 'No worries, all is working fine!'
})
}
Lưu cái này vào mộtfunctions/test.js
tập tin.
Điều duy nhất bạn cần làm để làm cho nó hoạt động là định cấu hình thư mục cho các chức năng trongnetlify.toml
tập tin:
[build]
functions = "./functions"Try this. Create the file in an empty folder, push it to a GitHub repository and create a new Netlify site from that repo.
Once you do so, in the Settings -> Functions
menu in Netlify a new menu will show up which shows the details of our functions usage:

The function, which was stored in the functions/test.js
file, is accessible at https://YOURSITENAME.netlify.com/.netlify/functions/test.

To access the request parameters, use the event
object:
event.path
the request path
event.httpMethod
the request HTTP method
event.headers
the request headers
event.queryStringParameters
the request query parameters
event.body
the request body in JSON format
Before we used
callback(null, {
statusCode: 200,
body: 'No worries, all is working fine!'
})
to craft a response. You can also add a headers
object which contains an associative array (object) with the header values.
This repository by Netlify https://github.com/netlify/netlify-functions-example contains a lot of samples for Netlify Lambda Functions.
More services tutorials:
- How to start with Firebase Hosting
- A tutorial to host your Static Site on Netlify
- Code Linters and Formatters for Web Developers
- Auto trigger deploys on Netlify
- Glitch, a great Platform for Developers
- Airtable API for Developers
- How to authenticate to any Google API
- Zeit Now Tutorial
- Netlify Lambda Functions Tutorial
- How to use Firebase Firestore as your database
- How I fixed the trailing slash in Netlify rewrites
- How to access query parameters in Netlify functions
- How to use environment variables in Netlify functions
- How to use npm packages in Netlify Functions
- How to create your first VPS on DigitalOcean