请参与我们的问卷调查:同我们一起改进 Serverless
Serverless Framework logo

事半功倍
Serverless

基于腾讯云的一站式开发工具 & 自动扩容的应用监控平台
GitHub
41,471
Github Stars
Downloads
15,907,086
次下载
腾讯云
合作伙伴
AWS
亚马逊云
合作伙伴
"我虽然依旧爱用 Docker,但是伙计,Serverless 的东西真的非常出色!"
@themccallister
首席工程师, Pixel & Tonic

开发

平顺的无服务器应用开发体验

轻松开发事件函数和 REST 应用
除了事件函数,也可以使用 HTTP 方式调用 的函数和应用开发,满足各种开发者的使用需要。

支持传统框架应用和已有代码
除了函数应用,也支持将主流框架应用部署为 Serverless 应用,以及对已有代码的迁移。

一键部署基础设施和代码
一个 Serverless 命令就可以自动为您创建应用所需要的基础设施,并部署您的代码到云上。

1
2

调试

完善的内置顶级调试支持

远程开发模式
使用 Serverless 远程开发模式,自动部署修改后的代码,并实时同步运行日志和异常信息。

云函数本地调试
通过 Serverless 本地调用命令,可在本地对事件函数进行模拟调用,完成离线调试。

查看日志
通过 Serverless CLI 命令,可以快速查看 Serverless 应用的指定时间区间日志,或实时日志。

管理

清晰的应用管理和状态监控

查看应用状态和异常信息
通过实时强大的监控系统追踪 Serverless 应用的使用情况、运行状态和错误异常。

自动集成部署
在关联代码仓库后,Serverless 应用会在代码变更后自动进行更新,并部署到指定环境。

3

用 Serverless

在自动扩展的基础设施上部署你喜欢的应用

您可以使用 Serverless 部署许多熟悉的应用。从 Node.js、Python、Go、Java 上的事件函数到 REST APIs、定时任务、众多框架应用和 SaaS 应用。

Serverless Express.js API – node.js
serverless
Express.js
node.js
Serverless Flask API – python
serverless
Flask API
python
Serverless Cron Job – node.js
serverless
函数应用
多种语言
Serverless GraphQL – node.js
serverless
静态站点
html
serverless
Wordpress
php
serverless
Discuz! Q
php
"我之前从没有意识到 Serverless 是如此的快速和易用。感谢 Serverless,你做得很好。"
@DrPappa

事半功倍 Serverless
适合所有人的
无服务器应用开发方案

Nordstrom
CocaCola
Expedia
Reuters

节省成本, 释放生产力

GitHub
41,471
Github Stars
Downloads
15,907,086
下载次数
腾讯云
合作伙伴
亚马逊云
合作伙伴
` } if (loaderWrapper) { loaderWrapper.remove() } let itemsTree = [] let level = { itemsTree } items // 给 items 排序 - 浅层 items 排在前面 .sort((a, b) => a.objectID.split('/').length - b.objectID.split('/').length) .forEach((item) => { const path = item.objectID.replace(`docs/`, '').replace(/^\/|\/$/g, '') path.split('/').reduce((acc, name) => { if (!acc[name]) { acc[name] = { itemsTree: [] } acc.itemsTree.push({ ...item, name, children: acc[name].itemsTree }) } return acc[name] }, level) }) if (itemsTree.length && !isCloudDocs) { itemsTree = itemsTree.concat(extraNodes) } const finalItems = fixAndOrderItems( isFirstRender && parsedLocalStorageItems.length ? parsedLocalStorageItems : itemsTree ) const nodes = renderTreeNodes(finalItems) /** * Empty list to avoid adding the same items */ sidebarList.innerHTML = '' nodes.forEach((node) => { sidebarList.appendChild(node) }) container.replaceChildren(sidebarList) if (items.length) { localStorage.setItem(localStorageItemName, JSON.stringify(finalItems)) } } /** * Create custom hits widget */ const customHitsWidget = instantsearch.connectors.connectHits(renderHits) /** * Add configure and add widgets */ sidebarInstantSearch.addWidgets([ instantsearch.widgets.configure({ hitsPerPage: 1000, attributesToRetrieve: [ /** * return all attributes except for content for better performance */ '*', '-content' ] // filters: "menuVisible:true", }), customHitsWidget({ container: '#docs-sidebar-items' }), customHitsWidget({ container: '#docs-sidebar-items-mobile' }) ]) sidebarInstantSearch.start()