共计 4721 个字符,预计需要花费 12 分钟才能阅读完成。
信也神笔流动平台是基于最前沿的拉新、促活、成交等业务而打造的一站式低代码无代码平台。通过极速投放、渠道归因、大盘剖析、策略调整来升高获客老本、进步成交量,助力企业实现营销收益最大化。
信也神笔反对登录注册、营销弹窗、红包雨、摇钱树、猜一猜、摇一摇、年货节、秒杀免单、认证提额、捐步数做公益、积分领好礼、助力领好礼、新客领好礼、分享领红包、分享测额度、免息费、挪动积分兑换、亲友礼券、一飞冲天等二十余种流动的自助设计与投放。具备全自助、性能高、体验好、千人千面、多租户、开箱即用等特点,在信也科技外部上线 2 年工夫内,已在团体多条业务线上同步开展应用,自主配置了 427 次 Landing、弹窗、流动等,极大节俭了人力老本,进步了经营效率和成交量。
神笔设计平台
信也神笔流动设计平台从架构上次要分为“搭建平台、云端、客户端”三局部,整体是通过云端一体化的计划来实现的,达成了简单业务、极致性能、高效交付三者的无效对立。下文将重点介绍神笔营销一体化的技术计划。
神笔技术架构
1、国际化业务应用
- 国际化业务如何反对多语言的?
国际化业务需反对多语言,应用了 i18n 组件,应用这个组件对我的项目的批改很小,将每种语言封装成独立的语言包,因为不同国家部署在不同国家的服务器上,通过构建脚本设置变量来辨别语言。
var language = 'en'
if (process.env.COUNTRY === 'ID') {language = 'id'} else if (process.env.COUNTRY === 'PH') {language = 'en'} else if (process.env.COUNTRY === 'VN') {language = 'vi'}
const i18n = new VueI18n({
locale: language,
messages,
})
- 国际化是如何接入的?
国际化业务接入绝对简单一些,首先就是代码兼容,前端除了须要反对多语言,还有独自的存储服务、预览地址、OSS,而且后端 JAVA 服务依赖公司的中间件 DAS、Cache、Cat、Apollo、网关、Redis 等,但这些中间件国际化都没应用,过后就剥离了这些中间件,只保留 Apollo,又接入了国际化的 Cas 权限零碎,图片存储服务也从七牛改为 阿里云 OSS。其次就是站点部署,国际化站点公布形式还是通过 Jenkins,所有的构建打包都是最传统的形式,神笔平台波及三个站点,前端 1 个 Corp 站点,1 个 SSR 站点,1 个数据存储的 JAVA 站点。部署前须要建库建表建账号,提供构建命令和 Dockerfile 文件,接下来就是国际化业务接入神笔平台,目前国际化神笔平台反对 Landing、弹窗和惯例流动的自主化配置和公布。
2、疾速排版
- 配置内容有那些?
神笔流动设计平台整体分三块,组件抉择区、编辑预览区、组件属性编辑区。组件抉择区,能够通过拖拽或点击抉择组件到编辑预览区,组件抉择区还列出所有已抉择的组件,能够通过拖拽列表进行排序,列表上右键能够复制、删除和设置组件对齐形式;编辑预览区,反对拖拽组件和实时预览页面,对以后激活组件通过拖拽进行排序,也能够右键复制、删除和设置组件对齐形式,文本组件可间接输出;组件属性编辑辨别为组件配置、页面配置和页面治理,
其中组件配置包含属性配置和款式配置。属性配置是对组件内容的配置,例如文本内容、图片、按钮文字、按钮类型、跳转链接和文本输入框内容等。款式配置包含外层容器款式和组件本身款式配置,对于每个组件反对配置哪些款式,能够自在定制,例如组件布局、对齐形式、背景色、渐变色、背景图、内外边距、层级、宽高、边框款式等,所有 CSS 款式只须要配置一下都能够反对;页面配置包含页面背景图、背景色、渐变色和页面题目,一些页面级的属性;页面治理是对多页面利用的反对。
- 如何分类的?
这里重点说一下,组件的款式属性配置,基本上每个组件都是多级嵌套的 Dom 构造,所以咱们把款式的配置也拆分成容器款式和本身款式,容器款式就是组件的父节点的款式,包含组件定位形式(相对、绝对和响应式 Flex),组件背景色、渐变色和背景图,宽度和高度,内外边距、层级和边框款式等,组件的子节点也能够有单个子节点和多个子节点。本身款式就是对单个子节点款式的配置,而外部款式是对多个子节点款式别离配置,组件本身款式和外部款式都是组件内容级的款式,即对组件外面内容的款式进行配置,所有的款式都能够反对配置,不必辨别 Dom 元素的类型。
3、一体化渲染
- 前端组件如何在云端和客户端复用的?
封装后的前端组件反对云端和客户端复用,后面提到平台上有一个编辑预览区,这个预览区的组件和实在渲染进去的组件是同一个组件,包含视图、逻辑和款式,所以组件只须要开发一次,就能够在云端和客户端同时应用。如下代码就是通过在云端和客户端引入组件,通过循环组件的配置 list,通过 propertyName 去辨别文本、图片、输入框等不同组件,配置属性通过 props 传到组件中。
<div class="editor-preview" :style="pageStyle" :key="pageKey">
<div v-for="item in componentList" :key="item.id" :id="`id_component_${item.id}`" :class="generateContainerClass(item)" :style="generateStyleByObj(item.containerStyle,true)">
<Child v-for="innerItem in item.children" :obj="innerItem" :key="innerItem.id"></Child>
<CText v-if="item.propertyName =='text'":content="item.property.html":styleStr="generateStyleByObj(item.selfStyle, true)":id="item.id"/>
<CImage v-else-if="item.propertyName =='image'":url="item.property.url":styleStr="generateStyleByObj(item.selfStyle, true)"/>
<CInput v-else-if="item.propertyName =='input'":placeholder="item.property.placeholder":styleStr="generateStyleByObj(item.selfStyle, true)"/>
<CButton v-else-if="item.propertyName =='button'":propery="item.property":styleStr="generateStyleByObj(item.selfStyle, true)"/>
<Popup v-else-if="item.propertyName =='popup'":itemConfig="item"/>
</div>
</div>
- Vue-SSR 组件是如何渲染的?
Vue-SSR 就是将一个组件在服务器端渲染为 HTML 字符串,将其间接发送到浏览器端,最初将这些动态标记 ” 激活 ” 为客户端上齐全可交互的应用程序,所以 Vue-SSR 有一个 Server 端和一个 Client 端,Server 端将从后端服务器返回的数据,渲染成 HTML 字符串,所以绝对于 CSR 来说,服务器负载变大,所以须要退出监控,对于内存、CPU 占用过高,就降级为 CSR,还有缓存 Server 端,判断以后用户有没有过期,如果没过期就缓存后果。
- 什么时候抉择用 Handlebars?
Handlebars 是一种 JS 模板引擎,不是框架,所以 Handlebars 轻量级,应用起来不便简洁,可疾速创立模板,对于模板简略、没有太多简单的交互的场景比拟实用,比方 Landing 和资讯文章,能够通过生成动态页面把性能提到极致。但因为 Handlebars 通过填充数据生成动态 HTML,所以其代码可读性比拟差,填充的内容数据类型不直观,须要进行转换,假如页面的交互非常复杂,就会产生逻辑代码保护艰难的状况,倡议应用 Vue-SRR 同构渲染。
{{!-- 组件区 --}}
{{#each components}}
{{!-- 图片组件 --}}
{{#if_eq propertyName 'img'}}
<div class="component-container" style="{{style}}" onclick="onPictureClick(this,'{{inProp.content}}')">
<img src="{{inProp.content}}" />
</div>
{{/if_eq}}
{{!-- 输出组件 --}}
{{#if_eq propertyName 'textarea'}}
<div style="{{style}}" class="component-input" data-name='{{inProp.name}}'>
<input type="text" name="{{inProp.name}}" placeholder="{{inProp.content}}">
</div>
{{/if_eq}}
{{/each}}
4、流动模板研发
- 流动模板是如何接入的?
目前组件类型分根底和流动,根底组件包含文本、图片、输入框、按钮、容器和弹窗,这类组件是通用性比拟强,满足个别简略页面的配置。流动组件就比拟便定制化,针对一些惯例类流动,拆分出须要定制化的流动组件,不须要定制化的组件能够由根底组件组装而成,流动接入时,首先在组件抉择区的流动类中增加流动组件选项,包含名称和 ICon,而后在编辑预览区引入流动组件 Vue,这里是残缺的组件,包含视图、逻辑和款式,而后在组件属性编辑区增加须要编辑的属性,在对属性编辑时,编辑预览区可实时预览成果,不必切换窗口来预览成果,简略不便。
在接入流动时,首先要拆分组件,哪些组件须要定制化,哪些组件能够通过根底组装而成,对于定制化组件须要哪些属性的配置,组件与组件之间如何通信,这些在接入前须要思考和设计好的,只有后期设计好这些,那接入的效率就事倍功半。
- 如何进步流动的配置效率?
如果要进步流动的配置效率,首先就是在流动模板的设计上,尽量简化属性配置,同时又能满足流动通用性的业务需要,后期要多与产品沟通,相熟流动设计背景,对于新流动设计初期,就应该从流动模板的角度去设计这个流动,对于使用者了解和操作越简略越好。其次就是模板化,配置过的流动都是模板,对模板做克隆操作,在克隆后的模板上只须要对配置做轻微的调整,就能够生成新的流动链接,即生成新的流动模板。
5、流动 ID 买通投放全流程
创建活动时候,会生成一个惟一的流动 ID,作为流动的惟一标识符,贯通整个流动的生命周期。调用后端 JAVA 服务时候,以流动 ID 来获取中奖后果,流动 ID 与 Offer 平台买通,进行奖品发放,还有前期投放渠道分类、排期治理和收益大盘剖析,流动 ID 贯通在整个业务的传输链接中。
随着数字化时代的到来,数字化转型和降级已成为企业的共识,信也科技也将不遗余力,始终秉持“科技,让金融更美妙”的使命,致力于研发更高效、更智能的数字化工具,积极探索数字赋能,继续为合作伙伴发明更大的价值,携手发明金融科技行业新生态。
作者介绍
HH,信也科技前端专家,负责借款市场前端研发、借款买量平台建设
CC,信也科技前端资深专家,负责借款前端团队、大前端技术委员会