前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >撸一个基于腾讯云云开发cloudbase framework的包含前端后端一体的应用

撸一个基于腾讯云云开发cloudbase framework的包含前端后端一体的应用

原创
作者头像
vannding
修改2021-10-22 17:24:57
9470
修改2021-10-22 17:24:57
举报
文章被收录于专栏:vann的专栏vann的专栏

如题:

撸一个

基于腾讯云云开发cloudebase

framework

包含前端后端一体

应用

说点概念

  • 腾讯云云开发CloudBase:看官网
  • CloudBase Framework:云开发官方出品的云原生一体化部署工具,可以帮助开发者将静态网站、后端服务和小程序等应用,一键部署到云开发 Serverless 架构的云平台上,自动伸缩无需关心运维,聚焦应用本身,无需关心底层配置和资源

所以我这里做的事情就是

写一个应用,这个应用包含的端有web前端云函数服务端云数据库 等。

将这些不同形态的代码写在一起,通过framework的能力实现 一键部署 这些代码。

官方现有的应用中心:跳转

为什么想写个应用呢

image-20211020114621366
image-20211020114621366
  1. 玩儿~~~学习一下framework
  2. 验证一下,如果只存在简单的后端逻辑,那么前端是不是可以在不需要后端程序员的情况下独立完成一个完整的应用。

所以我给这个项目取了一个奇怪的名字no-back-end,简称NBE

进入正题

准备工作

  1. 代码仓库,用 coding ,怎么用就不做多的说明了。
  2. 开发环境准备-安装 CloudBase CLI
代码语言:txt
复制
   npm i -g @cloudbase/cli
  1. 准备腾讯云云开发环境。快速跳转
image-20211022112342408
image-20211022112342408

选择空白模板就好,创建好,记录下 环境ID就OK了。

  1. 本地 tcb 连接腾讯云。
代码语言:txt
复制
   tcb login

Tcb 工具会自动打开浏览器进行授权。

image-20211022112645287
image-20211022112645287

按照指引一直下一步就OK了。

image-20211022112746575
image-20211022112746575

之后控制台就显示成功登录。

准备代码

  1. 创建根目录
代码语言:txt
复制
   mkdir no-back-end
   cd no-back-end
  1. 准备两个文件夹,一个放云函数,一个放前端SPA项目
代码语言:txt
复制
   mkdir cloudfunctions
   mkdir webview
  1. 创建一个[云函数
代码语言:txt
复制
   cd cloudfunctions
   mkdir service

参考文档,在 service 目录下随便写个云函数试试。

index.js

代码语言:txt
复制
   'use strict';
   
   exports.main = async (event, context, callback) => {
     
       return {msg: '成功调用,来自云函数的msg'}
   
   };
   

package.json

代码语言:txt
复制
   {
       "name": "service",
       "version": "1.0.0",
       "description": "",
       "main": "index.js",
       "scripts": {
         "test": "echo \"Error: no test specified\" && exit 1"
       },
       "author": "",
       "license": "ISC",
       "dependencies": {
   
       }
     }
     
  1. 创建前端项目
代码语言:txt
复制
   cd webview

这里前端使用的技术栈是 Vue 3 + Typescript + Vite。我们使用脚手架生成。

代码语言:txt
复制
   yarn create @vitejs/app viteApp --template vue-ts
image-20211022151138398
image-20211022151138398

最后再稍微调整一下。

代码语言:txt
复制
   npm install
   npm run dev
image-20211022152309398
image-20211022152309398
  1. framework 的配置

详细配置说明还是需要看文档的 配置说明

根目录下新增文件 cloudbaserc.json

代码语言:txt
复制
   {
     "envId": "{{env.ENV_ID}}",
     "version": "2.0",
     "$schema": "https://framework-1258016615.tcloudbaseapp.com/schema/latest.json",
     "functionRoot": "./cloudfunctions",
     "functions": [
       {
         "name": "service",
         "timeout": 5,
         "envVariables": {},
         "runtime": "Nodejs10.15",
         "memorySize": 128,
         "handler": "index.main"
       }
     ],
     "framework": {
       "name": "no-back-end",
       "plugins": {
         "client": {
           "use": "@cloudbase/framework-plugin-website",
           "inputs": {
             "installCommand": "cd webview && npm install --prefer-offline --no-audit --progress=false",
             "buildCommand": "cd webview && npm run build",
             "outputPath": "webview/dist",
             "cloudPath": "/",
             "ignore": [".git", ".github", "node_modules", "cloudbaserc.js"],
             "envVariables": {
               "VUE_APP_ENV_ID": "{{env.ENV_ID}}"
             }
           }
         }
       }
     }
   
   }
   

根目录下 .env 文件

image-20211022153542473
image-20211022153542473

在这里加入环境变量,可以在 配置文件中读出。参考

因为前端部署要使用的静态网页功能,所以这里加了一个framework的插件 @cloudbase/framework-plugin-website

注意:在installCommand 与 buildCommand配置中,我们的前端项目由于不在根目录,所以要加上cd webview

开始部署

部署就比较简单了。

代码语言:txt
复制
tcb framework deploy 
image-20211022163058648
image-20211022163058648

片刻功夫,就已经部署好啦。打开网站入口。

image-20211022163300468
image-20211022163300468

嗯,很完美!

fce5332ad76f4476be357ebc753e8443
fce5332ad76f4476be357ebc753e8443

那我们上腾讯云看看部署了哪些东西呢?

写的云函数上去了。

image-20211022163731720
image-20211022163731720

线上测试一下云函数

image-20211022163816351
image-20211022163816351

一切正常。

看下静态托管。

image-20211022163902622
image-20211022163902622

构建产物整整齐齐的进了根目录。

同时,在我的应用中,也会

image-20211022164020053
image-20211022164020053

页面上访问云函数

上述步骤都完成了后,只是将前端和后端都部署了。并没有将前后端联通起来。所以接下来要处理一下,前端代码中访问云函数的能力。

文档里面翻了翻,云开发sdk中有个vue插件 @cloudbase/vue-provider

可是我这里用vue3,就没法使用这玩意儿了。那我们就老实点用 js-sdk吧。文档

要连接云开发环境,就需要知道 环境ID 和地域。这我们在哪里可以找到呢?

image-20211022165352398
image-20211022165352398

翻阅文档,发现部署后,会产生一个文件,里面对环境变量有声明。那我们直接用就行了。

index.html

代码语言:txt
复制
<!DOCTYPE html>
<html lang="zh">
  <head>
    <meta charset="UTF-8" />
    <link rel="icon" href="/favicon.ico" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>NBE - APP</title>
    <script src="/_init_tcb-env.js"></script>
  </head>
  <body>
    <div id="app"></div> 
    <script type="module" src="/src/main.ts"></script>
  </body>
</html>

main.ts

代码语言:txt
复制
import { createApp } from 'vue'
import App from './App.vue'

import cloudbase from "@cloudbase/js-sdk";


(<any>window)._tcbEnv = (<any>window)._tcbEnv || {
    TCB_ENV_ID: "马赛克",
    TCB_REGION: "马赛克"
}
const CloudApp = cloudbase.init({
  env: (<any>window)._tcbEnv.TCB_ENV_ID,
  region: (<any>window)._tcbEnv.TCB_REGION
});

// 匿名登录
CloudApp.auth({
  persistence: "none" 
}).anonymousAuthProvider()
.signIn()


const app = createApp(App)

app.config.globalProperties.CloudApp = CloudApp

app.mount('#app')

这里先暂时使用 匿名登录吧!注意需要在 环境配置 的登录授权中将 匿名登录打开。

image-20211022165029486
image-20211022165029486

开始调用

代码语言:txt
复制
setup() {
    const { proxy }: any = getCurrentInstance();
    console.log(proxy.CloudApp);
    const state = reactive({
      msg: "",
    });

    const getRemoteData = async () => {
      try {
        const res = await proxy.CloudApp.callFunction({
          name: "service",
        });
        state.msg = res.result.msg
      } catch (e) {
      }
    };

  

    return {
      count: ref(0),
      ...toRefs(state),
      getRemoteData,
    };
  },

效果:

image-20211022165653698
image-20211022165653698

结束

参考:

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 说点概念
  • 所以我这里做的事情就是
  • 为什么想写个应用呢
  • 进入正题
    • 准备工作
      • 准备代码
        • 开始部署
          • 页面上访问云函数
          • 结束
          相关产品与服务
          云开发 CloudBase
          云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
          http://www.vxiaotou.com