項目中有一個生成動態指令的需求,選用了jsOPT.js,根據文檔示例,看了下只要簡單的引入js 文件,按照示例中的兩行代碼就能夠搞定。
可是實際過程並無想象的這麼簡單。。。html
首先示例中只引入了jsOPT.js,具體代碼以下vue
<script src="jsOPT.js"/></script> var totp=new jsOPT.totp(); var timecode = totp.getOtp(<your OTP KEY>)
一開始我在本地測試html 只引入jsOPT.js 發現會提示 「jsSHA is not defined」,通過排查在下載的jsOPT.js 的壓縮包中有一個sha-dev.js,其中有定義jsSHA ,因此本地測試html 中引入sha-dev.js後是能夠成功生成六位的數字碼。git
<script src="jsOPT.js"/></script> <script src="sha-dev.js"/></script> var totp=new jsOPT.totp(); var timecode = totp.getOtp(<your OTP KEY>)
本覺得將代碼"移植"入vue中就能夠了,可是卻出現了問題。
使用npm 將依賴包下載到項目,引入後如上面同樣調用會提示「jsOPT.totp is not a function」,
嘗試將jsOPT 對象打印到控制檯,能夠看到一個名爲「TOTP」的方法,不解,忽略大小寫的嗎?
後面又考慮到是不是引入方法不對,換用「import jsOPT from "../...." 」,控制檯又會提示「jsOPT is not constructor」。github
中間還試過下載jsSHA 依賴包,也是各類報錯。。npm
而後換用下面的寫法,總算能夠打印出totp ,可是在調用totp.getOtp 時又出現了報錯「getOtp is not a function」,因而乎慌了。。。
開始懷疑這個庫有問題吧?測試
let jsOPT from "jsopt"; var totp=jsOPT.totp();
最後最後。。。
仔細查看一開始下載的jsOPT.js 壓縮包中發現還有其餘的多個js,
因而乎抱着試試看的心態引入,沒想到只引入jsOPT-es5.min.js後竟然成功了。我累了個擦擦擦。。es5
好了,總結下,遇到問題仍是要冷靜分析,還有github示例也有點坑。。
第一次記錄本身遇到的bug,語言組織的不能不是很到位,你們見諒。
但願能夠對遇到一樣問題的同窗有點幫助吧
關於動態指令的相關知識你們能夠參照這篇文章spa