zoukankan      html  css  js  c++  java
  • Vue 2.0 入门示例识记

    1.路由示例

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8" />
        <title></title>
        <script src="vue.js"></script>
        <script src="vue-router.js"></script>
    </head>
    <body>
        <div id="app">
            <h1>Hello App!</h1>
            <p>
                <router-link to="/foo">Go to Foo</router-link>
                <router-link to="/bar">Go to Bar</router-link>
            </p>
            <router-view></router-view>
        </div>
        <script>
            const Foo = { template: '<div>foo</div>' }
            const Bar = { template: '<div>bar</div>' }
    
            const routes = [
                { path: '/foo', component: Foo },
                { path: '/bar', component: Bar }
            ]
    
            const router = new VueRouter({
                routes // short for `routes: routes`
            })
    
            const app = new Vue({
                router
            }).$mount('#app')
        </script>
    </body>
    </html>

    2.动态编译示例

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8" />
        <title>vue complile example</title>
        <script src="vue.js"></script>
    </head>
    <body>
        <div id="demo">
        </div>
        <script>
            var res = Vue.compile('<div><h1>{{title}}</h1></div>');
            new Vue({
                el: '#demo',
                data: {
                    title: 'vue compile'
                },
                render: res.render
            });
        </script>
    </body>
    </html>

    3.动态生成Router-Link示例

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8" />
        <title></title>
        <script src="vue.js"></script>
        <script src="vue-router.js"></script>
    </head>
    <body>
        <div id="app">
    
            <router-link to="/">Home</router-link>
            <dynamic-link></dynamic-link>
            <router-link to="/about">About</router-link>
    
            <div class="box">
                <router-view></router-view>
            </div>
    
        </div>
        <script>
            const Home = { template: '<h1>Home</h1>' }
            const Content = { template: '<h1>Content</h1>' }
            const About = { template: '<h1>About</h1>' }
    
            Vue.component('dynamic-link', {
                template: "<component v-bind:is="transformed" /></component>",
                data() {
                    return {
                        text: "<router-link to="/content">Content</router-link>"
                    }
                },
                computed: {
                    transformed() {
                        return { template: this.text }
                    }
                }
            });
    
            const routes = [
                { path: '/', component: Home },
                { path: '/content', component: Content },
                { path: '/about', component: About },
            ]
    
            const router = new VueRouter({ routes })
    
            const app = new Vue({ router }).$mount('#app');
    
            //app.$router.push({ path: '/about' });
        </script>
    </body>
    </html>

    4.动态输出(仅为验证构想,并非正途,仅做参考)

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8" />
        <title></title>
        <script src="vue.js"></script>
        <script src="vue-router.js"></script>
    </head>
    <body>
        <div id="app"></div>
        <script>
            const NotFound = { template: '<div><p>Page not found</p></div>' };
            const Home = { template: "<div><p>home page</p><a href="javascript:mout('/about')">About</a></div>" };
            const About = { template: "<div><p>about page</p><a href="javascript:mout('/')">Home</a></div>" };
    
            function getRouterPath()
            {
                var href = window.location.href;
                var pathName = window.location.pathname;
                var startIndex = href.lastIndexOf(pathName);
                if (href.length > startIndex + pathName.length + 1)
                    return href.substr(startIndex + pathName.length + 1);
                else
                    return "/";
            }
    
            function findRoute(currentRoute) {
                for (var index in routes)
                {
                    var route = routes[index];
                    if (route.path == currentRoute)
                        return route.component;
                }
                return NotFound;
            }
    
            const routes = [
                { path: '/', component: Home },
                { path: '/about', component: About }
            ]
    
            const router = new VueRouter({ routes })
    
            const app = new Vue({
                router: router,
                data: {
                    currentRoute: getRouterPath()
                },
                computed: {
                    ViewComponent() {
                        return findRoute(this.currentRoute);
                    }
                },
                render(createElement) { return createElement(this.ViewComponent) }
            });
    
            app.$mount('#app');
    
            function mout(routePath) {
                app.$router.push({ path: routePath });
                window.location.reload();
            }
        </script>
    </body>
    </html>

     4.组件之间通信(通过EventBus,其实就是一个vue对象)

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>组件通信</title>
        <script src="vue.js"></script>
        <script src="vue-router.js"></script>
    </head>
    <body>
        <div id="app">
            <com1></com1>
            <com2></com2>
        </div>
        <script>
            const eventBus = new Vue();
            Vue.component('com1', {
                template: "<div><button @click='click'>组件1</button></div>",
                data() {
                    return {
                        
                    }
                },
                computed: {
                    
                },
                methods:{
                    click:function(){
                        eventBus.$emit("com2click", "hello com2");
                    }
                },
                created() {
                    eventBus.$on("com1click", message => {
                        alert("com1click:" + message);
                    });
                }
            });
    
            Vue.component('com2', {
                template: "<div><button @click='click'>组件2</button></div>",
                data() {
                    return {
                        
                    }
                },
                computed: {
                    
                },
                methods:{
                    click:function(){
                        eventBus.$emit("com1click", "hello com1");
                    }
                },
                created() {
                    eventBus.$on("com2click", message => {
                        alert("com2click:" + message);
                    });
                }
            });
    
            const app = new Vue().$mount('#app');
        </script>
    </body>
    </html>
    桂棹兮兰桨,击空明兮溯流光。
  • 相关阅读:
    nginx使用vhost子目录
    nginx服务报错解决
    反向代理远端 单台tomcat 使用域名代理
    反向代理远端 单台tomcat 使用ip+端口
    nginx反向代理本地 两台web负载均衡 使用域名代理
    nginx反向代理本地 两台web负载均衡 使用ip+端口代理
    nginx反向代理本地 单台wed -使用域名代理
    nginx反向代理本地 单台wed -使用ip+端口代理
    php 在函数内引用全局变量 讲解引用
    Xdebug的安装与使用
  • 原文地址:https://www.cnblogs.com/nanfei/p/15427467.html
Copyright © 2011-2022 走看看