You need to enable JavaScript to run this app.
文档中心
文档控制台
注册
内容分发网络

内容分发网络

复制全文
下载 pdf
CLI 指南
基于函数模板创建函数
复制全文
下载 pdf
基于函数模板创建函数

本文档介绍如何使用边缘函数 CLI 中基于函数模板创建函数。
对于边缘函数 CLI,您可以选择的函数模板取决于您是否设置了 Access Key ID 和 Secret Access Key:

  • 如果您没有设置 Access Key ID 和 Secret Access Key,您只能使用 CLI 内置模板。
  • 如果您设置了 Access Key ID 和 Secret Access Key ,您可以使用边缘函数支持的所有模板。

前提条件

操作步骤

  1. 在您的设备上运行以下命令。该命令会安装边缘函数 CLI,然后创建一个函数项目,并在函数项目中创建一个本地函数。参见 nest init

    $ npx @volcengine/nest@latest init
    
  2. 根据命令行提示设置函数的名称,并选择一个函数模板。然后,按回车键确定。

    $ npx @volcengine/nest@latest init
    Need to install the following packages:
    @volcengine/nest@1.0.0
    Ok to proceed? (y) y
    
    ✓ Name: test
    ? Select a template you want to start with:
    ▸ URL Rewriting
      Rewrite URL links in webpages using HTML Rewriter.                                                
      Aggregate Requests
      HTTP to HTTPS Upgrade
      JSON Processing
      Modify Origin Server Error Response Pages
      CORS (Cross-Origin Resource Sharing) Handling
    
  3. 按您的需求,根据命令行提示设置其他参数并按回车键确认。

$ npx @volcengine/nest@latest init
Need to install the following packages:
@volcengine/nest@1.0.0
Ok to proceed? (y) y

命令运行完成后,您当前的目录结构如下:

└── 📁MyFolder
    └── 📁test
        └── nest.json
        └── package-lock.json
        └── package.json
        └── 📁src
            └── index.js
    └── package.json

其中,test 目录是您创建的函数项目,test/src/index.js 是您的本地函数的入口文件。index.js 文件的内容就是您选择的函数模板。
您可以在 MyFolder 目录通过以下命令查看根据函数模板生成的代码文件。

$ cat test/src/index.js
addEventListener('fetch', event => {
  event.respondWith(onFetch(event));
})

const OLD_URL = "s.taobao.com";
const NEW_URL = "s.mynewdomain.com";

async function onFetch(event) {
  const path = event.request.path;
  const response = await fetch(`https://www.taobao.com${path}`);

  const rewrite = function(element, tag) {
    if (element.hasAttribute(tag)) {
      const href = element.getAttribute(tag);
      const new_href = href.replace(OLD_URL, NEW_URL);
      console.log(`replace(${tag}) ${href} => ${new_href}`);
      element.setAttribute(tag, new_href);
    }
  }
  const rewriteBody = createHtmlStream(
    response.body,
    undefined,
     [
        [
          'a',  // CSS selector, 'a' stands for selecting all the 'a' tags in the webpage
          {
            // This onElement callback will be triggered after 'a' tags in the webpage are parsed
            onElement(element) {
              rewrite(element, "href")
            }
          }
        ],
        [
          'img',
          {
            // This onElement callback will be triggered after 'img' tags in the webpage are parsed
            onElement(element) {
              rewrite(element, "src")
            }
          }
        ]
      ]
  );

  return new Response(
    rewriteBody,
    {
      status: response.status,
      headers: response.headers
    }
  )
最近更新时间:2026.06.18 14:28:35
这个页面对您有帮助吗?
有用
有用
无用
无用