快速上手阿里云EMAS Serverless 开发小程序

本文涉及的产品
Serverless 应用引擎 SAE,800核*时 1600GiB*时
函数计算FC,每月免费额度15元,12个月
简介: 本文经过阅读《五天玩转 EMAS Serverless》和官方文档整理而成。不得不说,前者是一本优秀的技术小册子,写得通俗易懂。EMAS Serverless 也是一个十分优秀的平台,不仅好用,每月还有免费的额度,十分适合还不熟悉 serverless 的朋友们上手体验。

EMAS Serverless

什么是 EMAS

阿里巴巴应用研发平台(Enterprise Mobile Application Studio,简称EMAS),是面向全端场景(移动App、H5应用、小程序、Web应用、PC应用等)的一站式应用研发平台。EMAS基于广泛的云原生技术(Backend as a Service、Serverless、DevOps、低代码等),致力于为企业、开发者提供一站式的应用研发运营管理服务,涵盖开发、测试、运维、运营等应用全生命周期。

什么是 Serverless

Serverless 是近些年比较火热的一种开发模式。从字面看,它是无服务的意思。但它所表达的意思其实是“不需要过度专注服务器”。也就是说,开发者只需专注于业务实现,像搭建服务器环境,代码部署,服务器扩容等等传统运维的工作,直接交给 Serverless 来做就好了。

对于小程序开发的需求,Serverless 的开发模式非常适合前端开发人员去使用。

什么是 EMAS Serverless

阿里云 EMAS Serverless 是面向小程序开发场景的一套完整的后端服务,它提供了云函数云数据库云存储等基本功能,开发者仅需要在项目中集成 SDK,调用简单的 API 就能完成小程序后端服务的开发。

EMAS Serverless 的云函数使用 NodeJS 作为运行环境。对于前端开发人员来说,基本没有学习成本,可以快速上手。开发者可以将代码打包提交到云端,无需搭建运维服务器。云函数自动完成机器调度与函数部署,弹性扩容,按量收费,轻松应对突发流量。

云数据库基于 MongoDB 文档型数据库,数据以 JSON 格式存储。数据库中的每条记录都是一个 JSON 格式的对象。一个数据库可以有多个集合(相当于关系型数据中的表)。

云存储支持将文本、图片、视频等文件存储到云端。开发者可以在小程序端和控制台使用云存储功能。资源上传成功后,系统会自动生成一个资源链接并返回给小程序端,以供使用。

EMAS Serverless 对基础设施进行抽象封装。

EMAS Serverless = FaaS + BaaS。FaaS 是函数即服务,BaaS 是后端即服务。在这种抽象下,计算资源作为服务而不是服务器。开发者不需要关心服务器或者是底层的运维设施,可以更加关注业务和代码本身。

EMAS Serverless 适合人群

无论是前端工程师,后端工程师,全栈工程师,只要需要开发基于 serverless 的小程序,都可以选择使用EMAS Serverless。

EMAS Serverless 的特点

主要有三个特点:

  1. 面向多端,EMAS Serverless 面向多端小程序场景提供服务。
  2. 无需运维,全托管服务将您从基础设施的管理工作中解放,专注业务领域创新。
  3. 弹性伸缩,实时弹性伸缩和动态负载均衡,轻松应对突发流量。

EMAS Serverless的产品功能架构图

Serverless SDK 介绍

通过安装 EMAS Serverless SDK,可以方便地在小程序中使用 EMAS Serverless 服务。

以支付宝小程序为例,需要先开通 EMAS 服务,然后本地下载并安装好开发者工具,使用开发者工具创建一个小程序项目。切换到项目根目录,安装 SDK

npm i @alicloud/mpserverless-sdk

然后,在项目配置文件 mini.project.json 中,添加以下配置信息。

{
    "enableNodeModuleBabelTransform": true,
    "node_modules_es6_whitelist": [ 
        "@alicloud/mpserverless-sdk"
    ]
}

最后,构造实例对象 mpserverless 并完成 SDK 的初始化:

// app.js
import MPServerless from '@alicloud/mpserverless-sdk'

const mpserverless = new MPServerless(my, {
    appId: '小程序 AppID',
    spaceId: '服务空间 SpaceId',
    clientSecret: '服务空间 Secret',
    endpoint: '服务空间 API Endpoint'
});

App({
    mpserverless: mpserverless,
    onLaunch() {
        mpserverless.init();
    },
});

之后就能在小程序代码中愉快地使用 EMAS Serverless 的服务了。

云函数的使用

使用云函数的步骤是,先在本地开发完成一个云函数,然后将其部署到 serverless 平台,然后在小程序代码中通过 SDK 提供的特定方法去调用云函数。

开发云函数

以一个简单的 hello 程序为例:

// hello/index.js

'use strict';

module.exports = async (ctx) => {
  let message = 'hello';
  console.log(message);
  return message;
}

将其打包成一个 hello.zip 压缩包,然后上传到平台:

image-20220823231852856

上传完成之后点击部署:

image-20220823232035192

测试:

image-20220823232357391

在小程序中调用云函数的方式:

const { result } = await mpserverless.function.invoke();
console.log(result);  // 'hello'

云数据库的使用

云数据库的使用也分为两步,先在控制台创建一个集合,用于存放数据;再在云函数中编写操作云数据库的逻辑,然后在小程序代码中调用云函数。

云数据库功能群接口较多,对应了十几个功能。不仅包括基础的增删改查,也包括了 MongoDB 中去重、聚合等高级操作。

image-20220823232703970

以一个简单的查询为例:

module.exports = async (ctx) => {
    let res = await mpserverless.db.collection('users').find({
      age: { $gt: 18 }
    })
    
    return { users: res }
}

云存储的使用

云存储主要提供了两个方法:

  • uploadFile:上传文件
  • deleteFile:删除文件

以在小程序中上传一张相册中的图片为例:

my.chooseImage({
    chooseImage: 1,
    success: res => {
        const path = res.apFilePaths[0];
        const options = {
            filePath: path,
        };

        mpserverless.file.uploadFile(options)
        .then(res => { 
            console.log(res);  
        })
        .catch(err => {  
            console.log(err);
        });
    }
});

SDK 会将文件上传至云存储,并将文件的 URL 返回给小程序端使用。

小结

本文经过阅读《五天玩转 EMAS Serverless》和官方文档整理而成。不得不说,前者是一本优秀的技术小册子,写得通俗易懂。EMAS Serverless 也是一个十分优秀的平台,不仅好用,每月还有免费的额度,十分适合还不熟悉 serverless 的朋友们上手体验。

目录
相关文章
|
20天前
|
运维 Serverless API
Serverless 应用引擎使用问题之如何开发HTTP服务
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
|
4天前
|
监控 Serverless Go
Golang 开发函数计算问题之Go 语言中切片扩容时需要拷贝原数组中的数据如何解决
Golang 开发函数计算问题之Go 语言中切片扩容时需要拷贝原数组中的数据如何解决
|
4天前
|
Java Serverless Go
Golang 开发函数计算问题之在 Golang 中避免 "concurrent map writes" 异常如何解决
Golang 开发函数计算问题之在 Golang 中避免 "concurrent map writes" 异常如何解决
|
4天前
|
Serverless Go
Golang 开发函数计算问题之defer 中的 recover() 没有捕获到 如何解决
Golang 开发函数计算问题之defer 中的 recover() 没有捕获到 如何解决
|
22天前
|
监控 IDE Java
函数计算产品使用问题之如何不使用FC的IDE进行开发,并将开发好的应用部署到FC上
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
22天前
|
存储 弹性计算 监控
函数计算产品使用问题之程序正常运行,但无法在 /home/lang_serve_severless_log 下找到日志文件,该如何排查
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
2月前
|
运维 前端开发 Serverless
云开发如何解决serverless对端的最后一公里问题
云开发如何解决serverless对端的最后一公里问题
|
3月前
|
运维 Serverless Go
Serverless 应用引擎产品使用之在阿里云函数计算中c++模板,将编译好的C++程序放进去部署如何解决
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
|
3月前
|
Web App开发 Java Serverless
Serverless 应用引擎操作报错合集之阿里函数计算中,使用自定义运行时部署程序时,发现Chrome层已经建立但运行程序仍然缺失如何解决
Serverless 应用引擎(SAE)是阿里云提供的Serverless PaaS平台,支持Spring Cloud、Dubbo、HSF等主流微服务框架,简化应用的部署、运维和弹性伸缩。在使用SAE过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
|
3月前
|
运维 Serverless Go
Serverless 应用引擎产品使用之在阿里云函数计算中,Go语言的函数计算服务Go程序没有正确打包如何解决
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。

热门文章

最新文章

相关产品

  • 函数计算