Tencent Serverless在VSCode中开发

简介: Tencent Serverless在VSCode中开发
+关注继续查看

出租屋里都用的什么网,还能在线写代码,电脑上装的VSCode不香了吗?在掘金上一篇自动签到(云函数版)让我出入云开发(小程序的云函数也写过),在没必要承担服务器的高昂成本的前提下,有免费的当然要用,做个定义任务真香。不过在体验了云函数在线开发后感觉还是太麻烦,没有本地装的VSCode好用,在云函数的官方文档找到了VSCode上可以装的插件和使用指南,来一起了解一下。


VSCode和腾讯云账号请提前安排


Tencent Serverless插件


安装插件:

1.png


配置信息:


  1. 设置APPID:账号信息地址
  2. 设置SecretId 和 SecretKey:API密钥管理地址:
  3. 设置地域:先随便选一个吧,都是薅的免费部分。

2.png


编写函数


功能介绍:


  1. 云函数功能:
    1. 下载云函数到本地:将云函数拉到本地方便修改,查看。
    2. 云端调试:在VSCode进行云端调试会将日志输出拉到VSCode终端进行展示。
  1. 本地函数:
    1. 创建函数:按指定模板创建云函数。
    2. 上传云端:将编写好的云函数上传值云端。


编写函数注意:


  1. 在函数目录下的src进行npm初始化,上传云端后目录完整不缺失。
  2. 注意node_modules过大的问题,还是建议云端IDE的终端执行安装。
  3. 编写后上传云端即可进行调试,如果找不到指定的模块建议在云端IDE查看目录结构是否完整。


贴代码:


  1. 原文章地址:

3.png

  1. 配置文件
exports.config = {
    cookie: "",
    email: {
        user: "",
        from: "",
        to: "",
        pass: ""
    }
}
复制代码
  1. 业务部分
'use strict';
/*---------------依赖-----------------*/
const nodeMailer = require('nodemailer');
const axios = require('axios');
const conf = require('./config')
/*---------------配置-----------------*/
const config = {
    "baseUrl": "https://api.juejin.cn",
    "apiUrl": {
        "getTodayStatus": "/growth_api/v1/get_today_status",
        "checkIn": "/growth_api/v1/check_in",
        "getLotteryConfig": "/growth_api/v1/lottery_config/get",
        "drawLottery": "/growth_api/v1/lottery/draw"
    },
    "cookie": conf.config.cookie,
    "email": {
        "qq": {
            "user": conf.config.email.user,
            "from": conf.config.email.from,
            "to": conf.config.email.to,
            "pass": conf.config.email.pass,
        }
    }
}
/*---------------掘金-----------------*/
// 签到
const checkIn = async () => {
    let { error, isCheck } = await getTodayCheckStatus();
    if (error) return console.log('查询签到失败');
    if (isCheck) return console.log('今日已参与签到');
    const { cookie, baseUrl, apiUrl } = config;
    let { data } = await axios({ url: baseUrl + apiUrl.checkIn, method: 'post', headers: { Cookie: cookie } });
    if (data.err_no) {
        console.log('签到失败');
        await sendEmailFromQQ('今日掘金签到:失败', JSON.stringify(data));
    } else {
        console.log(`签到成功!当前积分:${data.data.sum_point}`);
        await sendEmailFromQQ('今日掘金签到:成功', JSON.stringify(data));
    }
}
// 查询今日是否已经签到
const getTodayCheckStatus = async () => {
    const { cookie, baseUrl, apiUrl } = config;
    let { data } = await axios({ url: baseUrl + apiUrl.getTodayStatus, method: 'get', headers: { Cookie: cookie } });
    if (data.err_no) {
        await sendEmailFromQQ('今日掘金签到查询:失败', JSON.stringify(data));
    }
    return { error: data.err_no !== 0, isCheck: data.data }
}
// 抽奖
const draw = async () => {
    let { error, isDraw } = await getTodayDrawStatus();
    if (error) return console.log('查询抽奖次数失败');
    if (isDraw) return console.log('今日已无免费抽奖次数');
    const { cookie, baseUrl, apiUrl } = config;
    let { data } = await axios({ url: baseUrl + apiUrl.drawLottery, method: 'post', headers: { Cookie: cookie } });
    if (data.err_no) return console.log('免费抽奖失败');
    console.log(`恭喜抽到:${data.data.lottery_name}`);
}
// 获取今天免费抽奖的次数
const getTodayDrawStatus = async () => {
    const { cookie, baseUrl, apiUrl } = config;
    let { data } = await axios({ url: baseUrl + apiUrl.getLotteryConfig, method: 'get', headers: { Cookie: cookie } });
    if (data.err_no) {
        return { error: true, isDraw: false }
    } else {
        return { error: false, isDraw: data.data.free_count === 0 }
    }
}
/*---------------邮件-----------------*/
// 通过qq邮箱发送
const sendEmailFromQQ = async (subject, html) => {
    let cfg = config.email.qq;
    if (!cfg || !cfg.user || !cfg.pass) return;
    const transporter = nodeMailer.createTransport({ service: 'qq', auth: { user: cfg.user, pass: cfg.pass } });
    transporter.sendMail({
        from: cfg.from,
        to: cfg.to,
        subject: subject,
        html: html
    }, (err) => {
        if (err) return console.log(`发送邮件失败:${err}`, true);
        console.log('发送邮件成功')
    })
}
exports.main_handler = async (event, context, callback) => {
    console.log('开始');
    await checkIn();
    await draw();
    console.log('结束');
};
复制代码


部署函数


  1. 在本地函数窗口执行上传云端操作。
  2. 在云端函数窗口执行云端调试操作,并观察终端信息。(使用定时器方式触发)
  3. 测试成功后就可以配置触发器来定时执行云函数了。


配置触发器:

  1. 云函数控制台查看我们的云函数。
  2. 4.png
  3. 提交后回到函数管理确认重新部署。
  4. 顺便在代码编辑的下方再次做一次测试。

5.png



相关实践学习
基于函数计算一键部署掌上游戏机
本场景介绍如何使用阿里云计算服务命令快速搭建一个掌上游戏机。
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
相关文章
|
17天前
|
小程序 IDE Serverless
基于小程序Serverless开发个人相册小程序
本场景基于小程序云Serverless+小程序开发者工具(IDE),快速搭建个人相册小程序
33 0
|
4月前
|
人工智能 弹性计算 运维
阿里云丁宇:云上开发成为主流,Serverless 定义新范式
阿里云丁宇:云上开发成为主流,Serverless 定义新范式
阿里云丁宇:云上开发成为主流,Serverless 定义新范式
|
7月前
|
监控 Serverless 云计算
Serverless云开发简介及使用步骤
体验最领先的Serverless云开发模式
|
8月前
|
Serverless
《Serverless 云开发从入门到实战》电子版地址
1大平台无门槛上手、3大基础能力系统学习、4大实战案例轻松掌握,从入门到实战,带你手把手掌握Serverless和云开发技术。
159 0
《Serverless 云开发从入门到实战》电子版地址
|
8月前
|
Java Serverless 云计算
《Serverless 开发速查手册》电子版地址
本书旨在通过简洁明了的语言、真实案例、以及开放的源代码,为读者介绍Serverless架构工具链ServerlessDevs的相关基础知识,体会ServerlessDevs的重要价值;
84 0
《Serverless 开发速查手册》电子版地址
|
8月前
|
存储 运维 小程序
《小程序Serverless 云开发》电子版地址
《小程序Serverless 云开发》电子书上线,5个小程序开发核心技术+1个小程序云数据分析方法,带你7天学会支付宝小程序云上开发!
126 0
《小程序Serverless 云开发》电子版地址
|
8月前
|
前端开发 Serverless 测试技术
Serverless 服务中的前端解决方案——Serverless 开发最佳实践
Serverless 服务中的前端解决方案——Serverless 开发最佳实践自制脑图
181 0
Serverless 服务中的前端解决方案——Serverless 开发最佳实践
|
9月前
|
存储 运维 小程序
《小程序Serverless 云开发》电子版下载地址
《小程序Serverless 云开发》电子书上线,5个小程序开发核心技术+1个小程序云数据分析方法,带你7天学会支付宝小程序云上开发!
88 0
《小程序Serverless 云开发》电子版下载地址
|
9月前
|
Serverless
Serverless 带给 web 开发的改变——现代化Web 站点构建介绍
Serverless 带给 web 开发的改变——现代化Web 站点构建介绍自制脑图, 介绍了建站演示和端云调试
341 0
Serverless 带给 web 开发的改变——现代化Web 站点构建介绍
|
9月前
|
Serverless
Serverless 带给 web 开发的改变
Serverless 带给 web 开发的改变自制脑图
340 0
Serverless 带给 web 开发的改变
热门文章
最新文章
相关产品
函数计算
推荐文章
更多