npm.io
0.3.4 • Published 3 years ago

smith-log

Licence
Version
0.3.4
Deps
3
Size
66 kB
Vulns
21
Weekly
0

Usage

import

import {log} from 'smith-log'
Vue.use(log, {
  // 'prod' or other
  env: context.app.$config.env,
  // app router
  router: context.app.router,
  // core send method, must return a promise
  send: (data, headers) => {
    return api.post(data, {
      headers
    })
  },
  
  // optional: console or online, default 'dev'
  output: context.app.$config.env === 'dev' ? 'console' : 'online',
  // optional: store just for user state, can be null if user doesn't login
  store: context.app.store,
  // optional: get config from server, return a promise, defualt set to server.js
  config: () => Promise().then(res),
})

PV and PD

$route.meta.log

rely on @nuxt-route-meta module

pageId is required in meta.log. e.g.

meta: {
    log: {
      pageId: 'p_re_loginweb',
      commonExtra: {},  
      extra: {}  
    }
}

then

import {logMixin} from 'smith-log';
mixins: [logMixin],

Sometimes a page is not compatible with a route component. A component can contain unlimited page. We can use directive instead:

<div v-log.pageview:p_re_profile_detail = 'extra'></div>
Dynamic pageId

PageId can be dynamically in reused component.

meta example:

meta: {
    log: {
      pageId: 'dynamicPageId',
      dynamic: true  
    }
}

use this.dynamicPageId as pageId

directive example:

<div v-log.pageview = '{page_id: () => dynamicPageId, extra: () => value}'></div>
pd

auto

MC

<div v-log.click:e_re_info_flow_profile_card = 'extra'></div>
dynamic modular_id
<div v-log.click = '{modular_id: () => modularId, extra: () => extra}'></div>

MV

<div v-log.view:e_re_info_flow_profile_card = 'extra'></div>
dynamic modular_id
<div v-log.view = '{modular_id: () => modularId, extra: () => extra}'></div>

Dynamic value

All event's (PV,MV,MC) value can be dynamically set with a function. Value will be calculated when event is triggered.

e.g.

<div v-log.pageview:p_re_profile_detail = '() => extra'></div>

dynamic e.g.

<div v-log.pageview = '{page_id: () => pageId,extra: () => extra}'></div>

other

manual log
import {triggerPV, triggerPD, send} from 'smith-log'

triggerPV: pv

triggerPD: pd

send: function (log_type, modular_id, exter) {}

encode
import {encode} from 'smith-log'