Vue.js学习总结第七天

Vue.js学习总结第七天

一、使用vue实例的render方法渲染组件

在讲render方法之前,先引入一个例子 ,如下面代码部分:

<html>
    <head>
        <meta charset='utf-8'>
        <title></title>
        <!-- 引入vue.js -->
        <script src='https://cdn.jsdelivr.net/npm/vue/dist/vue.js'></script>
    </head>
    <body>
        <div id='app'>
        	<p>123456</p>
           <login></login>
        </div>    
    </body>
    <script>
        var login={
        	template:'<h1>这是登录组件</h1>'
        }
        //创建Vue实例
        var vm=new Vue({
        	el:"#app",
        	data:{},
        	methods:{},
        	components:{
        		login
        	}
        })
    </script>
</html>

运行结果截图:

以上是使用components的效果,再div里面使用<login引用组件,不会对div标签有影响(没有让div标签消失)

再看一下render方法的使用代码, 在vue实例里面写render属性

<html>
    <head>
        <meta charset='utf-8'>
        <title></title>
        <!-- 引入vue.js -->
        <script src='https://cdn.jsdelivr.net/npm/vue/dist/vue.js'></script>
    </head>
    <body>
        <div id='app'>              
           <p>123456</p>
        </div>    
    </body>
    <script>
        var login={
        	template:'<h1>这是登录组件</h1>'
        }
        //创建Vue实例
        var vm=new Vue({
        	el:"#app",
        	data:{},
        	methods:{},  //下面的function(createElements)中createElements是形参,它是一个方法,调用该方法可以把传入的组件模板(本例为login组件)渲染为html,然后替换本vue实例中el所代表的div元素,
            render:function(createElements){
          	return createElements(login)
          }
        })
    </script>
</html>

解释:在本例中render方法的作用就是说把<div id='app’这个模块连带着div标签删掉,然后再把login组件放到<div id='app’的位置,相当于是进行了替换,

运行效果截图: 可以看到虽然在div标签里面写了"" <p123456</p"" 但是最终没有显示,从下面第2张图中可以看到,div标签已经消失了,说明了login组件完全代替div标签里的内容(包括div标签在内一起被删除了),整体替换了

二、在webpack中导入Vue包

我们在普通html页面导入时很简单,直接写下面一行代码完事了

 <script src='https://cdn.jsdelivr.net/npm/vue/dist/vue.js'></script>

但是如果在webpack中使用Vue.js,按如下步骤即可,

第一步: 在项目根目录下cmd控制台执行npm i vue -s 来安装vue的包

第二步: 在main.js中使用import Vue from 'vue’从node_modules文件夹(该文件夹是使用webpack工具之后生成的)中导入安装的vue包

但是这样是有问题的,引入的vue包不是完整的,而是vue包的一部分,我们可以按上图中说的去找node_modules包下的vue文件夹,然后找vue文件夹下的package.json配置文件,然后找到main属性,发现main属性是dist/vue.runtime.common.js,意思就是说“当我们使用import Vue from 'vue’的时候,实质上是导入的/node_modules/vue/dist/vue.runtime.common.js”

所以我们的解决办法很简单,第一种是 直接在mian.js里导入具体文件

第二种是在webpack.config.js里添加resolve节点进行如下配置

然后在main.js里面不做任何修改,直接按原来的import Vue form 'vue’写就好

记得修改完以后要重新启动项目

三、webpack中vue-loader的使用

我们一般把components组件代码写在html页面里面,但是如果我们想把这些components组件代码抽取出来单独形成一个文件,文件的后缀名是以.vue结尾的,比如下图,以login.vue为例,以.vue结尾的文件里面只能有三部分,分别是<template,<script,<style,这三部分里面都是写跟components有关的配置,共同组成了一个完整的组件component模块(**解释:**我们这里的一个以.vue结尾的文件,就相当于我们平时经常在new vue对象时在vue对象里面写component属性绑定的一个组件)

然后在main.js中通过下面代码引入该文件

默认webpack无法直接打包.vue文件,需要安装相应的loader:到项目根路径下进入cmd控制台然后输入下面代码

npm i vue-loader vue-template-compiler -D

然后在webpack.config.js中,在module节点下的rules数组中,添加一个新的匹配规则,匹配.vue结尾的文件

{test:/\.vue$/,use:'vue-loader'}

但是就这样去配置了以后,重启webpack,运行之后还是报错

这个时候我们只能使用另一种方法了,使用render函数

先在main.js里面导入我们写的login.vue文件,然后写vue实例对象,并在实例对象里面写render方法,然后在index.html里面导入bundle.js(mian.js被webpack打包后的文件),之后启动webpack运行访问index.html就可以看到运行结果正是我们期望的,

总结一点:在webpack中,如果想要通过vue,把一个组件放到页面中去展示,可以通过vue中的render方法去实现

梳理:webpack中如何使用vue

四、export default和export的使用方式

export-default和export都是向外暴露的作用

先说export-default吧,看下例子,我们新建一个test.js文件,然后在文件里面定义info对象,然后使用export-default info来暴露该对象

这个时候我们在main.js中使用import导入该test.js文件,用m222变量接收test.js中export default暴露的对象

然后使用webpack打包部署运行,main.js中的console.log(m222)能够在浏览器端打印出来,如下图所示:

**注意:**不能在一个test.js中写多个export default 暴露多个对象,只运行写一次export default

虽然我们不能写多个export default ,但是我们可以写多个export呀,如下图,暴露多个变量

然后在main.js里面做接收

运行结果: 可以看到main.js里面的两行console.log()都能够正常地打印出来了

五、在webpack中使用vue-router

首先在项目的根目录下cmd进入控制台,然后执行命令

npm i vue-router -s

安装vue-router包到node-modules文件夹下

然后在main.js中头部写下面3行代码,从node-modules文件夹中导入Vue包和VueRouter包,然后把Vue和VueRouter关联起来

然后就可以直接使用vue-router路由了

六、以.vue结尾的文件中的style标签中的lang属性和scoped属性

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Java全栈研发大联盟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值