zoukankan      html  css  js  c++  java
  • vue组件传值和脚手架下载

    1. 局部组件:  三步:声子、挂子、用子

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    
    </head>
    <body>
        <div id="app">
            <!-- 用子 -->
            <App></App>
    
        </div>
    </body>
    <script src="../vue.js"></script>
    <script>
        // 声子
        let App = {
            data(){
                return {
                    appmsg:'我是app组件',
                }
            },
            template:`
                <div class="app">
                    <h1>{{appmsg}}</h1>
                </div>
            `,
        }
    
        let vm = new Vue({
            el:'#app',
            data(){
                return {
                    // appmsg:'xxxx'
                }
            },
            components:{
                // App:App, // 挂子
                App,
            }
        })
    
    </script>
    </html>

    2. 全局组件:  声子、用子

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    
    </head>
    <body>
        <div id="app">
            <!-- 用子 -->
            <App></App>
            <num></num>
        </div>
    </body>
    <script src="../vue.js"></script>
    <script>
        // 声子  全局组件
        Vue.component('num',{
            data(){
                return {
                    nummsg:'我是全局num组件',
                    num:100,
                }
            },
            template:`
                <div class="app">
                    <h1>{{nummsg}}</h1>
                    <h1>{{num}}</h1>
                </div>
            `,
    
        })
    
        // 声子  局部组件
        let App = {
            data(){
                return {
                    appmsg:'我是app组件',
                }
            },
            template:`
                <div class="app">
                    <h1>{{appmsg}}</h1>
                </div>
            `,
        }
    
        let vm = new Vue({
            el:'#app',
            data(){
                return {
                    // appmsg:'xxxx'
                }
            },
            components:{
                // App:App, // 挂子
                App,
            }
        })
    
    </script>
    </html>

    3. 组件传值

    3.1 父组件往子组件传值

    两步:1 在父组件使用子组件的标签上加自定义属性

    2 在子组件中声明props属性来接受数据

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    
    </head>
    <body>
        <div id="app">
            <!-- 用子 -->
            <App></App>
        </div>
    </body>
    <script src="../vue.js"></script>
    <script>
    
        // header footer section  main...不要和h5中的新标签名冲突
        let Vheader = {
            data(){
                return {
                    msg:'我是vheader组件',
                }
            },
            template:`
                <div class="vheader">
                    <button>{{msg}}</button>
                    <h2>{{xx}}</h2>
                </div>
            `,
            props:['xx', ]
        }
    
    
        //<Vheader xx="30"></Vheader> 静态传值
        //<Vheader :xx="num"></Vheader> 动态传值
        // 声子
        let App = {
            data(){
                return {
                    appmsg:'我是app组件',
                    num:20,
                }
            },
            components:{
                Vheader,
            },
            template:`
                <div>
    
                    <Vheader :xx="num"></Vheader>
    
                </div>
            `
        }
    
        let vm = new Vue({
            el:'#app',  //
            data(){
                return {
                    // appmsg:'xxxx'
                }
            },
            components:{
                // App:App, // 挂子
                App,
            }
        })
    
    </script>
    </html>

    3.2 子组件往父组件传值

    两步

    1 子组件中使用this.$emit('父组件的自定义事件名称',值),

    2 父组件中定义一个父组件的自定义事件名称对应的那个方法来接受数据

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    
    </head>
    <body>
        <div id="app">
            <!-- 用子 -->
            <App></App>
    
    
        </div>
    </body>
    <script src="../vue.js"></script>
    <script>
    
        // header footer section  main...不要和h5中的新标签名冲突
        let Vheader = {
            data(){
                return {
                    msg:'我是vheader组件',
                    count:180,
                }
            },
            template:`
                <div class="vheader">
                    <button>{{msg}}</button>
                    <button @click="zouni">走你</button>
                </div>
            `,
            methods: {
                zouni(){
                    this.$emit('fatherxx',this.count);
                }
            }
            // created(){
            //
            // }
    
        }
    
        // 声子
        let App = {
            data(){
                return {
                    appmsg:'我是app组件',
                    num:20,
                    soncount:'',
                }
            },
            components:{
                Vheader,
            },
            template:`
                <div>
                    <p style="color:red;">{{soncount}}</p>
                    <Vheader @fatherxx="xx"></Vheader>
    
                </div>
    
            `,
            methods:{
                xx(val){
                    this.soncount = val;
                }
            }
    
        }
    
        let vm = new Vue({
            el:'#app',  //
            data(){
                return {
                    // appmsg:'xxxx'
                }
            },
            components:{
                // App:App, // 挂子
                App,
            }
        })
    
    </script>
    </html>

    3.3 平行组件传值

    三步

    1 声明一个公交车

    2 往公交车上放数据

    3 从公交车上拿数据

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    
    </head>
    <body>
        <div id="app">
            <!-- 用子 -->
            <App></App>
    
    
        </div>
    </body>
    <script src="../vue.js"></script>
    <script>
    
        let bus = new Vue();
    
        //
        Vue.component('v1',{
            data(){
                return {
                    nummsg:'我是v1组件',
                    num:100,
                }
            },
            template:`
                <div class="app">
                    <h1>{{nummsg}}</h1>
                    <h1>{{num}}</h1>
                    <button @click="zouni">走你!</button>
                </div>
            `,
            methods:{
                zouni(){
                    bus.$emit('v1xx',this.num);
                }
            }
    
        });
        Vue.component('v2',{
            data(){
                return {
                    nummsg:'我是v2组件',
                    num:120,
                    v1num:'',
                }
            },
            template:`
                <div class="app">
                    <h1>{{nummsg}}</h1>
                    <h1>{{num}}</h1>
                    <p style="color:blue;">{{v1num}}</p>
                </div>
            `,
            created(){ 
                bus.$on('v1xx', (val) => {
                    // console.log(val);
                    // console.log(this);
                    this.v1num = val;
                })
            }
        })
    
        // 声子
        let App = {
            data(){
                return {
                    appmsg:'我是app组件',
                    num:20,
                    soncount:'',
                }
            },
    
            template:`
                <div>
                    <v1></v1>
                    <v2></v2>
                </div>
            `,
        }
    
        let vm = new Vue({
            el:'#app',  //
            data(){
                return {
                    // appmsg:'xxxx'
                }
            },
            components:{
                // App:App, // 挂子
                App,
            }
        })
    
    </script>
    </html>

    4. vue- router

    通过不同的访问路径,加载不同的组件到单页面中(那一个html文件),vue做的叫做单页面应用(SPA).

    文档:https://router.vuejs.org/zh/

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    
    </head>
    <body>
    <div id="app">
        <App></App>
    </div>
    </body>
    
    <script src="../vue.js"></script>
    <script src="vue-router.js"></script>
    
    <script>
    
        // 第一步:
        Vue.use(VueRouter);  // 将VueRouter功能注入到Vue中
    
        // 第二步:写组件
        let home = {
            data(){
                return {
                    msg:'我是home页面',
                }
            },
            template:`
                <div class="home">
                    <h1>{{msg}}</h1>
    
                </div>
            `,
    
        }
        let spa = {
            data(){
                return {
                    msg:'我是spa页面',
                }
            },
            template:`
                <div class="spa">
                    <h1>{{msg}}</h1>
    
                </div>
            `
        }
        // 127.0.0.1:8000/home/
        // 127.0.0.1:8000/spa/
    
            // 声子
        let App = {
            data(){
                return {
                    appmsg:'我是app组件',
                    num:20,
                    soncount:'',
                }
            },
            // a href='/home/'
            // 第六步:写连接,写出口
            template:`
                <div>
                    <router-link to="/home/">首页</router-link>
                    <router-link to="/spa/">spa页</router-link>
    
                    <router-view></router-view>
    
                </div>
            `,
        }
        // 第三步:写路由规则
        const routes = [
            {path:'/home/', component:home, },
            {path:'/spa/', component:spa, },
        ]
        // 第四步:实例化vue-router对象
        let router = new VueRouter({
            routes,
        })
    
        // 第五步:挂载router对象
        let vm = new Vue({
            el:'#app',  //
            router,  //  挂载到vue对象上
            data(){
                return {
                    // appmsg:'xxxx'
                }
            },
            components:{
                // App:App, // 挂子
                App,
            }
        })
    
    </script>
    
    </html>

    5. vue-cli 脚手架

    先下载node.js

    下载地址:https://nodejs.org/en/download/【如果已经安装了nvm,那么这里不用手动安装了】

    node -v
    npm -v

    安装vue- cli

    npm install -g vue-cli --registry=https://registry.npm.taobao.org

    创建项目

    vue init webpack 项目名称

    按照提示,运行项目

    npm run dev
  • 相关阅读:
    spsss基本统计分析操作攻略
    MATLAB读取Excel表格数据和处理数据
    MATLAB 雷达图画图函数
    spss新手教程
    MATLAB绘制饼状图
    高斯消元法解线性方程组(C++实现)
    Java和matlab混合编程
    Matlab与Java混合编程的教程
    两组数据的相关性分析
    vs2013+QT5环境
  • 原文地址:https://www.cnblogs.com/fdsimin/p/13576957.html
Copyright © 2011-2022 走看看