很多前端应用为了提供更好的交互体验,都会选择使用「单页面应用(Single-page Application)」的方式来构建,React 则是其中非常有竞争力的一套解决方案,这篇文章会演示如何创建一个最简单的 React 单页应用并部署到云引擎。
在开始之前你需要安装 10.0 以上版本的 Node.js 和 5.2 以上版本的 NPM。
首先我们选择了 create-react-app 来创建项目,它会自动配置好 React 的构建工具链,让开发者能专注在核心功能上:
npx create-react-app react-for-engine --use-npm
create-react-app 默认会使用 Yarn,为了减少需要介绍的概念我们这里选择了 NPM(
--use-npm
),但云引擎同样也是支持 Yarn 的。
等待一小会,我们就可以在本地启动页面的预览了:
cd react-for-engine
npm start # 会自动打开 http://localhost:3000
就像我们前面提到的,create-react-app 提供了开箱即用的 React 工具链,现在你可以编辑 src/App.js
中的代码,甚至不需要刷新就可以在浏览器中看到页面发生了变化。
如果要把这个应用部署到云引擎的话,我们需要在线上使用 serve 来运行一个生产环境的 Web server 提供 HTTP 服务:
npm install serve
为 serve 创建一个配置文件(static.json
),这里我们将不存在的 URL 都重写到 index.html
,以便我们的单页应用可以使用自己的前端路由(如 react-router):
{
"public": "build",
"rewrites": [
{ "source": "**", "destination": "/index.html" }
]
}
再创建一个云引擎的配置文件(leanengine.yaml
),来配置构建和启动 Web server 的命令:
build: npm run build
run: $(npm bin)/serve -c static.json -l ${LEANCLOUD_APP_PORT}
这样云引擎可以在线上完成 React 的构建过程,开发者不需要将构建产物提交进 Git 仓库也不需要额外的 CI 环境。
最后修改 package.json
配置一个较新的 Node.js 版本:
@@ -2,6 +2,9 @@
"name": "react-for-engine",
"version": "0.1.0",
"private": true,
+ "engines": {
+ "node": "16"
+ },
"dependencies": {
"@testing-library/jest-dom": "^5.11.4",
"@testing-library/react": "^11.1.0",
使用 命令行工具 部署到云引擎:
lean login # 登录帐号
lean switch # 选择应用
lean deploy # 部署代码
云引擎也支持通过 GitHub Action 来自动部署,可以在 控制台 => 云引擎 => 部署 => Git 部署 => 自动部署 中查看具体配置。
如果你在使用中国节点的话,还需要 绑定一个域名(国际版可以使用子域名),就可以在线上看到我们的应用了:
虽然我们部署的只是一个 Hello World,但实际上云引擎的标准版提供了生产级别的可用性,还有预备环境来进行发布前的预览。在绑定域名时云引擎还提供了 CDN 加速、自动维护 HTTPS 证书等能力,为前端单页应用的开发者解决发布上线环节的所有麻烦。