【Vue 2.x】学习vue之二组件

在这里插入图片描述

文章目录

Vue

这是v2版

二组件

第五章

vue组件化 非单文件组件 es6导入、导出语法

单文件组件 单文件组件的基本语法 vue脚手架

es6文件导入出

1、导出export
export:导出
	
	作用:用于将当前资源对外暴露,方便其他模块引用
	
	方式1:分别暴露
			//index.js中的代码
                export let msg="hello,world";
                export function show(){
   
                    alert(123);
                }
			//在html页面中引入index.js暴露的资源
			    <script type="module">
                    import * as m from './js/index.js'
                    //m就代表index.js文件
                    alert(m.msg);
                    m.show();
    			</script>
    
    方式2:统一暴露
    		//index.js中的代码
                let str = "CNM";
                let qaq = "555";
                export {
    str, qaq }
            //在html页面中引入index.js暴露的资源
			    <script type="module">
                    import{
   str,msg} from './js/index.js'
                    //此时就不用.xx来输出了
                     console.log(qaq);
    			</script>
    
    方式3:默认暴露
    		//index.js中的代码
                export default{
   
                    name:"arjun",
                    show(){
   
                        console.log("默认暴露");
                    }
                }
            //在html页面中引入index.js暴露的资源
            	   import * as m1 from './js/index.js'
					m1.default.show()

组件(component)

1、定义

组件:实现应用中局部功能代码和资源的集合

组件是vue.js最强大的功能之一。组件可以扩展html元素,封装可重用的代码

vye组件是页面(html代码,css代码)进行模块化

image-20230516200318145

2、模块化与组件化
在vue应用中,一个页面可能是由多个区域构成,每一个区域可以封装成一个单独的组件

每一个组件中就可以包含该区域要使用的html,js,css

然后将这些组件组合在一起就可以形成完整的页面

如果页面上某一个区域的内容要发生改变,只需要将对应的组件进行替换即可

3、组件的分类
1、非单文件组件
特点:非单文件组件:一个文件包含n个组件
	  所有代码写在一文件中,它的文件名不是vue结尾

缺点:	1、模板编写没有提示
	  2、没有构建过程,无法将es6转换成es5
	  3、不支持组件的css
	  4、真正开发中几乎不用
非单文件三步骤
创建组件:    
	1、template用于声明组件页面布局,它的内容写在``之间,它只能有一个根元素
    2、组件中的数据模型data是一个函数,需要指定在()并且用return声明
    3、组件中的其他用法:函数、计算属性,过滤器等用法都一样
    
    
声明组件:
	 var vm = new Vue({
            el: '#app',//指定的vue容器id名称
            //二、注册组件
            components: {
                //组件名:对应的组件(如果组件名与组件同名,可以省略只写一个)
                school
            }
            
应用组件:
	<div id='app'>
        <!-- 三、使用组件 -->
        <school></school>
    </div>
    //注意:在非单文件组件中不允许直接闭合<school/>
创建组件标准写法
<body>
    <div id='app'>
        <!-- 三、使用组件 -->
        <myschool></myschool>
    </div>
    <script src='js/vue.js'></script>
    <script>
        Vue.config.productionTip = false;

        // 一、定义组件
        const school = Vue.extend({
   
            // 1、指定模板(要显示的html标签)
            //模板中只能有一个根元素
            template: `
                <div>
                    <h1>学校信息</h1>
                    <h2>学校名称:{
    {schoolName}}</h2>
                    <h2>学校地址:{
    {address}}</h2>    
                </div>
            `,
            // 2、指定组件中的数据模型(组件中的数据是一个函数)
            data() {
   
                return {
   
                    schoolName: "东京大学",
                    address: "日本"
                }
            }
        })

        var vm = new Vue({
   
            el: '#app',//指定的vue容器id名称
            //二、注册组件
            components: {
   
                //组件名:对应的组件(如果组件名与组件同名,可以省略只写一个)
                myschool: school
            }

        })
    </script>
</body>

简化写法
 注册组件: 
       const stu = {
   
            template: `
                <div>
                    <h1>学生信息</h1>
                    <h2>学生姓名:{
    {name}}</h2>
                    <h2>学生成绩:{
    {score}}</h2>    
                </div>
            `,
            // 2、指定组件中的数据模型(组件中的数据是一个函数)
            data() {
   
                return {
   
                    name: "张三",
                    score: "90"
                }
            }
        }
组件的嵌套
1、先声明子组件
        const stu = {
   
            template: `
                <div>
                    <h1>学生信息</h1>
                    <h2>学生姓名:{
    {name}}</h2>
                    <h2>学生成绩:{
    {score}}</h2>    
                </div>
            `,
            // 2、指定组件中的数据模型(组件中的数据是一个函数)
            data() {
   
                return {
   
                    name: "张三",
                    score: "90"
                }
            }
        }
2、在父组件注册子组件
        //创建父组件:school
        const school = {
   

            template: `
                <div>
                    <h1>学校信息</h1>
                    <h2>学校名称:{
    {schoolName}}</h2>
                    <h2>学校地址:{
    {address}}</h2>
                    <hr>   
                    <stu></stu> 
                </div>
               
            `,
            // 2、指定组件中的数据模型(组件中的数据是一个函数)
            data() {
   
                return {
   
                    schoolName: "东京大学",
                    address: "日本"
                }
            },
            // 在父组件中注册子组件
            components: {
   
                stu
            }
        };
非单文件的不足之处
1、它所有的组件包含在一个页面,编写代码并不方便
2、它的模板布局temolate要写在``中,且没有提示
//实际开发很少用到,更多的是单文件组件
2、单文件组件
把一个组件全部内容汇合到一个文件中,文件名字是以.vue结尾
一个组件就是一个独立的*.vue文件,它可以包含自己的js,template,css

特点:1、它的后缀是.vue
	 2、它可以将一个区域的内容封装成一个vue组件,该组件包含有:js css html
	 3、将这些组件组合在一起,就可以形成完整的程序

在讲解单文件组件之前,我们首先要学习es6文件的导入、导出语法

vue单文件组件的使用
.vue文件就是一个单文件组件
	该方法中只能包含三个部分的内容:
		template:------用于指定模板,该组件的所有html代码都要包含在该区域
		srcipt:--------用于指定js代码
		style:---------用于指定组件的所有样式代码

安装插件–>vuter

vue脚手架:Vue CLI

脚手架创建项目
1、创建一个目录(该目录用于保存脚手架创建的项目)

2、用cmd命令进入该目录

3、执行命令使用脚手架创建项目
	vue  create	  项目名称
	vue  create   arjun
	
4、当工程创建成功后,使用命令进入项目中
	cd arjun

5、通过npm启动项目
	npm run serve

6、通过返回的地址即可访问vue程序

image-20230517174220127

main.js---------它是vue的入口js文件,vue的实例是在此文件中创建的,要导入各种插件,也需要在改文件中导入

image-20230517175621085

app.vue是一个入口组件,其他组件都要通过它进行加载

image-20230517180340211

image-20230517180509165

重点关注文件
index.html		默认加载的页面
assets			它可以存放一些图片或者是css样式文件
cpmponents		它包含我们自己创建的vue组件
App.vue			它是入口组件,其他的vue组件需要通过它加载
main.js			它是入口js,用于配置vue实例,以及配置各种插件
vue.config.js	它是核心js
3、vue组件
我们自己创建的vue组件要放到components目录下
	组件名字:
		1、驼峰命名法
		2、中间-斜杠
	要求:
		1、名字必须采用帕斯卡命名法
		2、名称要求多个单词组合而成

第六章

1、脚手架

image-20230518163857299

1、修改默认配置

在vue.config.js文件中编写如下代码

const {
    defineConfig } = require('@vue/cli-service')
    module.exports = defineConfig({
   
      transpileDependencies: true,
      //忽略语法检查
      lintOnSave:false
})

2、获取文本框内容

1、通过dom获取
  alert(document.getElementById("user").value);
2、通过vue的ref语法
 <input type="text" name="user" id="user" ref="msg" />

//获取
 alert(this.$refs.msg.value);

3、vue插件

作用:进行vue功能的增强,实现功能的重复使用

例如:我们要在插件中配置一个过滤器,进行日期类型的转换,其他组件要转换日期类型数据时,就不需要重复创建过滤器
1、plugin插件
1、创建Plugins.js 编写如下代码

export default{
   
    //安装插件 vue是关键字,代表vue实例
    install(Vue){
   
        //在此处,我们可以配置过滤器、自定义指令
        Vue.filter("showDate",function(time){
   
            let date = new Date(time);
        //分别获得年月日
        let y = date.getFullYear();
        let m = (date.getMonth() + 1).toString().padStart(2, "0");
        let d = date
          .getDate()
          .toString()
          .padStart(2, "0");
        return `${
     y}${
     m
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

arjunna

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

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

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

打赏作者

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

抵扣说明:

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

余额充值