You need to enable JavaScript to run this app.
内容分发网络

内容分发网络

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

本文档介绍如何使用边缘函数 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.01.30 12:04:22
这个页面对您有帮助吗?
有用
有用
无用
无用