关于云计算:云开发中的战斗机-Laf让你像写博客一样写代码

28次阅读

共计 6110 个字符,预计需要花费 16 分钟才能阅读完成。

云开发中的战斗机 Laf,让你像写博客一样写代码

各位云原生搬砖师 and PPT 架构师,你们有没有想过像写文章一样不便地写代码呢?

怎样才能像写文章一样写代码? 现实的需要应该是能够在线编写、调试函数,不必重启服务,随时随地在 Web 上查看函数的运行日志,无需连贯服务器,无需折腾数据库、对象存储、Nginx 等,能够 随时随地上线利用,招之即来,挥之即去,顺手公布!

这时候懂王上线了,好家伙,这不就是 Serverless 嘛,Serverless 的愿景是用户只需专一开发用意,编写函数代码,并上传到代码仓库,其余的货色不须要关怀,Serverless 平台会主动调配计算资源,并按需运行函数。

你懂的真多,惋惜啊,仅有 Serverless 还满足不了上述需要。

要想像写文章一样写代码,除了须要 Serverless 来提供函数计算服务之外,还须要以下几个必备条件:

  • 云数据库:为利用开发提供开箱即用的数据库服务;
  • 云存储:为利用开发提供业余的文件对象存储服务,兼容 S3 和其余存储服务接口;
  • WebIDE:在线写代码,欠缺的类型提醒、代码主动实现,顺手公布上线!

懂王又上线了,这个我也懂,腾讯云开发、Google Firebase 以及 UniCloud 就提供这样的性能。

如果我通知你当初有一个平台曾经俱备了上述的所有条件,而且 齐全开源,每个开发团队都能够随时领有一个本人的云开发平台,你会不会心田狂喜?

是的,这个平台就是 Laf。

人生苦短,前端用 Laf,后端用 Laf,云开发用户用 Laf,独立开发者用 Laf,初创团队用 Laf,我也用 Laf。上链接🔗:

  • https://github.com/labring/laf

值得一提的是,Laf 在上周五一天内 Star 数量增长了近 300 个,并且后续间断几天的 Star 数量呈垂直回升,几乎就是几乎了。

👀 Laf 是什么?

Laf 实质上是一个集「函数计算」、「数据库」、「对象存储」等于一身的一站式开发平台,能够疾速的开发并公布利用。它蕴含了以下几个性能:

云函数

云函数是运行在云端的 JavaScript 代码,相熟 Node.js 的开发者能够间接上手。

云函数也能够应用 Typescript 编写,无需治理服务器,在开发控制台在线编写、在线调试、一键保留即可运行后端代码。

在你的利用中,大多数数据的获取都可在客户端间接操作数据库,然而通常业务中会应用到「非数据库操作」,如注册、登录、文件操作、事务、第三方接口等,可间接应用云函数实现。

详情请查看云函数的文档。

云数据库

前端可应用 laf-client-sdk“直连”云数据库,无需与服务端对接口。

通过在开发控制台,配置相应的拜访策略,也能够实现客户端平安操作数据库。

详情请查看云数据库的文档。

云存储

laf 云存储是根底 MinIO 提供的对象存储服务,laf 提供了齐全兼容 MinIO (aws s3-api) 的对象存储服务,在 laf oss 文档上线之前,开发者齐全可参考 MinIO 的文档来应用 laf oss。

动态托管

laf 反对动态网站的托管,能够疾速的上线动态网站,无需折腾 Nginx。

👨‍💻 谁适宜应用 Laf ?

  1. 前端开发者 + laf = 全栈开发者,前端秒变全栈,成为真正的大前端。

    • laf 为前端提供了 laf-client-sdk,实用于任何 js 运行环境;
    • laf 云函数应用 js/ts 开发,前后端代码无隔裂,无门槛疾速上手;
    • laf 提供了动态网站托管,可将前端构建的网页间接同步部署上来,无需再配置服务器、Nginx、域名等;
    • laf 后续会提供多种客户端的 SDK(Flutter/Android/iOS 等),为所有客户端开发者提供后端开发服务和统一的开发体验。
  2. 后端开发者,能够从琐事中解放出来,专一于业务自身,晋升开发效率。

    • laf 能够节约服务器运维、多环境部署和治理精力;
    • laf 能够让你辞别配置、调试 Nginx;
    • laf 能够让你辞别「为每个我的项目手动部署数据库、平安顾虑等重复性工作」;
    • laf 能够让你辞别「批改一次、公布半天」的反复繁琐的迭代体验;
    • laf 能够让你随时随地在 Web 上查看函数的运行日志,不用再连贯服务器,劳神费眼翻找;
    • laf 能够让你「像写博客一样写一个函数」,招之即来,挥之即去,顺手公布!
  3. 云开发用户,若你是微信云开发用户,你不仅能够取得更弱小、疾速的开发体验,还不被微信云开发平台锁定。

    • 你能够为客户提供源码交付,为客户公有部署一套 laf + 你的云开发利用,而应用闭源的云开发服务,无奈交付可独立运行的源码;
    • 你能够依据将来的须要,随时将本人的产品部署到本人的服务器上,laf 是开源收费的;
    • 你甚至能够批改、订制本人的云开发平台,laf 是开源的、高度可扩大的。
  4. Node.js 开发者,laf 是应用 Node.js 开发的,你能够把 laf 当成一个更不便的 Node.js 开发平台 or 框架。

    • 你能够在线编写、调试函数,不必重启服务,一键公布即可用;
    • 你能够在线查看、检索函数调用日志;
    • 你能够不用折腾数据库、对象存储、Nginx,随时随地让你的利用上线;
    • 你能够顺手将一段 Node.js 代码上云,比方一段爬虫,一段监控代码,像写博客一样写 Node!
  5. 独立开发者、初创守业团队,节约老本,疾速开始,专一业务。

    • 缩小启动我的项目开发的流程,疾速启动,缩短产品验证周期;
    • 极大水平进步迭代速度,随时应答变动,随时公布;
    • 专一于产品业务自身,疾速推出最小可用产品 (MVP),疾速进行产品、市场验证;
    • 一个人 + laf = 团队。

💥 Laf 能用来做什么?

laf 是利用的后端开发平台,实践上能够做任何利用!

  1. 应用 laf 疾速开发微信小程序 / 公众号:电商、社交、工具、教育、金融、游戏、短视频、社区、企业等利用!

    • 微信小程序强要求 https 拜访,可间接应用 [lafyun.com];(http://www.lafyun.com “lafyun.com”) 创立利用,为小程序提供 https 的接口服务;
    • 可将利用的 h5 页面和治理端 (admin) 间接部署到可由 laf 动态托管;
    • 将 h5 间接托管到 laf 上,将调配的专用域名配置到公众号即可在线拜访;
    • 应用云函数实现微信受权、领取等业务;
    • 应用云存储存储视频、头像等用户数据。
  2. 开发 Android or iOS 利用。

    • 应用云函数、云数据库、云存储进行业务解决;
    • 利用的后端治理 (admin) 间接部署到可由 laf 动态托管;
    • 可应用云函数实现微信受权、领取、热更新等业务。
  3. 部署集体博客、企业官网。

    • 将 vuepress / hexo / hugo 等动态生成的博客,一键部署到 laf 动态托管上,见 laf-cli
    • 可应用云函数来解决用户留言、评论、拜访统计等业务
    • 可应用云函数扩大博客的其它能力,如课程、投票、发问等
    • 可应用云存储存储视频、图片
    • 可应用云函数做爬虫、推送等性能
  4. 企业信息化建设:企业公有部署一套 laf 云开发平台

    • 疾速开发企业外部信息化零碎,可疾速上线、批改、迭代,降老本
    • 反对多利用、多账户,不同部门、不同零碎,即可隔离,亦可连通
    • 可借助 laf 社区生态,间接应用现存的 laf 利用,开箱即用,降老本
    • laf 开源收费,没有技术锁定的顾虑,可自在订制和应用
  5. 集体开发者的「手边云」

    • laf 让开发者顺手写的一段代码,霎时具备顺手上云的能力
    • 就像在你手机的备忘录顺手敲下一段文字,主动同步到云端,且可被全网拜访和执行
    • laf 是每个开发者的“烂笔头”,像记事一样写个函数
    • laf 是每个开发者的“私人助理”,比方随时能够写一个定时发送短信、邮件告诉的函数
  6. 其它

    • 有用户把 laf 云存储当网盘应用
    • 有用户把 laf 利用当成一个日志服务器,收集客户端日志数据,应用云函数做剖析统计
    • 有用户用 laf 来跑爬虫,抓取三方新闻和咨讯等内容
    • 有用户应用 laf 云函数做 webhook,监听 Git 仓库提交音讯,推送到钉钉、企业微信群
    • 有用户应用 laf 云函数做拨测,定时查看线上服务的衰弱状态

将来,lafyun.com 会上线一个利用市场,汇总收集这些利用,让 laf 用户一键即可应用海量利用 !

🚀 如何疾速开始?

上面咱们将在 lafyun.com 上,通过开发一个简略的「用户登录 / 注册」的性能,疾速体验 laf 云开发。

筹备工作

  1. 你须要在 lafyun.com 上注册一个账户;
  2. 登录到 lafyun.com 控制台,点击左上角的 新建 按钮,创立一个空利用;
  3. 待利用胜利启动后,点击右侧「开发」按钮,进入利用的「开发控制台」,接下来,咱们将在「开发控制台」进行第一个 laf 利用的性能开发。

编写云函数

本示例会编写两个云函数:register 解决注册申请,login 解决登录申请。

用户注册云函数

在「云函数」治理页面,点击「新建函数」,创立注册云函数 register。而后点击 register 函数右侧的「开发」按钮,进入 WebIDE,编写以下代码:

import cloud from '@/cloud-sdk'
import {createHash} from 'crypto'

exports.main = async function (ctx: FunctionContext) {
  const username = ctx.body?.username || ''const password = ctx.body?.password ||''

  // check param
  if (!/[a-zA-Z0-9]{3,16}/.test(username)) return {error: 'invalid username'}
  if (!/[a-zA-Z0-9]{3,16}/.test(password))  return {error: 'invalid password'}

  // check username existed
  const db = cloud.database()
  const exists = await db.collection('users')
    .where({username: username})
    .count()

  if(exists.total > 0) return {error: 'username already existed'}

  // add user
  const {id} = await db.collection('users')
    .add({
      username: username,
      password: createHash('sha256').update(password).digest('hex'),
      created_at: new Date()})

  console.log('user registered:', id)
  return {data: id}
}

点击右上角的「显示调试面板」(Ctrl/Cmd + B) 即可调试运行。

点击「保留」&「公布」函数即公布上线!

用户登录云函数

同上,创立 login 云函数,编写以下代码:

import cloud from '@/cloud-sdk'
import {createHash} from 'crypto'

exports.main = async function (ctx: FunctionContext) {
  const username = ctx.body?.username || ''const password = ctx.body?.password ||''

  // check user login
  const db = cloud.database()
  const res = await db.collection('users')
    .where({
      username: username,
      password: createHash('sha256').update(password).digest('hex')
    })
    .getOne()

  if (!res.data)
    return {error: 'invalid username or password'}
  
  // generate jwt token
  const user_id = res.data._id
  const payload = {
    uid: user_id,
    exp: Math.floor(Date.now() / 1000) + 60 * 60 * 24 * 7
  }

  const access_token = cloud.getToken(payload)

  return {
    uid: res.data._id,
    access_token: access_token
  }
}

点击右上角的「显示调试面板」(Ctrl/Cmd + B) 即可调试运行。

点击「保留」&「公布」函数即公布上线!

应用 curl 调用云函数

最初能够通过云函数列表页面,查看 & 复制云函数的调用地址,或将以下 curl 命令中的 APPID 替换成你的 APPID 后执行:

# 注册用户
$ curl -X POST -H "Content-Type: application/json" -d '{"username":"admin","password":"admin"}' https://APPID.lafyun.com/register

# 用户登陆
$ curl -X POST -H "Content-Type: application/json" -d '{"username":"admin","password":"admin"}' https://APPID.lafyun.com/login

APPID 能够在 lafyun.com 的欢送页面找到。

在前端我的项目中应用云函数

在你的前端我的项目中装置 laf client sdk:

$ npm install laf-client-sdk

最初,能够在你的 Vue/React/Angular/ 小程序 页面中调用这两个云函数实现具体的登录注册性能!例如:

// user.ts

import {Cloud} from 'laf-client-sdk'

const cloud = new Cloud({ 
  baseUrl: "https://APPID.lafyun.com",
  getAccessToken: () => localStorage.getItem('access_token')
})

// regiser function
export async function register(username: string, password: string) {
  const res = await cloud.invoke('register', {
    username: username,
    password: password
  })

  return res
}

// login function
export async function login(username: string, password: string) {
  const res = await cloud.invoke('login', {
    username: username,
    password: password
  })

  if(res.access_token) {
    // save token
    localStorage.setItem('access_token', res.access_token)
  }

  return res
}

注意事项

  • 咱们能够在开发控制台,查看云函数的调用日志,在线调试等;
  • 如果调用返回 404,请查看函数名是否拼写错误,或者云函数是否曾经公布。

📝 总结

运维同学与后端同学请留神,因为 Laf 过于强悍,你们不再须要折腾基础架构和后端服务,很可能会因为工作量不饱和而面临被裁的危险!留神管制危险!

正文完
 0