• 02手写router路由了解实现的原理


    react-router:实现了路由的核心功能

    react-router-dom:基于react-router,加入了在浏览器运行环境下的一些功能。例如Link组件,会渲染一个a标签。

    路由模式分为:BrowserRouter(history)(不带#号),和HashRouter(带#号)。前者使用pushState和popState事件构建路由,后者使用window.location.hash和hashchange事件构建路由。

               //构造函数的重载,可以看做是一个对象模板
                function Router(params){
                    console.log(this);//this指这个构造函数,
                                      //现在的this对象,里面没有属性和方法。开始往this对象添加东西。
                    console.log(params);//参数params,是下面已经实例化的对象
                    
                    this.routes= params.routes||[];//给this对象里,添加routes属性。用来记录配置信息。
                    this.mode= params.mode||'hash';//给this对象里,添加mode属性。用来记录路由模式。
                    console.log("this.mode:"+ this.mode);
    
                    this.init=function(){   //给this对象里,添加init方法。作用:初始化。
                        var that =this; //这里的this指上面那个this对象
                       
                        });
                    }
                    this.init();
                    
                }
                //实例化一个对象的时候,必然调用构造方法
                new Router({
                    mode: 'hash',
                    routes:[
                        { path:'/home',component:'<h1>主页</h1><h4>新一代前端工程师:我们啥都会</h4>'},
                        { path: '/news', component: '<h1>新闻</h1><h4>今天2020-07-01</h4>' },
                        { path: '/team', component: '<h1>团队</h1><h4>WEB前端工程师</h4>' },
                        { path: '/about', component: '<h1>关于</h1><h4>我们都要加油</h4>' },
                        { path: '*', redirect: '/home' }
                    ]
                });
    View Code

    HTML DOM  querySelectorAll()方法

    //querySelectorAll() 方法返回文档中匹配指定 CSS 选择器的所有元素,返回 NodeList 对象。
    //NodeList 对象表示节点的集合。可以通过索引访问,索引值从 0 开始。
    //节点列表不是一个数组!可以看做是一个对象的list。
    
    document.querySelectorAll(".router")
    document.querySelectorAll(".router").forEach(console.log);//es6的循环
    View Code

    HTML DOM  addEventListener()方法

    //addEventListener() 方法用于向指定元素添加事件句柄。
    //element.addEventListener(event, function, useCapture)
    //event: 必须。字符串,指定事件名。
    //function: 必须。指定要事件触发时执行的函数。
    //useCapture: 可选。布尔值,指定事件是否在捕获或冒泡阶段执行。
                         //true - 事件句柄在捕获阶段执行
                         //false- false- 默认。事件句柄在冒泡阶段执行
    
    item.addEventListener("click",function(e){
                                console.log(e);
                            });
    View Code 

    HTML DOM  event对象

    /*Event 对象代表    事件的状态,*/
    //比如事件在其中发生的  元素、键盘按键的状态、鼠标的位置、鼠标按钮的状态。
    
    /*标准 Event 属性*/
    //bubbles    返回布尔值,指示事件是否是起泡事件类型。
    //cancelable    返回布尔值,指示事件是否可拥可取消的默认动作。
    //currentTarget    返回其事件监听器触发该事件的元素。
    //eventPhase    返回事件传播的当前阶段。
    //target    返回触发此事件的元素(事件的目标节点)。
    //timeStamp    返回事件生成的日期和时间。
    //type    返回当前 Event 对象表示的事件的名称。
    
    /*标准 Event 方法:(IE 的事件模型不支持这些方法:)*/
    //initEvent()    初始化新创建的 Event 对象的属性。
    //preventDefault()    取消事件的默认动作,通知浏览器不要执行与事件关联的默认动作。
    event.preventDefault()
    //stopPropagation()    不再派发事件。
    
    //returnValue    如果设置了该属性,它的值比事件句柄的返回值优先级高。把这个属性设置为 fasle,可以取消发生事件的源元素的默认动作。
    window.event.returnValue = false;  
    View Code

    JavaScript String对象

    /*String 对象属性*/
    //constructor    对创建该对象的函数的引用
    //length    字符串的长度
    //prototype    允许您向对象添加属性和方法
    
    
    /*String 对象方法*/
    //indexOf()    检索字符串。
    stringObject.indexOf(searchvalue【,fromindex】)//可返回某个指定的字符串值在字符串中首次出现的位置。
    
    //slice()    提取字符串的片断,并在新的字符串中返回被提取的部分。
    stringObject.slice(start,end)//当start=end时,看做stringObject.slice(start)
    View Code

    Browser对象  location对象

    /*Location 对象是 Window 对象的一个部分,可通过 window.location 属性来访问。*/
    
    /*Location 对象方法*/
    //assign()    加载新的文档。
    //reload()    重新加载当前文档。
    
    //replace()    用新的文档替换当前文档。
    window.location.replace("http://www.w3school.com.cn")//replace() 方法不会在 History 对象中生成一个新的记录。当使用该方法时,新的 URL 将覆盖 History 对象中的当前记录。
    复制代码
    
    
    /*Location 对象属性*/
    //hash    设置或返回从井号 (#) 开始的 URL(锚)。
    //host    设置或返回主机名和当前 URL 的端口号。
    //hostname    设置或返回当前 URL 的主机名。
    //href    设置或返回完整的 URL。
    //pathname    设置或返回当前 URL 的路径部分。
    //port    设置或返回当前 URL 的端口号。
    //protocol    设置或返回当前 URL 的协议。
    //search    设置或返回从问号 (?) 开始的 URL(查询部分)。
    View Code
  • 相关阅读:
    python动态规划解决矩阵连乘
    ISCC2019-digdigdig
    MultiSelectComboBox(一)
    中国地图 xaml Canvas
    NotificationObject.cs
    DelegateCommand.cs
    SQL-PIVOT 数据透视 行列转换
    中国行政区域(省,市,县)SQL
    WCF自定义地址路由映射(不用svc文件)
    java下载安装,环境变量,hello world
  • 原文地址:https://www.cnblogs.com/Strugglinggirl/p/14071749.html
Copyright © 2020-2023  润新知