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



相关实践学习
【AI破次元壁合照】少年白马醉春风,函数计算一键部署AI绘画平台
本次实验基于阿里云函数计算产品能力开发AI绘画平台,可让您实现“破次元壁”与角色合照,为角色换背景效果,用AI绘图技术绘出属于自己的少年江湖。
从 0 入门函数计算
在函数计算的架构中,开发者只需要编写业务代码,并监控业务运行情况就可以了。这将开发者从繁重的运维工作中解放出来,将精力投入到更有意义的开发任务上。
相关文章
|
2月前
|
人工智能 运维 安全
加速智能体开发:从 Serverless 运行时到 Serverless AI 运行时
在云计算与人工智能深度融合的背景下,Serverless 技术作为云原生架构的集大成者,正加速向 AI 原生架构演进。阿里云函数计算(FC)率先提出并实践“Serverless AI 运行时”概念,通过技术创新与生态联动,为智能体(Agent)开发提供高效、安全、低成本的基础设施支持。本文从技术演进路径、核心能力及未来展望三方面解析 Serverless AI 的突破性价值。
|
自然语言处理 API C++
阿里通义推出SmartVscode插件,自然语言控制VS Code,轻松开发应用,核心技术开源!
SmartVscode插件深度解析:自然语言控制VS Code的革命性工具及其开源框架App-Controller
1776 1
阿里通义推出SmartVscode插件,自然语言控制VS Code,轻松开发应用,核心技术开源!
|
9月前
|
人工智能 开发工具 C++
利用通义灵码AI在VS Code中快速开发扫雷游戏:Qwen2.5-Max模型的应用实例
本文介绍了如何利用阿里云通义灵码AI程序员的Qwen2.5-Max模型,在VS Code中一键生成扫雷小游戏。通过安装通义灵码插件并配置模型,输入指令即可自动生成包含游戏逻辑与UI设计的Python代码。生成的游戏支持难度选择,运行稳定无Bug。实践表明,AI工具显著提升开发效率,但人机协作仍是未来趋势。建议开发者积极拥抱新技术,同时不断提升自身技能以适应行业发展需求。
22662 18
利用通义灵码AI在VS Code中快速开发扫雷游戏:Qwen2.5-Max模型的应用实例
|
8月前
|
JavaScript 前端开发 程序员
甚至用不了五分钟就能学会vscode插件开发
本文介绍了VSCode插件的开发流程,从创建项目到最终发布。首先通过安装`yo`和`generator-code`脚手架工具初始化项目,选择JavaScript语言配置基础信息。接着,在`extension.js`中实现业务逻辑,例如将中文“变量”替换为“var”。通过F5进入调试模式验证功能。完成后使用`vsce`工具进行打包,解决可能遇到的版本不兼容或README文档问题。最后生成`.vsix`文件,可通过VSCode的“从VSIX安装”加载插件,实现开发闭环。进一步可将插件发布至官方市场供更多开发者使用。
|
10月前
|
Cloud Native 安全 Serverless
云原生应用实战:基于阿里云Serverless的API服务开发与部署
随着云计算的发展,Serverless架构日益流行。阿里云函数计算(Function Compute)作为Serverless服务,让开发者无需管理服务器即可运行代码,按需付费,简化开发运维流程。本文从零开始,介绍如何使用阿里云函数计算开发简单的API服务,并探讨其核心优势与最佳实践。通过Python示例,演示创建、部署及优化API的过程,涵盖环境准备、代码实现、性能优化和安全管理等内容,帮助读者快速上手Serverless开发。
|
11月前
|
JavaScript 前端开发 jenkins
抛弃node和vscode,如何用记事本开发出一个完整的vue前端项目
本文探讨了在不依赖Node和VSCode的情况下,仅使用记事本和浏览器开发一个完整的Vue3前端项目的方法。通过CDN引入Vue、Vue Router、Element-UI等库,直接编写HTML文件实现页面功能,展示了前端开发的本质是生成HTML。虽然日常开发离不开现代工具,但掌握这种基础方法有助于快速实现想法或应对特殊环境限制。文章还介绍了如何用Node简单部署HTML文件到服务器,提供了一种高效、轻量的开发思路。
278 10
|
监控 Serverless 云计算
探索Serverless架构:开发实践与优化策略
本文深入探讨了Serverless架构的核心概念、开发实践及优化策略。Serverless让开发者无需管理服务器即可运行代码,具有成本效益、高可扩展性和提升开发效率等优势。文章还详细介绍了函数设计、安全性、监控及性能和成本优化的最佳实践。
|
开发工具 C++ git
利用VS Code提升开发效率的五大插件推荐
本文推荐了五款能显著提升开发效率的VS Code插件:ESLint用于代码质量和风格检查;Prettier自动格式化代码;GitLens增强Git功能;Live Server提供前端实时预览;Docker支持容器管理。
|
监控 安全 Serverless
"揭秘D2终端大会热点技术:Serverless架构最佳实践全解析,让你的开发效率翻倍,迈向技术新高峰!"
【10月更文挑战第23天】D2终端大会汇聚了众多前沿技术,其中Serverless架构备受瞩目。它让开发者无需关注服务器管理,专注于业务逻辑,提高开发效率。本文介绍了选择合适平台、设计合理函数架构、优化性能及安全监控的最佳实践,助力开发者充分挖掘Serverless潜力,推动技术发展。
448 1
|
网络安全 Docker 容器
VScode远程服务器之远程 远程容器 进行开发(五)
VScode远程服务器之远程 远程容器 进行开发(五)
438 1

相关产品

  • 函数计算