[图片] 请教 vue怎么引入匿名函数???

问题

vue 在assets\js\test.js创建一个test.js

al = function(s){alert(s)}(window, document, XMLHttpRequest)
export {al};

如何在.vue文件引入这个js???

或者需求是vue如何引入OpenInstall

阅读 7.6k
4 个回答

这个其实跟你导入组件是一样的,你只需要在.vue文件的script标签中import { al } from '/*your path*/assets\js\test.js'即可,这跟 vue 没有关系,是es6的模块

export default al

import al from 'XXXXX';

首先你的al没有声明,而没有声明在你使用webpack打包的时候使用了babel这种工具会默认使用严格模式处理你的源代码;
严格模式下,未声明变量就使用,这可能是al is not defined的最直接原因
禁用严格模式:https://segmentfault.com/q/10...
就算在非严格模式下:
当你看到al的时候,al已经被赋值下面这段代码
function(s){alert(s)}(window, document, XMLHttpRequest)
而上面那段代码是个求值的自执行函数,他的值就是function(s){alert(s)}函数的返回值,而你没有写返回,默认返回undefined,所以你导出了undefined
应该就是这么回事吧

ES6的模块自动采用严格模式,不管你有没有在模块头部加上"use strict";

改成这样看看

var al = function(s){alert(s)}(window, document, XMLHttpRequest)
export {al};

在你的.vue组件中

<script>
import {al} from "test.js" 
console.log(al) //是不是能得到一个undefined
<script>
推荐问题
宣传栏