前言
随着前端技术的不断发展,前端项目的规模逐渐变大,前端部署的难度也逐渐增加。不少企业已经采用了前端渐进式升级的方式,将前端项目从传统的 SSR(服务端渲染)方案向 SPA(单页面应用程序)方案演进。而 Fastboot 作为一种框架无关的渲染器,可以用来将现有的 Ember 应用程序转换成一个可以在服务器端运行的应用程序,提供更好的 SEO(搜索引擎优化)和更快的初始加载速度。
本文介绍 npm 包 @upsilon/ember-cli-deploy-fastboot-lambda 的使用教程,它是一种使用 AWS Lambda 和 API Gateway 作为 Fastboot 渲染器的解决方案,可以帮助开发者快速搭建并部署 Fastboot 应用程序。
安装 & 部署
安装
在你的项目中安装 @upsilon/ember-cli-deploy-fastboot-lambda。
npm install --save-dev @upsilon/ember-cli-deploy-fastboot-lambda
在你的项目中安装 AWS CLI。
pip install awscli --upgrade --user
部署 & 配置
在 AWS Lambda 上创建基础架构。
ember fastboot:deploy lw-fastboot
在 AWS API Gateway 上创建一个新的 API。
配置 API Gateway 的资源和方法。
export API_GATEWAY_ID=[your API Gateway ID] export API_GATEWAY_REGION=[your API Gateway region] export FASTBOOT_FUNCTION_NAME=[your Fastboot Lambda function name] export FASTBOOT_FUNCTION_REGION=[your Fastboot Lambda function region] npm run configure --fastbootBucket=[your Ember app's S3 bucket name] --distDir=[your app's build output directory] --apiGatewayId=$API_GATEWAY_ID --apiGatewayRegion=$API_GATEWAY_REGION --fastbootFunctionName=$FASTBOOT_FUNCTION_NAME --fastbootFunctionRegion=$FASTBOOT_FUNCTION_REGION
其中,fastbootBucket 和 distDir 参数对应的是你的 Ember 应用程序的构建输出目录。
如果你使用的是 Express 应用程序,则可以使用 npm run configure --fastbootServer=true 来配置资源和方法。
配置环境变量并上传 Fastboot 应用程序。
export AWS_REGION=[your AWS region] export AWS_ACCESS_KEY_ID=[your AWS access key ID] export AWS_SECRET_ACCESS_KEY=[your AWS secret access key] npm run upload
其中,AWS_REGION 是你的 AWS 区域名。AWS_ACCESS_KEY_ID 和 AWS_SECRET_ACCESS_KEY 是你的 IAM 用户的访问密钥,用于访问 AWS 服务。
从 API Gateway 获取 Fastboot 应用程序的 URL。
echo "https://$API_GATEWAY_ID.execute-api.$API_GATEWAY_REGION.amazonaws.com/prod/\$(fastboot --config=fastboot-config.js url /)"
至此,Fastboot 应用程序已经成功部署到 AWS Lambda 与 API Gateway 上。
示例代码
下面是一个示例的 Ember 应用程序的部署,它使用了 @upsilon/ember-cli-deploy-fastboot-lambda 这个 npm 包。
首先,在你的 Ember 应用程序中安装 @upsilon/ember-cli-deploy-fastboot-lambda 依赖。
npm install --save-dev @upsilon/ember-cli-deploy-fastboot-lambda
然后,在你的应用程序的 config/deploy.js 文件中增加以下部署配置。
-- -------------------- ---- ------- ---- -------- ----- ---- - ---------------- ----- ---------------- - ----------------------------------- ----- -- - ------------------------------ ----- -------------- - ----------------------------------------------------- -------------- - - -------- - - ----- -------- ---- ----- --------- -- - ----- -------------------- -- -- - ----- -------------------------- ---- ----------- ----- ------------ - --- ------------------ ----- ------------------------- ----- --------------------- --- ----------- ---------------------------- --- ----- -------------------------- --- - -- - ----- --------- ---- ----- --------- -- - ----- ------ - --------------------- ----- ------ - --- ---- ------- ----------------- ------------ ---------------------- ---------------- -------------------------- ----------------- ----- --------- --- --------------------------------- --- ----- - ------- - - ---------------------- ----- -------------------- -- -- - ----- --------------------------- ---------- -- ---------- ----- ------------ - --- ------------------ ----- ---------------------- ----- --------------------- --- ----------- ---------- ------------------ ------- ---------- -------- --- ----- ------------------ -------- ------- --- --- - -- - ----- --------- ---- ----- --------- -- - ----- -------------------- - --- ---------------- ----- ----------------------------------- -------- ---------------- ------------------- - ------ ------ -- --- ----- -------------------- -- -- - ----- --------------------------- ---- ----------- ----- ------------------------------ ----- ------ - ------------------------------------- ----- ----------- - ----- -------------------------------- -- --- ----------- -- --- ------ ------- -- -- --- ------ -- ----- --------------------- - - ------------------------- ----------- -- ----- --------------------- -------- --- --- ------------------- ----- ---------------------- --- --- ---- -------- -- ---------------------- --- - - -- -- --- -- ------ -------- ------- - ----------- - ------ --- -- --- ------- --- -- --- --------------- - ----------------- -------------------- -------------------------------- -------------------------- -------------------- ------------------------------------------ ------------- ------------------------------------------------ ----------- ----- -- -- -- --
最后,在你的应用程序中部署 Fastboot 应用程序。
ember deploy production --activate
参考文献:
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6006734f890c4f727758389e