使用Vue脚手架2

这篇具有很好参考价值的文章主要介绍了使用Vue脚手架2。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

ref属性

使用Vue脚手架2,vue.js,javascript,前端

src/components/SchoolName.vue

<template>
    <div class="school">
        <h2>学校名称:{{name}}</h2>
        <h2>学校地址:{{address}}</h2>
    </div>
</template>

<script>
    export default {
        name:'SchoolName',
        data() {
            return {
                name:'黑马',
                address:'广州'
            }
        },
    }
</script>

<style>
    .school{
        background-color: orange;
    }
</style>

 src/App.vue

<template>
    <div>
        <h1 v-text="msg" ref="title"></h1>
        <button ref="btn" @click="showDOM">点我输出上方的DOM元素</button>
        <SchoolName ref="sch"/>
    </div>
</template>

<script>
// 引入School组件
import SchoolName from './components/School.vue'

export default {
    name: 'App',
    data(){
        return{
            msg:'欢迎学习Vue!'
        }
    },
    components: { SchoolName },
    methods:{
        showDOM(){
            console.log(this);
            console.log(this.$refs.title);//真实DOM元素
            console.log(this.$refs.btn);//真实DOM元素
            console.log(this.$refs.sch);//School组件的实例对象
        }
    }
}
</script>

使用Vue脚手架2,vue.js,javascript,前端 使用Vue脚手架2,vue.js,javascript,前端

props配置项

使用Vue脚手架2,vue.js,javascript,前端

src/App.vue

<template>
    <div>
        <StudentName name="李四" sex="女" /><hr/>
        <StudentName name="王五" sex="男" :age="18"/><hr/>
    </div>
</template>

<script>
// 引入School组件
import StudentName from './components/StudentName'

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

src/components/StudentName.vue

<template>
    <div>
        <h1>{{ msg }}</h1>
        <h2>学生姓名:{{ name }}</h2>
        <h2>学生性别:{{ sex }}</h2>
        <h2>学生年龄:{{ myAge+1 }}</h2>
        <button @click="updateAge">尝试修改到的年龄</button>
    </div>
</template>

<script>
export default {
    name: 'StudentName',
    data() {
        return {
            msg: '我是一个尚硅谷的学生',
            myAge: this.age
        }
    },
    methods:{
        updateAge(){
            this.myAge++;
        }
    },
    // 1.简单声明接收
    // props:[
    //     'name','sex','age'
    // ]

    // 2.接收的同时对数据类型进行限制
    // props: {
    //     name: String,
    //     sex: String,
    //     age: Number
    // }

    // 3.接收的同时:进行类型限制+默认值的指定+必要性的限制
    props: {
        name: {
            type: String,
            required: true,
        },
        sex: {
            type: String,
            required: true,
        },
        age: {
            type: Number,
            default: 99,
        }
    }
}
</script>

 使用Vue脚手架2,vue.js,javascript,前端

注意:当props中与当前组件配置同名时,props中的配置优先级高于当前组件 

mixin混入

使用Vue脚手架2,vue.js,javascript,前端

1.组件和混入对象含有同名选项时,这些选项将以恰当的方式进行“合并”,在发生冲突时以组件优先

var mixin={
    data:function(){
        return{
            message:'hello',
            foo:'abc
        }
    }
}

new Vue({
    mixins:[mixin],
    data(){
        return{
            message:'goodbye',
            bar:'def'
        }
    },
    created(){
        console.log(this.$data)
        // =>{message:"ggodbye",foo:"abc",bar:"def"}
    }

})

 2.同名生命周期函数将合并为一个数组,都会被调用。另外,混入对象的生命周期函数将在自身生命周期函数之前调用

var mixin={
    created(){
        console.log('混入对象的钩子被调用')
    }
}

new Vue({
    mixins:[mixin],
    created(){
        console.log('组件钩子被调用')
    }
})

// =>"混入对象的钩子被调用"
// =>"组件钩子被调用"

src/mixin.js

export const hunhe={
    methods:{
        showName(){
            alert(this.name);
        }
    },
    mounted(){
        console.log('你好啊');
    }
}

export const hunhe2={
    data(){
        return {
            x:100,
            y:200
        }
    }
}

src/components/School.vue

<template>
    <div>
        <h2 @click="showName">学校名称:{{ name }}</h2>
        <h2>学校地址:{{ address }}</h2>
    </div>
</template>

<script>
import {hunhe,hunhe2} from '../mixin'
export default {
    name: 'School',
    data() {
        return {
            name:'黑马',
            address:'广州',
            x:666
        }
    },
    mixins:[hunhe,hunhe2]//局部混入
}
</script>

src/components/Student.vue

<template>
    <div>
        <h2 @click="showName">学生姓名:{{ name }}</h2>
        <h2>学生性别:{{ sex }}</h2>
    </div>
</template>

<script>
import {hunhe,hunhe2} from '../mixin'
export default {
    name: 'Student',
    data() {
        return {
            name:'张三',
            sex:'男'
        }
    },
    mixins:[hunhe,hunhe2]//局部混入
}
</script>

src/App.vue

<template>
    <div>
        <Student/>
        <hr/>
        <School/>
    </div>
</template>

<script>
import Student from './components/Student'
import School from './components/School'

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

src/main.js

import Vue from 'vue'
import App from './App.vue'
import { hunhe } from './mixin'

// import {mixin} from './mixin'
Vue.config.productionTip = false

// Vue.mixin(hunhe)  //全局混合引入
// Vue.mixin(hunhe2) //全局混合引入
new Vue({
    el: '#app',
    render: h => h(App)
})

使用Vue脚手架2,vue.js,javascript,前端使用Vue脚手架2,vue.js,javascript,前端

plugin插件

使用Vue脚手架2,vue.js,javascript,前端

src/plugins.js 

export default {
    install(Vue,x,y,z){
        console.log(x,y,z)
        // 全局过滤器
        Vue.filter('mySlice',function(value){
            return value.slice(0,4)
        })


        // 定义全局指令
        Vue.directive('fbind',{
            // 指令与元素成功绑定时
            bind(element,binding){
                element.value=binding.value
            },
            // 指令所在元素被插入页面时
            inserted(element,binding){
                element.focus()
            },
            // 指令所在的模板被重新解析时
            update(element,binding){
                element.value=binding.value
            }
        })

        // 定义混入
        Vue.mixin({
            data(){
                return{
                    x:100,
                    y:200
                }
            }
        })

        // 给Vue原型上添加一个方法(vm和vc都能用
        Vue.prototype.hello=()=>{
            alert('你好啊')
        }
    }
}

src/main.js

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

import plugins from './plugins.js'
Vue.config.productionTip = false

//应用插件
Vue.use(plugins,1,2,3)
//创建vm
new Vue({
    el: '#app',
    render: h => h(App)
})

src/components/School.vue

<template>
    <div>
        <h2>学校名称:{{ name|mySlice }}</h2>
        <h2>学校地址:{{ address }}</h2>
        <button @click="test">点我测试一个hello方法</button>
    </div>
</template>

<script>
export default {
    name: 'School',
    data() {
        return {
            name:'黑马',
            address:'广州'
        }
    },
    methods:{
        test(){
            this.hello()
        }
    }
}
</script>

src/components/Student.vue

<template>
    <div>
        <h2>学生姓名:{{ name }}</h2>
        <h2>学生性别:{{ sex }}</h2>
        <input type="text" v-bind:value="name"/>
    </div>
</template>

<script>
export default {
    name: 'Student',
    data() {
        return {
            name:'张三',
            sex:'男'
        }
    }
}
</script>

src/App.vue

<template>
    <div>
        <Student/>
        <hr/>
        <School/>
    </div>
</template>

<script>
import Student from './components/Student'
import School from './components/School'

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

使用Vue脚手架2,vue.js,javascript,前端

scoped样式

使用Vue脚手架2,vue.js,javascript,前端

查看版本npm view webpack versions

src/components/Student.vue

<template>
    <div class="demo">
        <h2 class="title">学生姓名:{{ name }}</h2>
        <h2 class="atguigu">学生性别:{{ sex }}</h2>
    </div>
</template>

<script>
export default {
    name: 'Student',
    data() {
        return {
            name:'张三',
            sex:'男'
        }
    }
}
</script>

<style lang="less">
    .demo{
        background-color: pink;
        .atguigu{
            font-size: 40px;
        }
    }
</style>

src/components/School.vue

<template>
    <div class="demo">
        <h2 class="title">学校名称:{{ name}}</h2>
        <h2>学校地址:{{ address }}</h2>
    </div>
</template>

<script>
export default {
    name: 'School',
    data() {
        return {
            name:'黑马',
            address:'广州'
        }
    }
}
</script>

<style scoped>
    .demo{
        background-color: skyblue;
    }
</style>

src/App.vue

<template>
    <div>
        <h1 class="title">你好啊</h1>
        <Student/>
        <School/>
    </div>
</template>

<script>
import Student from './components/Student'
import School from './components/School'

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

<style scoped>
    .title{
        background-color: red;
    }
</style>

使用Vue脚手架2,vue.js,javascript,前端文章来源地址https://www.toymoban.com/news/detail-530692.html

到了这里,关于使用Vue脚手架2的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 《代码实例前端》Vue-cil脚手架,二级路由,增删查改

    UserAdd.vue UserList.vue UserManagement.vue UserUpdate.vue Action.vue Comedy.vue HelloWorld.vue Movie.vue MyRouter.vue index.js AboutView.vue HomeView.vue App.vue main.js vue.config.js

    2023年04月08日
    浏览(42)
  • VUE——使用VUE脚手架创建项目

    前言 vue脚手架工具,对vue项目构造做了封装,直接使用vue-cli创建项目,常用配置自动帮你完成,不用自己像使用webpack一样配置。 目录 1、安装 npm i vue 2、创建vue项目 3、运行项目 ps:项目化开发中,使用import导入vue,而不用script src标签引入 我们的第一步需要下载vue及vue脚手

    2024年02月02日
    浏览(58)
  • 使用Vue脚手架2

    ref属性 src/components/SchoolName.vue   src/App.vue   props配置项 src/App.vue src/components/StudentName.vue   注意:当props中与当前组件配置同名时, props中的配置优先级高于当前组件  mixin混入 1. 组件和混入对象含有同名选项 时,这些选项将以恰当的方式进行“合并”,在发生冲突时以 组件

    2024年02月12日
    浏览(47)
  • Vue脚手架使用【快速入门】

    在黑窗口中输入vue ui命令 再更改完路径地址后需要按回车 第一种可以在黑窗口输入命令安装 第二种使用图形化安装 第一种可以在黑窗口输入命令安装 第二种使用图形化安装 1 Vscode [必须用vscode] 2 Webstorm [它和idea一模一样] 3 idea打开—安装vue插件 输入命令 启动成功 如果不能

    2024年02月15日
    浏览(55)
  • 第 3 章:使用 Vue 脚手架

    目录  具体步骤 模板项目的结构(脚手架文件结构) Vue脚手架报错 修改方案:  关于不同版本的Vue vue.config.js配置文件 ref属性 props配置项 mixin(混入) 插件 小结: scoped样式  小结: Todo-list 案例   小结 浏览器本地存储 webStorage 小结 Vue 中的自定义事件 绑定事件监听 触发事件

    2024年02月08日
    浏览(55)
  • 使用vue-cli脚手架创建vue项目

    0.vue cli安装 vue cli2安装 vue cli2卸载 vue cli3安装 key通过命令查看当前安装的vue cli的版本 1. vue init vue init 是vue-cli2.x的初始化方式,可以使用github上面的一些模板来初始化项目 webpack是官方推荐的标准模板名。 vue-cli2.x项目向3.x迁移只需要把static目录复制到public目录下,老项目的

    2024年02月11日
    浏览(76)
  • Vue--》超详细教程——vue-cli脚手架的搭建与使用

    目录 vue-cli vue-cli 的安装 (可能出现的问题及其解决方法) vue-cli 创建 Vue 项目

    2024年01月17日
    浏览(65)
  • Vue中使用uuid生成唯一ID(脚手架创建自带的)

    说明:一般封装工具函数。 说明: 本人使用的是detail组件中的仓库。

    2024年02月13日
    浏览(44)
  • 使用Vue脚手架配置代理服务器的两种方式

    本文主要介绍使用Vue脚手架配置代理服务器的两种方式 注意:Vue脚手架给我们提供了两种配置代理服务器的方式,各有千秋,使用的时候只能二选一,不能同时使用 除了cros和jsonp,还有一种代理方式,这种用的相对来说也很多, 一般代理服务器 这个概念很好理解,相当于生

    2024年02月02日
    浏览(69)
  • Vue | (三)使用Vue脚手架(下)| 尚硅谷Vue2.0+Vue3.0全套教程

    学习链接:尚硅谷Vue2.0+Vue3.0全套教程丨vuejs从入门到精通,本文对应p79-p95,博客参考尚硅谷公开笔记,补充记录实操。 区别于JS里的内置事件。 一种 组件间通信 的方式,适用于: 子组件 === 父组件 使用场景 :A是父组件,B是子组件,B想给A传数据,那么就要在A中给B绑定自

    2024年02月22日
    浏览(57)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包