vue源码 - 模板解析(手写简易版)

vue.js
class Vue { 
    constructor(options) { 
        this.$el = document.querySelector(options.el)
        this.$data = options.data
        console.log(options.el); // #app
        
        this.compile(this.$el)
    }

    compile(node) { 
        console.log(node);
        console.log(node.childNodes);
        node.childNodes.forEach((item,index) => { 
            console.log(item);
            console.log(item.nodeType);
            // 元素节点,再走一遍compile方法
            if (item.nodeType == 1) {
                console.log(item);
                this.compile(item)
            }
            // 文本节点,如果有{{}}就替换成数据
            if (item.nodeType == 3) { 
                // 正则匹配
                let reg = /\{\{(.*?)\}\}/g;
                let text = item.textContent;
                // 给节点赋值
                item.textContent = text.replace(reg, (match, vmKey) => {
                    vmKey = vmKey.trim()
                    console.log(vmKey);
                    return this.$data[vmKey]
                })
            }
        })
    }
}

index.html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    
    <div id="app">
        <H1>{{str}}</H1>
        {{  str  }}
        <p>{{b}}</p>
    </div>

    <script type="text/javascript" src="vue.js"></script>
    <script type="text/javascript">
        new Vue({
            el:"#app",
            data:{
                str:"你好!",
                b:"这也是data数据"
            }
        })
    </script>
</body>
</html>

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
vue-element-admin模板的路由解析是通过创建路由实例并配置路由表来实现的。在该模板中,路由表被分为两部分:constRouter和动态添加的路由。 constRouter是一个数组,包含了不需要验证的路由,例如登录页和404页面。这些路由被放在constRouter中,并且不需要权限验证。 动态添加的路由通过在router/permission.js文件中配置。每个路由都有以下属性: - path: 路径 - name: 路由名称 - component: 组件 - redirect: 重定向路径 - meta: 路由元信息,包括标题、图标和角色权限 - children: 子路由 在permission.js文件中,可以根据需要添加多个路由,并且可以嵌套子路由。每个路由都可以配置不同的权限角色,以控制访问权限。 总的来说,vue-element-admin模板的路由解析是通过创建路由实例并配置路由表来实现的,其中constRouter包含了不需要验证的路由,而动态添加的路由可以根据需要配置不同的权限角色。 #### 引用[.reference_title] - *1* [vue-element-admin动态路由权限、菜单](https://blog.csdn.net/feifei9989/article/details/129611533)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [vue-element-admin如何添加路由以及如何修改title](https://blog.csdn.net/weixin_45973832/article/details/129264607)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [vue-element-admin 动态路由 vue-element-admin 配置 动态路由 vue-element-admin 实现 动态路由 vue-...](https://blog.csdn.net/qq_40739917/article/details/125943971)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值