小滿 前端埋點(diǎn)SDK 帶你 從0 開發(fā) 并且發(fā)布npm
埋點(diǎn)就是 數(shù)據(jù)采集-數(shù)據(jù)處理-數(shù)據(jù)分析和挖掘,如用戶停留時(shí)間,用戶哪個(gè)按鈕點(diǎn)的多,等
技術(shù)架構(gòu)使用ts + rollup
使用ts主要是在編譯過程中發(fā)現(xiàn)問題,減少生產(chǎn)代碼的錯(cuò)誤,
使用rollup 應(yīng)為 rollup打包干凈,而webpack非常臃腫,可讀性差,所以rollup非常適合開發(fā)SDK和一些框架,webpack 適合開發(fā)一些項(xiàng)目
1.目錄結(jié)構(gòu)設(shè)計(jì)

2.安裝開發(fā)依賴
3.配置rollup config js
4. src type 定義類型
5.src core 核心功能
PV:頁(yè)面訪問量,即PageView,用戶每次對(duì)網(wǎng)站的訪問均被記錄
主要監(jiān)聽了 history 和 hash
history 無(wú)法通過 popstate 監(jiān)聽? 只能重寫其函數(shù) 在utils/pv
hash 使用hashchange 監(jiān)聽
UV(獨(dú)立訪客):即Unique Visitor,訪問您網(wǎng)站的一臺(tái)電腦客戶端為一個(gè)訪客
用戶唯一表示 可以在登錄之后通過接口返回的id 進(jìn)行設(shè)置值 提供了setUserId
也可以使用canvas 指紋追蹤技術(shù)?指紋視頻
本章重點(diǎn) navigator.sendBeacon
為什么要使用這個(gè)去上報(bào)
這個(gè)上報(bào)的機(jī)制 跟 XMLHttrequest 對(duì)比? navigator.sendBeacon 即使頁(yè)面關(guān)閉了 也會(huì)完成請(qǐng)求 而XMLHTTPRequest 不一定
DOM事件監(jiān)聽
主要是給需要監(jiān)聽的元素添加一個(gè)屬性 用來(lái)區(qū)分是否需要監(jiān)聽 target-key
6.工具函數(shù) src/utils/pv
7.設(shè)置package json?
main? module 分別設(shè)置對(duì)應(yīng)的js文件
files 設(shè)置打包之后的目錄 我這兒是dist 具體看rollup config .js
8.發(fā)布npm
tips:一定要使用npm 的源? 不能使用淘寶鏡像 否則 報(bào)錯(cuò)403
1.npm adduser
用戶名 密碼 郵箱 郵箱驗(yàn)證碼

2. npm login??
輸入剛才的 用戶名 密碼 郵箱 驗(yàn)證碼
3.npm publish 發(fā)布
發(fā)布的時(shí)候403 有可能是名字重復(fù)注意一下

4.npm 官網(wǎng)查看
https://www.npmjs.com/package/zmy-tracker
