Vue的安装与版本

137 阅读3分钟

文档

1.两个版本的区别

Vue有两个不同的版本。

分别是Vue完整版(vue.js)(运行时版本),一般使用script标签配合CDN进行引入。

和Vue非完整版(vue.runtime.js),vue-cli默认使用。

  • 完整版:同时包含编译器和运行时的代码,单独使用即可。
  • 编译器(compiler):将模板字符串编译成为JavaScript渲染函数的代码。
  • 非完整版(运行时)  :创建Vue实例、渲染并处理虚拟DOM等的代码。基本包含除去编译器之外的功能。

image.png

最佳实践:以非完整版(运行时)为核心,然后配合vue-loader和vue文件实现单文件组件进行渲染。

目的:用户下载的 JS 文件体积更小,但只支持 h 函数。而且可以保证开发体验,开发者可直接在 vue 文件里写 HTML 标签,而不写 h 函数,多余的工作让 loader 完成。

2.两个版本的用法

当需要在客户端编译模板 (比如传入一个字符串给 template 选项,或挂载到一个元素上并以其 DOM 内部的 HTML 作为模板),就需要使用带有编译器的完整版。

// 需要编译器
new Vue({
  template: '<div>{{ hi }}</div>'
})

// 不需要编译器
new Vue({
  render (h) {
    return h('div', this.hi)
  }
})

当使用 vue-loader 或 vueify 的时候,*.vue 文件内部的模板会在构建时预编译成 JavaScript。在最终打好的包里实际上是不需要编译器的,所以只用运行时版本即可。

template 和 render的区别

//完整版 - 需要 compiler 编译器 - 编译 template
new Vue({    //vue实例,类似jQuery封装的 return api
  el:'#app', //el代表渲染挂在节点,会被替换,同$mount('#app')    //涉及到 SEO 友好、服务端渲染
  data:{ num:0 }                      //完整版支持从html中获取视图
  template: '<div>{{ num }}</div>'    //template内容,可以直接写在HTML文件中
})
 
//运行时版 - 不需要 compiler 编译器 - 只能使用 h 函数
new Vue({    //vue实例
  render (h) {    //不支持template选项或从html中获取视图
    return h('div', this.num)    
  }
})

完整版通过内部配置的compiler解析器将模板中的内容解析成Dom节点渲染到页面

两个版本的区别

1. Vue.js(完整版)

  • 优点:逻辑清晰简单,使用方便
  • 缺点:
  1. 开发需要额外配置版本引用
  2. 视图模板写在HTML/template里,代码量大时管理困难。
  3. 代码体积较非完整版大30%,用户体验较差。

代码举例:

<div id="app"></div>
<script src="https://cdn.bootcss.com/vue/2.6.10/vue.js"></script>
<script>
  var app = new Vue({
    el: "#app",
    template: `<div>{{ num }} <button @click="add">+1</button></div>`,
    data: {
      number: 0
    },
    methods: {
      add() {
        this.num ++;
      }
    }
  });
</script>

2. Vue.runtime.js非完整版

  • 缺点:对初级开发者可能不友好
  • 优点:
  1. render函数相比于HTML/template模板内更为间接有效,甚至还能在函数体里面进行一些额外的代码逻辑。
  2. 不需要解析器,可以通过Webpack等工具自定义配置
  3. 代码体积较小,提升用户体验。

代码举例:

<div id="app"></div>
<script src="https://cdn.bootcss.com/vue/2.6.10/vue.runtime.js"></script>
<script>
  var app = new Vue({
    el: "#app",
    data: { num: 0 },
    methods: {
      add() {
        this.num ++;
      }
    },
    render(h) {
      return h("div", [
        this.num,
        createElement("button",{ on: { click: this.add } }, "+1")
      ]);
    }
  });
</script>

3.使用codesandbox.io写Vue代码

  1. 进入官网
  2. 点击 "Create a Sandbox, it's free",注意不要登录,否则会有项目数量限制
  3. 选择 "Vue"
  4. 可以把创建开发好的项目代码下载到本地:选择左上角的file——然后Export to ZIP