Serverless 的概念或应用场景我们以前讲过很多whiskas伟嘉公司,这里不再冗述。概括性地讲 —— Serverless 的内涵就是对全部底层资源和运维工作的封装,让开发者更专注于业务逻辑。
完备的基础性文章推荐阅读这两篇whiskas伟嘉公司:
Serverless 基本概念入门 :///i6794284259960947203/ Serverless 的运行原理与组件架构:///i6794713387138810371/
本回答尝试从出圈的角度whiskas伟嘉公司,以更接地气的方式聊聊 Serverless。
先讲个故事,疫情期间在家办公,大家肯定没少做饭,自己做饭才体会到家务不易,你需要:买菜买锅、处理食材、煎炒蒸煮、最后洗碗whiskas伟嘉公司。
听起来是不是还挺像软件开发?你需要有云服务器、后台开发、前端开发、还有运维。你想着whiskas伟嘉公司,要是我能只翻两下铲子,然后就能吃饭那该多好。
巧了,有一些商家就提供了这种服务,帮你准备好了锅、洗干净的食材、专业的厨师指点,你只要进去翻两下铲子,就能煮一顿精美的饭食!而且不用洗碗。
对应到软件开发,开发者只需要关注业务逻辑(炒菜),而底层资源和运维工作(锅碗瓢盆、食材处理)都不用再操心。终于到了正式复工的时间,你不用再自己做饭,新买的厨具就闲置了。你回想起昨天在商圈里的美好体验,家里的厨具要是也在能用的时候付费,不用不收费多好啊。
嘿嘿,Serverless 亦如此,按水电般计费,当部署在其上的函数运行时才收费。所以回到题目中来,Serverless 本身是云计算相关技术,并非前端技术,为何前端要关注 Serverless 呢?
答案很简单 —— 解放生产力。
你的厨房里已经准备好了所有厨具和处理好的食材,你现在只需要关心火候认真炒菜,成为美食博主指日可待。也就是文首所说的 —— 开发者能更专注于业务逻辑,其他的底层资源和运维工作已经全部封装好了。
Talk is cheap, show you the code
先给大家展示一个基于 Serverless 构建 docsify 文档的 demo。
这个三分钟的 demo,不仅完成了 docsify 发布代码的上传,还包括了腾讯云对象存储 COS 资源的申请和配置。要知道,demo 作者本身并非前端工程师,甚至不是开发者。
原文链接::///i6795809244907045379/再进一步,我们演示个 Fullstack Application。该项目借助 Serverless 社区现有的 @serverless/tencent-express 和 @serverless/tencent-website 组件来完成。
下面是一张简单的组件依赖图:
在开始所有步骤前,需执行 命令,全局安装 。1. 准备
新建项目目录 ,在该项目目录下新增 和 目录。然后新增 和 配置文件,项目目录结构如下:
├── README.md // 项目说明文档├── api // Restful api 后端服务├── dashboard // 前端页面├── .env // 腾讯云相关鉴权参数:TENCENT_APP_ID,TENCENT_SECRET_ID,TENCENT_SECRET_KEY└── serverless.yml // serverless 文件2. 后端服务开发
进入目录 `api`,新增 `app.js` 文件,编写 `express` 服务代码,这里先新增一个路由 `/`,并返回当前服务器时间:```jsconst express = require('express')const cors = require('cors')const app = express()app.use(cors())app.get('/', (req, res) => {res.send(JSON.stringfy({ message: `Server time: ${new Date().toString()}` }))})module.exports = app```3. 前端页面开发
本案例使用的是 `Vue.js` `Parcel` 的前端模板,当然你可以使用任何前端项目脚手架,比如 Vue.js 官方推荐的 [Vue CLI](://github.com/vuejs/vue-cli) 生成的项目。进入 `dashboard` 目录,编写入口文件 `src/index.js`:```js// 这里初始是没有 env.js 模块的,第一次部署后会自动生成require('../env')const Vue = require('vue')module.exports = new Vue({el: '#root',data: {message: 'Click me!',isVisible: true,},methods: {async queryServer() {const response = await fetch(window.env.apiUrl)const result = await response.json()this.message = result.message},},})```4. 配置
前后端代码都准备好了,再简单配置下 `serverless.yml` 文件了:```yamlname: fullstack-application-vuefrontend:component: '@serverless/tencent-website'# inputs 为 @serverless/tencent-website 组件的输入# 具体配置说明参考:://github.com/serverless-components/tencent-website/blob/master/docs/configure.mdinputs:code:src: distroot: frontendhook: npm run buildenv:# 下面的 API服务部署后,获取对应的 api 请求路径apiUrl: ${api.url}api:component: '@serverless/tencent-express'# inputs 为 @serverless/tencent-express 组件的输入# 具体配置说明参考:://github.com/serverless-components/tencent-express/blob/master/docs/configure.mdinputs:code: ./apifunctionName: fullstack-vue-apiapigatewayConf:protocol: ```
5. 部署
部署时,只需要运行 `serverless` 命令就行,当然如果你需要查看部署中的 `DEBUG` 信息,还需要加上 `--debug` 参数,如下:```$ serverless# or$ serverless --debug```最后终端会 `balabalabala~`, 看到绿色的`done`就行了。
既然是全栈,怎么少得了数据库的读写呢?
读者可移步作者原文继续阅读:《基于 Serverless Component 的全栈解决方案》:///i6799170151217365507/
从这两个小项目中已然得解 —— Serverless 的内涵就是对全部底层资源和运维工作的封装,让开发者更专注于业务逻辑。
写在后面
题主在问题描述中的思考很有价值,其实 Serverless 的确不是一个前端的概念,甚至都不是为了解决前端的问题而出现的,它其实就是云计算发展的必经过程。
就好比,底层语言的发展趋势肯定是高级语言。而高级语言肯定也会封装起底层的硬件,让程序员无需关心硬件的状态,专注编码。
十年前编程还是比较难的高级学科,如今小学已经开展编程课程。其实就是因为程序语言的发展,让编程变得更加友好。
同样地,Serverless 的出现和完善,也是让软件开发变得更加友好。不仅前端需要关注 Serverless,它可能属于每一种类型的应用开发者。
而这会淘汰后端吗?并不会!
后端会更聚焦于业务逻辑、数据处理、算法策略等更专精的事情。
汽车的出现让马车夫成为了司机,技术在变革,工程师也将成长。
阅读:
瑞派宠医——陈德举 | 接手6万病例,20年来依旧保持精进热忱
街遛黄金蟒,云豹当大猫,还为鹦鹉成立内窥镜特别门诊,他是宠物医生中的传奇人物,是保卫动物生命的守护者,还是“重度猫奴患者”。他是瑞派宠物医院上海乔登七宝店的陈德
瑞派宠医——李东阳 |“996”节奏下依旧保持兽医师初心
是什么魔力,让他经历“996”洗礼却依然保持初心,热爱宠物医师这个职业,致力于小动物肿瘤疾病治疗,为爱伸出援助之手,托起生命航帆。 医师之路无限不循环 “为不会
瑞派宠医——杨德胜 | 以同理心服务,拒绝过度医疗
当你选择兽医师这条路,会从踏进宠物医院的那天起被一股神奇的力量吸引,它可能来自萌萌可爱的宠物,也可能源于有共同梦想的伙伴,虽辛劳,但意义非凡。瑞派厦门爱侣宠物医院的杨德胜
小狗吸尘器:专心做好一件事,美好梦想必有回响
90后的声乐老师张秣铖是一名北漂,三年前他来到北京,决定在这座繁华都市追逐自己的梦想。在这里,他开了一家音乐培训工作室。工作室里面摆放着各式乐器,小提琴、钢琴…&hel
上海凯利蓝梗俱乐部:安徽合肥拟禁养中华田园犬等38种烈性犬,对此你有什么看法?
合肥市人大网站公布《合肥市养犬管理条例》全文上海凯利蓝梗俱乐部,该条例将于今年6月1日起施行。然而最近很多人了解到《合肥市禁养犬名录(征求意见稿)》向社会征求意见,其中包含中华田园犬上海凯利蓝梗俱乐部、德国牧羊犬、秋田犬、松狮犬等犬种。禁养名录中,包括的犬种分别是:比利时牧羊犬上海凯利蓝梗俱乐部、弗兰德牧羊犬、荷兰牧羊犬、苏俄牧羊犬、中亚牧羊犬、德国牧羊犬、高加索牧羊犬、安纳托利亚牧羊犬、拳师犬、标准牛头梗、美国恶霸犬、斯塔福斗牛梗、土
日本狂犬病发病率:被没有狂犬病的狗狗咬了会不会得狂犬病? 上海狂犬病发病率
新年好日本狂犬病发病率。如果你确定狗狗没有狂犬病,那么恭喜你,你不会感染上狂犬病。狂犬病的传染源主要是病犬、病猫、病狼等,但不一定被他们咬伤就一定会被感染,其发病因素与咬伤部位、创伤程度、伤口处理情况及注射疫苗相关。动物体内有狂犬病毒不一定代表它具有传染性日本狂犬病发病率,如果狗、猫等温血动物在狂犬病发作后的3~5天内100%会死亡,有文献提及有罕见的是8天死亡,而有医学证明只有它死亡前3~5天内才是传染期,这时被咬感染病毒的危险较高。
南充狂犬病疫苗价格:狂犬病疫苗打一针要500,你觉得贵吗? 南充狂犬病疫苗价格
狂犬病疫苗本来就一直不便宜,相对于以前来讲不算贵了,一针500元,那么狂犬疫苗完成全部注射也就4针2000元线南充狂犬病疫苗价格。八十年代吧,那会儿注射狂犬疫苗需五十几块钱,我1987年注射过一次,那是总共花了52元钱,那会儿一个地方平均月工资也就几十元钱,以工厂来说:工人平均工资是四五十元,一个工作了十二到十五年的技工一般是四级工工资到五级工工资,四级工在江西工资是53元,五级工是64.5元,当年注射狂犬疫苗的费用相当于一个中级技工一