問(wèn)題
最近在使用 Vue 做東西,用到釘釘掃描登錄的功能,這里需要引入遠(yuǎn)程的 js 文件,因?yàn)?Vue 的方式跟之前的不太一樣,又不想把文件下載到本地應(yīng)用,找了一下解決的方法,貌似都需要引入第三方的庫(kù),最后找到了解決方案,分享之。
思路
一開(kāi)始的思路是在 Vue 加載完 Dom 之后(mounted),使用 JavaScript 腳本在 body 中插入遠(yuǎn)程的腳本文件。
后來(lái)發(fā)現(xiàn)了 Vue 的 createElement 方法,簡(jiǎn)單的封裝一個(gè)組件解決問(wèn)題。
解決方法
第一版代碼(直接在操作 Dom )如下:
export default { mounted() { const s = document.createElement('script'); s.type = 'text/javascript'; s.src = 'https://g.alicdn.com/dingding/dinglogin/0.0.2/ddLogin.js'; document.body.appendChild(s); },}使用 createElement 方法:
export default { components: { 'dingtalk': { render(createElement) { return createElement( 'script', { attrs: { type: 'text/javascript', src: 'https://g.alicdn.com/dingding/dinglogin/0.0.2/ddLogin.js', }, }, ); }, }, },}// 使用 <dingtalk></dingtalk> 在頁(yè)面中調(diào)用終極方案
通過(guò)封裝一個(gè)組件 remote-js 實(shí)現(xiàn):
export default { components: { 'remote-js': { render(createElement) { return createElement('script', { attrs: { type: 'text/javascript', src: this.src }}); }, props: { src: { type: String, required: true }, }, }, },}使用方法:
<remote-js src="https://g.alicdn.com/dingding/dinglogin/0.0.2/ddLogin.js"></remote-js>
因?yàn)閯傞_(kāi)始學(xué)習(xí) Vue 有什么問(wèn)題歡迎大家指出,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持錯(cuò)新站長(zhǎng)站。
新聞熱點(diǎn)
疑難解答
圖片精選