.vue文件怎么写js代码

JavaScript019

.vue文件怎么写js代码,第1张

单个组件里面可以使用 import $ from 'jquery' 引用

当前你得使用npm把jquery 安装了。 把jquery 用export default 导出来(就是在jquery.js的最后一行写上 export default $), 然后使用import $ from ‘jquery的文件地址’

至于 script标签里面怎么写

import $ from 'jquery'

export default {

  data: function() {

    return {

      testData: 1 // 这个对象里面定义所有的变量 这些变量可以 在html直接和dom绑定

    }

  },

  mounted: function() {

    // 生命周期函数, 有好几个 执行的顺序都不一样,可以根据场景 选择不同的生命周期函数 这块一般是初始化数据的地方

  },

  methods: { // 这里写所有的方法, 这些方法可以在 方法内部使用this.方法名调用,也可以在html 中使用@时间名 = ‘函数名()’调用

    init() {  

      // 实例方法

      // 使用this.变量可以访问data中的变量

      console.log(this.testData)

    }

  }

}

最简单的订阅者模式

// Observer

class Observer {

constructor (data) {

this.walk(data)

}

walk (data) {

// 遍历

let keys = Object.keys(data)

for(let i = 0i <keys.lengthi++){

defineReactive(data, keys[i], data[keys[i]])

}

}

}

function defineReactive (data, key, val) {

observer(val)

// dep 为什么要在这里实例化, 就是为了实现, 对象每一层的 每一个key都有自己的一个订阅实例, 比如 a.b 对应 dep1, a.c 对应dep2, 这里虽然都是let dep = new Dep()

// 但每次来到这个方法, dep都是独立的, 会一直保留在内存. 这样在每次调用set方法都能找到这个a.b对应的dep

// dep 这里会一直保存, 是因为闭包的关系, Object这个全局的函数, 引用了上层的作用域, 这个作用域包含了 dep, 除非Object = null, 或者退出浏览器, dep才会消失

//实例化之后, dep就有了被订阅, 和发布消息的功能, dep不写在这里也是可以的, 多定义一个全局函数, 每次obser的时候增加一个dep

let dep = new Dep()

Object.defineProperty(data, key, {

enumerable: true,

configurable: true,

get: function () {

//每次new Watch('a.b'), 都会先执行get方法, 进而来到这里, 触发 dep.depend(), 这个dep就是 a.b 对应的 订阅,

dep.depend()

return val

},

set: function (newVal) {

if(val === newVal){

return