使用轻服务+React 快速搭建 Web 站点

1,607 阅读2分钟

最近,发现字节内部的轻服务(轻服务 - 先于时代的云服务 (qingfuwu.cn))已经对外放开测试,于是尝试了一下,果然整个开发部署流程如丝般顺滑。因此写了这篇小文,记录一下使用的大致流程。

注册与认证

由于通过轻服务可以在其提供的域名下快速建站,实际上相当于帮用户跳过了网站备案的过程,因此在注册后使用前需要进行实名认证。实名信息输入后,邮件通知的是 3 天审核完毕,但实际提交后,大概 1 分钟左右的时间就给我认证通过了,可以说非常迅速了~

使用云函数快速搭建 Server 服务

在搭建 Web 站点之前,我们先得准备几个 API 服务,轻服务实际支持云工程和云函数两种方式进行 Server 服务的搭建。云工程可以通过 Koa 或者是 Express 框架搭建,同时也

为了方便,我们选用了云函数进行搭建,写了一个非常简单的 greeting 服务,请求方输入名称,服务会返回 “hello ${name}” 打招呼的字段,代码如下:

代码编写完成后,点击上线,然后复制调用地址到 Postman 中进行接口测试:

可以看到,刚部署的云函数服务能够根据输入的名字返回正确的 greeting 字段,部署成功!

使用站点托管上线 Web 应用

前端 Web 应用选择使用 React 开发,对 React 使用不太熟练的同学可以移步 React 的官方教程:创建新的 React 应用 – React (reactjs.org)

通过 create-react-app 创建完 React 项目后,安装 axiosantd 包,并且对 App.js 文件中的主代码进行了部分修改,添加了和服务端交互的逻辑:

function App() {  const [name, setName] = useState('');  const [greeting, setGreeting] = useState('');  function onInputChange(e) {    setName(e.target.value);  }  /** 发送请求获取 greeting 结果 */  function onGreeting() {    axios.post('https://qcox9g.fn.thelarkcloud.com/greeting', { name }).then(res => setGreeting(res.data && res.data.greeting));  }  return (    <div className="App">      <header className="App-header">        <div className="greeting aread">          <p>            给下面的人打招呼          </p>          <div className="action">            <Input onChange={onInputChange} />            <Button onClick={onGreeting} disabled={!name}>打招呼</Button>          </div>          <div className="response">            {`Greeting from server: ${greeting}`}          </div>        </div>      </header>    </div>  );}

本地测试无误后,运行 yarn build 命令进行打包。如果没有对配置进行修改的话,打包完成后,在根目录下应该会出现 build 文件夹,这个文件夹内就是打包产物。将 build 文件夹进行 zip 压缩,然后进入到轻服务页面,进入到“页面托管”页面,并且选中压缩后的 zip 文件直接上传即可~

上传成功后,Web 页面即部署成功,直接通过弹窗提供的链接即可访问页面:

总结:

到这里基本流程差不多就结束了,但是其实很多步骤都有更多可以探索的空间,比如在进行稍大工程的开发时,通过 git + 云工程 + 自动化脚本的形式会更方便团队进行协作与代码管理。

总的来说,轻服务确实给一些轻量级的服务,例如企业官网,小型博客等提供了一个更加省心,省钱的方案~