温馨提示×

Razor Pages如何结合Vue实现动态组件单页应用

发布时间:2021-09-19 08:34:57 来源:亿速云 阅读:64 作者:小新 栏目:大数据

这篇文章主要介绍Razor Pages如何结合Vue实现动态组件单页应用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

基本页面结构

Index页面做为主页面, 其它页面只是下载模板和相关的vue组件代码。 暂时加载组件使用了个全局函数,改成vue的方法也不难。

Index中引入jquery、vue、vue-router、element-ui相关的CSS和JS文件。

在Index中实现路由相关功能

    const pages = {};

    const routes = [
        { path: '/login', component: () => Promise.resolve(pages['login']) } ,
        { path: '/home', component: () => Promise.resolve(pages['home']) },
    ]

    const router = new VueRouter({
        routes: routes // (缩写) 相当于 routes: routes
    })

    const vueMain = new Vue({
        el: "#app",
        router:router
    })

    vueMain.$router.push('login');

    function load(routePath) {
        console.log(routePath)
        if (typeof (pages[routePath]) != "undefined") {
            console.log("Route to: " + routePath);
            vueMain.$router.push(routePath);
            return;
        }

        const url = '@Url.Content("~/")' + routePath;
        console.log("url: " + url);
        $.get(url, {}, rsp => {
            $("#components").append(rsp);
            vueMain.$router.push(routePath);
        })
    }

组件实现

 
    <template id="tplLogin">
      
        <el-form   method="post">
            @Html.AntiForgeryToken()
            <el-form-item label="用户名:">
                <el-input v-model="loginData.userName" maxlength="30" minlength="2"
                          @@input="inputUserName" placeholder="请输入用户名.">
                </el-input>
            </el-form-item>

            <el-form-item class="text-center">
                <el-button type="primary" icon="el-icon-check" @@click="doLogin" :disabled="!canLogin">确定</el-button>
            </el-form-item>

           
        </el-form>
         
    </template>

    <script>
        pages["login"] = Vue.component('login', {
            template: "#tplLogin",
            data: function () {
                return {
                    loginData: { userName: '' },
                    canLogin:false
                };
            },
            
            methods: {
                doLogin: function () {
                    $.post('Login', this.loginData, function (rsp) {
                        console.log("Login Result: " + rsp);
                        load('home');
                    }); 
                },
                inputUserName: function () { 
                    this.canLogin = this.loginData.userName.trim().length > 2;
                }
            }
        })
    </script>

跳转页面

可以看到关键的方法是 load('home'); 它会判断组件是否加载过, 进而决定是不是需要异步加载组件。

以上是“Razor Pages如何结合Vue实现动态组件单页应用”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注亿速云行业资讯频道!

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

vue
免费拨打  400 100 2938 免费拨打 400 100 2938
24小时售后技术支持 24小时售后技术支持
返回顶部 返回顶部