vue 将字符串最后一个字符给替换_初尝VUE

383cd4b6dcd357fa4df3669e0d4821b4.png

VUE的两个版本

VUE分为完整版(vue.js)和非完整版(vue.runtime.js)

二者的区别在于完整版的VUE(vue.js)会包含一个编译器,由于这个编译器的存在,完整版VUE(vue.js)的体积会比非完整版VUE(vue.runtime.js)大40%左右

那么,这个编译器的存在会对两个版本的开发方式有什么影响呢?

通常,我们会在html或template中写视图,在js中控制视图上的数据或元素的变化。

由于可能会存在复制的标签结构等,我们不能把数据简单的用replace替换掉,所以这个时候就要用到编译器来把模板字符串编译成JavaScrip渲染函数的代码

但是,这里就出现了一个问题,非完整版VUE(vue.runtime.js)本身是没有编译器的,由于无法编译,按常规的开发模式在非完整版上是会报错的。

那么,这要如何解决呢?

非完整版VUE提供了一个render方法来渲染视图

new Vue({
  render (h) {
    return h('div', this.hi)
  }
})

这种方式带来了一个弊端就是,使用这种方式创建视图是非常影响开发体验,所以VUE给出了一个解决办法:使用单文件组件:

<template>
  <div id="app">
    <img alt="Vue logo" src="./assets/logo.png">
    <HelloWorld msg="Welcome to Your Vue.js App"/>
  </div>
</template>

<script>
import HelloWorld from './components/HelloWorld.vue'

export default {
  name: 'App',
  components: {
    HelloWorld
  }
}
</script>

<style lang="scss">
#app {
  font-family: Avenir, Helvetica, Arial, sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-align: center;
  color: #2c3e50;
  margin-top: 60px;
}
</style>

然后直接在js文件中引入这个单文件即可:

import Vue from 'vue'
import App from './App.vue'

Vue.config.productionTip = false

new Vue({
  render: h => h(App),
}).$mount('#app')

总结一下,非完整版会配合VUE文件和一个叫做vue-loader的加载器(代替开发者将vue文件中的HTML转义成‘h函数’)来代替拥有编译器的完整版

有人会问,完整版好像看起来更简单,为什么还要用更复杂的非完整版呢?因为非完整版的优点在于:

  1. 代码集中,便于管理和维护
  2. 可复用性高,可以直接移动到新项目中
  3. 大大减少体积

所以这里建议总是使用非完整版,配合vue-loader和vue文件

使用http://codesandbox.io

由于本地创建vue项目会依赖一些组件,需要提前安装,这里提供一个免费在线沙盒,进入后点击【Create a Sandbox】按钮创建一个新的沙盒,选择VUE就可以直接使用了,最终的demo还可以直接输出到github上。

https://codesandbox.io/​codesandbox.io
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值