代码写在export里和外面的区别

2019-02-12  本文已影响12人  sweetBoy_9126

在vue中,包括我们自己使用mvc实现模块化的时候,往往需要将每个js或者vue作为独立的模块,然后将js代码写在export里面导出,然后在需要使用的地方import引入,但是直接把代码写在export里和外面究竟有什么区别?
区别就是

当我们写在export外面的时候,我们直接通过import引入这个文件,这个文件里的代码就会预解析一遍,export外面的代码就会直接执行;然后把export里面的代码返回给我们的import相关的对象,也就是说我们import的文件拿到的代码其实就是export里面的代码,所以写在export里面的代码还需要你通过相应的属性来把你import的这个文件添加到这个属性下面才能执行,因此如果你要想通过vue的属性和指令使用相关的代码,那么相关的代码必须写在export里;
写在export里的代码你每添加到一个属性下就会执行一次

比如1.:

document.addEventListener('click',()=>{console.log('a')})
<script>
import one form './one.js'
</script>

这时候因为one.js里的代码没有写在export里,所以只要一import就会直接执行,当页面加载完我们点击document就会打印出a

export default {
   bind: function (el,binding,vnode) {
    document.addEventListener('click',()=>{
      console.log('b')
    })
  }
}

上面这种写法我们通过export导出一个对象,对象里面的代码不会直接运行,需要添加到对应的属性下才会调用,这里需要通过directives属性

template>
    <div class="one" v-two>
        aaa
    </div>
</template>
<script>
import two from './two.js'

export default {
    directives: {two}
}

像上面这样import完之后添加到directives下面这时候再点击docuemnt就会执行了,你每使用一个v-two指令export里的代码就会执行一次也就是就会添加一个docuemnt监听,而写在export外只有import的时候添加了一个监听

上一篇下一篇

猜你喜欢

热点阅读