首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >56. Vue原生js的组件拆分结构设计

56. Vue原生js的组件拆分结构设计

作者头像
Devops海洋的渔夫
发布2020-08-16 23:44:45
2K0
发布2020-08-16 23:44:45
举报
文章被收录于专栏:Devops专栏Devops专栏Devops专栏

需求

在历史问题的情况下,存在需要往jquery项目中引入vue.js框架的情况,这种情况下,因为前期并没有使用webpack进行打包压缩,所以考虑直接使用原生的js拆分vue.js的组件,不依赖与wabpack等打包软件。

思路

因为没有使用webpack以及babel等高级语法编译工具,只有jquery支持,所以我采用将组件按照该html以及js进行文件夹封装,然后采用jqueryload方法来导入组件。

示例

1. 首先编写基础文档结构

2.组件login的编写

login.html

<template id="register-tpl">
    <div>
        <h1 class="register-h1">注册组件</h1>
    </div>
</template>

<style>
    .register-h1{
        color: cyan;
        font-family: "Microsoft YaHei UI";
    }
</style>

login.js

var login = {
    template: "#login-tpl",
    data() {
        return {
            msg: '123',
        };
    }
};

3.组件register的编写

register.html

<template id="register-tpl">
    <div>
        <h1 class="register-h1">注册组件</h1>
    </div>
</template>

<style>
    .register-h1{
        color: cyan;
        font-family: "Microsoft YaHei UI";
    }
</style>

register.js

// 创建注册组件
var register = {
    template: '#register-tpl'
};

4.编写index.html页面

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <!--  导入jqeury -->
    <script src="lib/jquery/jquery-3.4.1.min.js"></script>
    <!--  导入vue.js库  -->
    <script src="lib/vue.js"></script>

</head>
<body>

<div id="app">

    <a href="" @click.prevent=" comName='login' ">登陆</a>
    <a href="" @click.prevent=" comName='register' ">注册</a>

    <!-- Vue提供了 component ,来展示对应名称的组件 -->
    <!-- component 是一个占位符, :is 属性,可以用来指定要展示的组件的名称 -->
    <component :is="comName"></component>

</div>

<!-- 导入组件的import.js -->
<script src="import.js"></script>
<!-- 导入main.js -->
<script src="main.js"></script>

</body>
</html>

在这里要注意:jquery的load方法是不能用在 vue 的 app 容器内的,但是外部就可以直接调用。

所以在下面的使用import.js引入所有组件的内容,然后用 main.js 来编写 vm 实例。

5. 编写import.js

// 导入login组件
$('<login></login>').insertAfter("#app"); // 在app后面加入login标签
$('login').load('./components/login/login.html'); // 导入login.html
document.write('<script src="components/login/login.js"></script>');

// 导入register组件
$('<register></register>').insertAfter("#app");
$('register').load('./components/register/register.html');
document.write('<script src="components/register/register.js"></script>');

6.编写main.js

// 创建Vue的实例
var vm = new Vue({
    el: '#app',
    data: {
        comName: '', // 设置默认的组件显示登陆
    },
    components: {
        login, // 注册login组件
        register, // 注册register组件
    }
});

7.在浏览器打开index.html查看效果

image-20200307233128635

好了,到这里基本的组件拆分已经实现。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 需求
  • 思路
  • 示例
    • 1. 首先编写基础文档结构
      • 2.组件login的编写
        • 3.组件register的编写
          • 4.编写index.html页面
            • 5. 编写import.js
              • 6.编写main.js
                • 7.在浏览器打开index.html查看效果
                相关产品与服务
                容器服务
                腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档