1.2.3 • Published 4 years ago

@bbtfe/core v1.2.3

Weekly downloads
1
License
ISC
Repository
-
Last release
4 years ago

概述

  • core是bbt业务开发及调试的核心组件。
  • core内置了bbtfe下的一些常用组件:如utils常用功能函数及基础样式,toast,version等子组件;
  • core支持了移动端响应式设计方案,依据750px的设计稿,基于vw及rem,实现响应式的移动端页面;
  • core提供了开发调试的实用的功能,如支持vConsole调试,Mock数据,双击页面刷新等;
  • core对share和ready进行了再次封装和增强,支持async,await;

引入

import core from '@bbtfe/core';
import '@bbtfe/core/dist/core.css';

2012-02-17 update to v1.2.3 //兼容wkwebview 2019-09-27 update to v1.2.2

针对script方式引入优化 修复部分bug script方式接入core的错误监控代码示例:

1.在head处引入脚本

2.初始化core组件

window.core.ready().then(function () { console.log('需要等待native ready的代码写在回调里'); });

2019-09-26 update to v1.2.0

增加前端错误/异常上报至后台日志 增加logger对象,用于日志记录 修复部分bug和代码重新优化 详细说明: 1.异常上报: 1)控制开关:core.config.enableErrorLog 默认在预上线(pre)和生产环境(prod)开启错误上报,dev和test环境不开启,以免污染后台的错误日志。

 url控制开关:&_error=true/false

2)后台日志查看地址:http://splunk3.plt.dayin.com/zh-CN/app/search/monitorfeerror?form.field1.earliest=%40d&form.field1.latest=now&form.field2=pregnancy&form.field3=&form.field4=

3)原理:core全局监听捕获了站内JS触发的异常,然后将错误日志上报给后台,字段包括报错的消息,代码位置,报错堆栈,所使用的系统(iOS/Android),孕育App版本,浏览器信息ua等。

4)注意事项:

(1)针对异步错误:

原则上, core捕获了异步函数触发的异常,这是基于unhandledrejection这个事件的,但是支持的浏览器非常有限,当前在移动端浏览器几乎不被支持,所以在封装和写异步函数的时候,强烈要求在await函数和promise上自己catch一下错误,做好错误异常处理,然后在catch里面把错误信息上报给后台:

  core.logger.error(err.message, err.stack)

(2)针对跨域脚本错误:

由于前端浏览器对于脚本安全的考虑,默认是不允许跨域捕获脚本错误信息,所以,需要做两件事:

服务器端:脚本的Response Header添加Access-Control-Allow-Origin头,表明允许跨域; 前端:script属性配置 crossorigin="anonymous" 这样,前端就能同时捕获跨域脚本的错误了。

2.logger对象 logger负责打印日志,是对console.log的增强,并与错误上报相结合。

api: core.logger.log(msg) 打印普通日志

core.logger.trace(msg) 打印普通日志(跟踪消息),在dev模式(core.config.enableVConsole=true)下才会打印日志,这个api主要是消除开发时写的跟踪日志出现在线上环境。

core.logger.error(msg.stack) 打印错误日志,同时会将错误日志上报至后台。

2019-09-16 update to v1.1.6

增加栏位曝光功能 删除了npm包非必要的一些文件,诸如demo文件夹 栏位曝光使用说明:

方法名:core.bbtfe.initBlockTrack

参数:

/**

  • @param {HTMLDocument} elesWithTrackData 需要栏目曝光的元素数组,并且携带埋点数据的dom元素数组{el:el,data:{ }}
  • @param {HTMLDocument} scrollContainer 滚动容器,可选,默认为曝光元素的直接父节点
  • @param {boolean} exposureMutiple 是否每次元素显现都发送曝光埋点,可选,不填默认为false */ initBlockTrack(elesWithTrackData, scrollContainer, exposureMutiple)

2019-08-30 update to v1.1.2

删除了使用频率比较低的内置组件version及share,其中对share站内外需要单独统一封装组件 调试功能双击刷新改成3击刷新,防止误操作导致页面reload 增加JSBridge,提供一些常用的原生JS方法支持 core.JSBridge

字段: app.name app名称

app.version app版本号

device.id 设备指纹

device.mac mac

user.uid 用户uid

user.isLogin 是否已登录

user.token 用户登录串 loginString

user.name 用户名

user.role 1爸爸版,2妈妈版

user.baby.status 1备孕 2孕育 3育儿

user.baby.birthday 用户宝宝的生日

方法: setTitle(title) 设置原生标题

openImage(url) 查看大图

openVideo(url) 播放视频

openWebview(url, title) 打开新的webview页面

closeWebview() 关闭当前webview页面

login() 调起原生登录

showShareButton() 显示头部右上角分享按钮

launchShare(platform) 调起分享弹层 platform 不指定为不限制分享平台 指定platform,qq: qq好友 wxtimeline: 微信朋友圈 wxsession: 微信好友

setShare(params) params 参照window.share http://space.dayin.com/pages/viewpage.action?pageId=11291835

async encrypt(params) 调用客户端加密参数(没有堆栈维护调用顺序,后续优化)

===========================================================================

core是一个辅助移动端开发调试,兼顾集成框架的一个fe独立组件。

代码位置:./git/bbt-fe-comp/core

npm库:https://www.npmjs.com/package/@bbtfe/core

概述 core是bbt业务开发及调试的核心组件 core内置了bbtfe下的一些常用组件:如utils常用功能函数及基础样式,toast,version等子组件 core支持了移动端响应式设计方案,依据750px的设计稿,基于vw及rem,实现响应式的移动端页面 core提供了开发调试的实用的功能,如支持VConsole调试,Mock数据,双击页面刷新,全局异常处理等 core对share和ready进行了再次封装和增强,支持async,await core对native事件进行了JS原生事件Event的封装,支持addeventlistener注册监听事件 使用 引入 import core from '@bbtfe/core'; import '@bbtfe/core/dist/core.min.css';

API 使用core.config可以配置是否开启某项调试功能: core.config.enableVConsole 是否开启VConsole调试工具。在dev环境默认开启。

core.config.enableMock 是否开启Mock前端模拟数据。默认不开启。

core.config.enableReload 是否开启页面双3击刷新功能。在dev环境默认开启。

core.config.enableErrorhandler 是否开启错误处理功能。默认不开启。

部分配置参数也可以通过路由上的query来控制,query配置的优先级要高于上述config配置的方式:

&_dev=true/false 是否开启vconsole,用法:在非dev环境下,例如在线上环境,追加这个参数能动态加载vconsole组件,方便排查线上问题。 &_mock=true/false 是否开启mock数据模拟 &_error=true/false 是否开启显示为处理错误,当前为alert方式,继续完善需要做好完善的前端监控,进行错误日志上报(TODO) 由于vconsole及mock组件是运行时(根据配置)决定的,所以这两个组件并不会打包在项目最终输出的js文件,而是独立的,core会根据配置在运行时动态把相应的调试组件加载。

bbtfe wrapper集成了一些常用的bbtfe相关业务组件,统一入口: core.bbtfe.showToast 显示toast消息

core.bbtfe.version @bbtfe/version组件

core.bbtfe.share 增强型,统一了share的站内站外分享设置

core.bbtfe.native 封装了一些app native相关的功能:

在a标签上指定data-native-link=“title name”属性,在站外表现为普通a标签,在站内为adAction 封装了webviewAppear和webviewDisappear事件,监听方式: // webviewAppear事件 window.addEventListener('webviewAppear', (ev) => { console.log('on webviewAppear event.'); }, false);

// webviewDisappear事件 window.addEventListener('webviewDisappear', (ev) => { console.log('on webviewDisappear event.'); }, false);

core.ready core初始化完成的事件,为异步函数,使用await等待 ready是指:1. core组件已经ready,2. 在站内的情况下,native已经ready

async start() { await core.ready(); // 业务逻辑开始 }

ready之后,core会在body上追加class,站内为app,站外为web,方便做一些站外站内的区分处理,如样式控制。

辅助功能: core.env 环境变量:返回'local','dev','test','pre','prod'当中的一个

core.isDev 是否为开发环境:local || dev

core.isApp 是否为孕育app,使用ua快速判定

core.utils封装了一些业务无关的前端通用辅助函数 代码位置:./git/bbt-fe-comp/utils

支持的api: selectText(node) 选中指定元素中的文字

getTransformMatrix(node) 获得指定元素的css transform matrix 对象{a,b,c,d,e,f,m11,m12,m13,m14}

getUniqueId(prefix) 生成唯一id,prefix为指定前缀,参数可选

dateToString(date, format) JS Date字符串化,format为格式,如:yyyy-MM-dd,参数可选。

dateAddDays(days, date) 当前日期或者指定date的基础上增加days天

dateAddMonths(months, date) 当前日期或者指定date的基础上增加months个月

repeatExecute(func, timeOut, interval) 在限定的timeOut时间内,间隔interval毫秒重复执行func函数

getRandomInt(min, max) 生成min~max整数随机数

getQuery(name, url) 取得当前或指定url上的参数名为name的query值

addOrUpdateQuery(name, value, url) 增加或更新参数名为name的query值

isEmpty(value) 是否为空值 undefined || null || ‘’

isNumberKeyCode(event) 是否为数字键

isNumericKeyCode(event) 是否为数字键 包含小数点. e及+ - 符号

getMobileOS() 返回Android/iOS/unknown

getParent(el, selector) 取得元素el的母节点,selector为母节点的选择器

getQueries() 反序列化,取得当前url的所有参数,返回参数组成的object

loadScript(src, callback) 异步加载script文件,src为脚本地址,callback为加载完成之后的回调事件

/bbt-fe-comp/utils组件除了封装了一些常用的功能函数,还提供了一些基础的样式: 浏览器默认css样式重置:reset.css css盒模型使用border-box IPhoneX/XS/XR safe area基础适配,暂不支持fixed/absolute类型的布局 栅格布局,基于flex 常用的css样式,如文字处理,超出截断,显示隐藏控制,居中控制等,具体class名查看/bbt-fe-comp/utils/src/base.scss代码 750px设计稿的移动端响应式方案: 基于750px的设计稿,结合vw,rem可以实现响应式的移动端布局方案。

html { font-size: calc(10000vw / 750); /this code is for mobile css design,design paper should be target at 750px/ }

在base.scss定义了根字号,由于浏览器对最小字号的限制,根字号放大了100倍,转换关系:

750px设计稿中的1px = 0.01rem 也就是100倍比例关系

建议: 异步操作使用promise封装,函数支持async,await,做好异步异常catch 当前native.js/bbtnative存在较多缺陷,建议使用原生JS API与native交互:http://space.dayin.com/pages/viewpage.action?pageId=11291835 埋点代码统一写在同一个地方/函数,便于后期查找及维护

模板: preg_js为基于parcel及@bbtfe/core的一个模板工程

http://192.168.24.32/fe-template/preg-js.git

1.2.3

4 years ago

1.2.2

5 years ago

1.2.1

5 years ago

1.2.0

5 years ago

1.1.32

5 years ago

1.1.31

5 years ago

1.1.30

5 years ago

1.1.29

5 years ago

1.1.28

5 years ago

1.1.27

5 years ago

1.1.26

5 years ago

1.1.25

5 years ago

1.1.24

5 years ago

1.1.23

5 years ago

1.1.22

5 years ago

1.1.21

5 years ago

1.1.19

5 years ago

1.1.18

5 years ago

1.1.17

5 years ago

1.1.16

5 years ago

1.1.15

5 years ago

1.1.14

5 years ago

1.1.13

5 years ago

1.1.12

5 years ago

1.1.11

5 years ago

1.1.10

5 years ago

1.1.9

5 years ago

1.1.8

5 years ago

1.1.7

5 years ago

1.1.6

5 years ago

1.1.5

5 years ago

1.1.3

5 years ago

1.1.2

5 years ago

1.1.1

5 years ago

1.1.0

5 years ago

1.0.40

5 years ago

1.0.39

5 years ago

1.0.38

5 years ago

1.0.37

5 years ago

1.0.36

5 years ago

1.0.35

5 years ago

1.0.34

5 years ago

1.0.33

5 years ago

1.0.32

5 years ago

1.0.31

5 years ago

1.0.30

5 years ago

1.0.29

5 years ago

1.0.28

5 years ago

1.0.27

5 years ago

1.0.26

5 years ago

1.0.25

5 years ago

1.0.24

5 years ago

1.0.23

5 years ago

1.0.22

5 years ago

1.0.21

5 years ago

1.0.20

5 years ago

1.0.19

5 years ago

1.0.18

5 years ago

1.0.17

5 years ago

1.0.16

5 years ago

1.0.15

5 years ago

1.0.14

5 years ago

1.0.13

5 years ago

1.0.12

5 years ago

1.0.10

5 years ago

1.0.9

5 years ago

1.0.8

5 years ago

1.0.7

5 years ago

1.0.6

5 years ago

1.0.5

5 years ago

1.0.4

5 years ago

1.0.2

5 years ago

1.0.1

5 years ago

1.0.0

5 years ago