vuejs 怎么引入第三方js

JavaScript012

vuejs 怎么引入第三方js,第1张

在 Vue.js 中使用第三方库的方式有:

1.全局变量

在项目中添加第三方库的最简单方式是讲其作为一个全局变量, 挂载到 window 对象上:

entry.js

window._ = require('lodash')

MyComponent.vue

export default {

created() {

console.log(_.isEmpty() ? 'Lodash everywhere!' : 'Uh oh..')

}

}

这种方式不适合于服务端渲染, 因为服务端没有 window 对象, 是 undefined, 当试图去访问属性时会报错.

2.在每个文件中引入

另一个简单的方式是在每一个需要该库的文件中导入:

MyComponent.vue

import _ from 'lodash'

export default {

created() {

console.log(_.isEmpty() ? 'Lodash is available here!' : 'Uh oh..')

}

}

前端框架越来越丰富,前后端分离已经是大多数软件团队采取的模式了。vue使用的场景也越来越多。

go本来使用template模板来进行前端的表现,现在可以用vue来分担很大一部分工作了。

通常直接使用go语言写后端,然后使用静态模板加载渲染前端,前端获取后端提供的数据是使用{{ }}符号,2个套在一起的花括号。这个也是vue使用的数据表现方式。

如果go+vue来协同工作的话,需要对vue进行一点设置。比如把{{ }}的方式改为[[ ]]的方式。

首先我们要知道,vue的使用,需要在页面中加载vue.js或vue.min.js

纯静态网页使用vue是这样的(给个html例子)

然后我们实现一个go的简单web服务和模板页面

这个go服务器通过端口 1989 展示服务器页面,提供了一个静态文件路径 htmlpage,我们把vue.js和index.html文件都放置在htmlpage路径里。

go服务器还用模板给前台页面提供了一个News结构的数据,数据包括:Title,Content,Author的值。

在index.html页面中,加载vue.js的时候需要带上静态路径 htmlpage

在 new 一个 vue 变量的时候,必须有一句来设置包裹数据的符号,我们这里设置这个符号为[[ ]]

同时,所有需要由 vue 渲染的数据,都写成类似这样的样子

在 go + vue 方式下的完整模板文件 index.html

此页面中{{ }}包裹的数据是由go从后端提供的数据( 例如:{{.Title}}),而[[ ]]包裹的数据,是vue渲染的数据。

只是把 Vue里的数据,改为由go后端提供即可。

好吧,作者已经在向月亮示爱了。呵呵 _

运行一下程序,看修改模板后的效果。

Vue 的 createElement 方法,简单的封装一个组件解决问题。

解决方法

第一版代码(直接在操作 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',

},

},

)

},

},

},

}

// 使用在页面中调用

终极方案

通过封装一个组件 remote-js 实现:

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>