Serverless Framework的入门到实战
一、云函数和serverless
的区别
通过前面小章节的介绍,我们认识到了云函数和serverless
,但是可能会有一个很迷惑云函数和serverless
到底有什么区别,他们之间有什么联系,为什么我在创建云函数的时候选择模板方式创建最后创建的是serverless
,而不是云函数呢。下面我们将解答云函数和serverless
的区别
-
1、
Serverless Framework
是Serverless
公司推出的一个开源的Serverless
应用开发框架。 -
2、
Serverless Framework
是由Serverless Framework Plugin
和Serverless Framework Components
组成。 -
3、
Serverless Framework Plugin
实际上是一个函数的管理工具,使用这个工具,可以很轻松的部署函数、删除函数、触发函数、查看函数信息、查看函数日志、回滚函数、查看函数数据 等。简单的概括就是serverless
其实就云函数的集合体,使用serverless
后我们创建的云函数不需要手动去创建触发器等操作。 -
4、官方地址
二、Serverless Framework
应用场景
上面既然介绍了云函数和serverless
的区别,现在我们介绍下什么场景下需要使用serverless
,而不是使用云函数,其实在实际开发过程中,我们都是使用serverless
而不去使用云函数,毕竟云函数的使用场景受限,或者说比较基础。打一个简单的比方,在写js
操作dom
的时候,你会选择用原生js
还是会使用jquery
一样的比喻。
-
1、基于云函数的命令行开发工具
通过
Serverless Framework
,开发者可以在命令行完成函数的开发、部署、调试。还可以结合前端服务、 API 网关、数据库等其它云上资源,实现全栈应用的快速部署。 -
2、传统应用框架的快速迁移
Serverless Framework
提供了一套通用的框架迁移方案,通过使用Serverless Framework
提供的框架组件(Egg/Koa/Express
等,更多的框架支持可以参考),原有应用仅需几行代码简单改造, 即可快速迁移到函数平台。同时支持命令行与控制台的开发方式。
三、创建serverless
的方式
1、在腾讯serverless
控制面板上创建,然后在vscode
中使用插件的方式下载到本地注意 编辑器上要选择和创建serverless
地区相同,才能看到项目,否则是看不到项目代码的】
2、使用客户端cli
命令方式创建,个人也更推荐使用这种方式创建,修改代码,然后部署到后台(这里说的后台是,腾讯云服务上)
3、下面介绍使用客户端的cli
的方式创建一个express
模板项目,然后部署到服务器上,然后对项目的简单修改,在浏览器上访问:
(1)在空目录下使用命令
properties
serverless
(2)选择模板并且命名项目,当项目创建完后会提示你是否要部署到云端,如果选择Y
会将代码上传并且部署,如果选择N
就直接退出
(3)如果选择要部署到云端会出现登录的二维码和url
地址,如果电脑屏幕从黑窗口中扫描不方便可以选择复制url
到浏览器上登录
(4)第一次部署会比较慢,因为要上传node_module
文件夹,当部署成功后会出现一些提示信息
a. 可以复制访问地址到浏览器上查看部署的项目效果
b. 也可以复制应用控制图的地址到浏览器上查看部署项目的具体信息
(5) 本地用编辑器打开项目修改然后继续推送到云端
如果你想要推送到云端的速度更快,可以修改serverless.yml
文件。有点类似.gitignore
文件的功能,不提交到git
这里仅仅是不推送到云端。
使用命令推送至云端
properties
serverless deploy
有的同学会问了,为什么第二次推送到云端不需要扫码登录?这是因为第一次扫码登录,会在项目文件夹下创建一个.env
的文件,里面存储了登录的相关信息
- 4、如果加上了排除
node_modules
包上传的命令,当部署成功后,不出意外的话,你访问是会提示包不存在错误,如下图
-
5、处理的方式有两种
-
1、是不修改
serverless.yml
文件,将node_modules
文件上传,上传时间会久点而已 -
2、在
serverless
中开启自动拉取包的功能
-
点击开启自动安装依赖包,然后点击部署,再次访问又可以了
四、本地调试项目
上面我们改完代码就部署项目到云端(推送代码到云端就是部署),有点类似我们现在的模式中,我们不可能每次改完代码都到jenkins
发布下,然后看效果,这样大大降低了我们开发效率,我们要在本地运行没问题,然后将运行没问题的代码推送到云端,在真实的开发场景中,应该是你连推送到云端的权限都没有,你仅仅是本地开发业务代码,然后提交到git
仓库中,你们的leader
拉取你的代码,然后统一推送到云端,推送到云端就相当于项目部署一次。下面介绍,如何在本地调试express
项目
-
1、在项目的根目录下创建一个
app.js
文件javascriptconst app = require('./sls'); const PORT = 3000; app.listen(PORT, () => { console.log(`服务已经启动: http://localhost:${PORT}`); });
-
2、本地使用
node
或者nodemon
来启动app.js
文件,就可以在本地调试代码
- 3、调试没问题,然后再推送到云端验证效果