路由

经验之谈:企业开发之WPF必备技能

感情迁移 提交于 2020-03-12 11:30:35
WPF篇章 1.全称 WPF的全称为:Windows Presentation Foundation,Windows呈现基础。(调侃:我佩服) 2.MVVM MVVM是Model-View-ViewModel的简写,本质就是MVC 的改进版,将其中的View 的状态和行为抽象化,让我们将视图 UI 和业务逻辑分开。 3.背景 微软推出的第四代开发框架,上一代是WinForm,当时推出是为了对抗J2EE。 4.路由事件 4.1简单事件模型 主要包括几个部分:事件的拥有者、事件、事件处理器、订阅关系。简单举例,有一个name为button的按钮,点击时调用方法button_Click,则事件的拥有者为button,事件为Click事件,事件处理器为button_Click,订阅关系在xaml.cs中可以写为:button.Click += button_Click。 4.2路由事件模型 传统的简单事件模型中,消息激发是将消息通过事件订阅的然后交给事件的响应者,事件的响应者使用事件的处理器来做出响应。这样就存在一个问题,用户控件内部的事件就不能被外界订阅,因为事件的宿主必须能够直接访问到事件的响应者。 路由事件的事件拥有者和事件的响应者之间则没有直接的显式订阅关系,事件的拥有者则只负责激发事件,事件将有谁响应它并不知道。事件的响应者则有事件的监听器,针对事件进行监听

vue-router实现原理

*爱你&永不变心* 提交于 2020-03-12 09:05:45
近期面试,遇到关于vue-router实现原理的问题,在查阅了相关资料后,根据自己理解,来记录下。 我们知道vue-router是vue的核心插件,而当前vue项目一般都是单页面应用,也就是说vue-router是应用在单页面应用中的。 那么,什么是单页面应用呢?在单页面应用出现之前,多页面应用又是什么样子呢? 单页面应用与多页面应用 单页面 即 第一次进入页面的时候会请求一个html文件,刷新清除一下。切换到其他组件,此时路径也相应变化,但是并没有新的html文件请求,页面内容也变化了。 原理是:JS会感知到url的变化,通过这一点,可以用js动态的将当前页面的内容清除掉,然后将下一个页面的内容挂载到当前页面上,这个时候的路由不是后端来做了,而是前端来做,判断页面到底是显示哪个组件,清除不需要的,显示需要的组件。这种过程就是单页应用,每次跳转的时候不需要再请求html文件了。 多页面 即 每一次页面跳转的时候,后台服务器都会给返回一个新的html文档,这种类型的网站也就是多页网站,也叫做多页应用。 原理是:传统的页面应用,是用一些超链接来实现页面切换和跳转的 其实刚才单页面应用跳转原理即 vue-router实现原理 vue-router实现原理 原理核心就是 更新视图但不重新请求页面。 vue-router实现单页面路由跳转,提供了三种方式:hash模式、history模式

家庭网络速度问题排查

 ̄綄美尐妖づ 提交于 2020-03-12 08:44:52
受新冠疫情影响,学生都开始在家学习,通过电视、网络上课。近期有不少朋友反馈上课卡,今天我们就来分析分析网络卡的主要原因与解决思路。 首先,大家学习一下网速测试工具的使用。 打开 https://www.speedtest.cn/ 网站,点击中间的Go,一会儿之后就会给出当前的网速情况。 这是我家100M带宽测试的情况。 以下是Zoom视频会议对于带宽的要求,大家可以对比下。 一、通过4G移动数据上网 通过手机的4G信号上网,网络卡的原因主要2个方面, 1、上网设备(手机)有问题,推荐使用华为自己做的手机如华为的meta系列,而不要选择低端的手机,有的低端的手机信号质量不好。 2、家庭所处位置信号不好,这个可以从平时的使用中观察,比如我家的移动信号就比较差,只能站在窗口打电话。遇到这种硬伤只能换方案啦,推荐使用光纤+wifi上网。 二、通过光纤+wifi上网 现在上海基本家家都通光纤了,我们讨论一下家庭的组网方案。 建议使用电信的光纤入户,不推荐使用移动、联通等其它运营商的,小道消息(未经证实)说基本上物理光纤都是电信家的,其它家是租用电信的通道,而且会很多家共享带宽,也就是说多家同时上网时,实际可用的带宽相对较小。 wifi上网设备(手机),也是推荐使用华为自己做的手机如华为的meta系列,而不要选择低端的手机,有的低端的手机信号质量不好。 一般家里的组网有几种: 1、光猫

前端路由 VS 后端路由

删除回忆录丶 提交于 2020-03-12 08:39:01
什么是路由? 1.后端路由:对于普通网站来说,所有的链接都是URL地址,所有的URL地址都对应服务器上对应的资源 2.前端路由:对于单页面应用程序来说,主要通过URL中的hash(#号)来实现不同页面之间的切换,同时,hash有一个特点:HTTP请求中不会包含hash相关的内容,所以,单页面程序中的页面跳转主要用hash实现。 3.在单页面应用程序中,这种通过hash改变来切换页面的方式,叫做前端路由(区别后端路由) 来源: https://www.cnblogs.com/linm/p/12466935.html

Vue-Router 源码解析(四) Vue内this.$router和this.$route的区别

生来就可爱ヽ(ⅴ<●) 提交于 2020-03-12 08:33:33
对于Vue内部来说,不管是根组件还是子组件,都存在this.$router和this.$route两个属性,它们的区别如下: $router    指向当前的VueRouter实例,也就是new Vue({router:router})这里传入的router实例对象,可以使用上一节里列出的VueRouter实例的属性和方法, $route   指向当前跳转的路由对象,是一个包含当前的路由信息的对象, <router-view/>组件会通过这个属性来获取需要渲染的组件 对于$router来说,它包含了如下属性 path ;当前路由的路劲,总是解析为绝对路劲 ;例如:/foo/bar params ;对象类型,包含了动态片段和全匹配片段,如果没有路由参数就是一个空对象 query ;对象类型,表示URL查询参数,对于/foo/user=1来说,$route.query.user等于1,如果没有查询参数,则是个空对象 hash ;当前路由的hash值(带#),如果没有hash值,则为空字符串 fullPath ;解析完成后的URL,包含查询参数和hash的完整路劲 matched ;一个数组,包含当前路由的所有嵌套路劲片段的路由记录,也就是所有父路由对象都在这个数组里面,<router-view/>组件会用到这个属性 name ;当前路由的名称 ;和命名别名有关

技术开源项目从零到一的心路历程

纵饮孤独 提交于 2020-03-12 04:02:31
这是一次非常漫长过程,整个项目大约经历了2年的开发与维护,期间重大的重构了十几次架构。 首先一句话介绍一下整个项目: 基于 Node.js 的服务端 web 开发框架 在这里我分享一下我的经验,希望能够帮助<<< 想做开源的同学 >>> 项目地址: 传送门 背景 在公司中,我们一致都是使用 koa 来作为 node 的底层,对 koa + 各种中间件封装成了一个简易的框架,但是期间遇到了很多不好解决的问题,比如:ctx 的属性如何维护,如何保证框架的扩展性(完全通过中间件扩展框架既臃肿又不容易维护)等等, 所以我自己创建了这个项目,开始了这次开源项目之旅(受 springboot 与 laravel 的启发)。。。 框架设计 基于 TypeScript 开发 为了增加用户开发的体验(代码提示)和框架的代码质量(类型检测),我决定引入 Typescript 作为开发语言,其实第一版开发的时候我还是使用的 babel + es6 的方式开发的,但是经过多次的尝试,最后还是决定使用 Typescript 重构代码,最后结果也是非常完美(在这里我也推荐大家尝试 Typescript) AOP 编程 受 springboot 的启发,在引入装饰器(注解)之后,这种 AOP 的方式给我带来了非常大的体验提升,例如我再也不需要在路由文件将路由指向控制器方法,然后找到控制器文件进行控制器代码的编写

告别 hash 路由,迎接 history 路由

十年热恋 提交于 2020-03-11 23:07:31
博客地址: https://ainyi.com/69 三月来了,春天还会远吗、、 在这里,隆重宣布本博客告别 Vue 传统的 hash 路由,迎接好看而优雅的 history 路由~~ 映照官方说法 vue-router 默认 hash 模式 —— 使用 URL 的 hash 来模拟一个完整的 URL,于是当 URL 改变时,页面不会重新加载 如果不想要很丑的 hash,我们可以用路由的 history 模式,这种模式充分利用 history.pushState API 来完成 URL 跳转而无须重新加载页面 export default new Router({ mode: 'history', routes: [...] )} 当使用 history 模式时,URL 就像正常的 url,例如 https://ainyi.com/about ,好看又优雅! 不过这种模式要玩好,还需要后台配置支持。因为我们的应用是个单页客户端应用,如果后台没有正确的配置,当用户在浏览器直接访问 https://ainyi.com/about 就会返回 404,因为后端没有 /about 相应的拦截器,自然 404 所以,要在服务端增加一个覆盖所有情况的候选资源:如果 URL 匹配不到任何静态资源,则应该返回同一个 index.html 页面,这个页面就是 app 依赖的页面 后端实现

node环境下express路由,

前提是你 提交于 2020-03-11 16:24:00
1.基本路由概念 路由 是指确定应用程序如何响应对特定端点的客户端请求,该请求是URI(或路径)和特定HTTP请求方法(GET,POST等)。 每个路由都可以有一个或多个处理函数,这些函数在路由匹配时执行。 路径定义采用以下结构: app.METHOD(PATH, HANDLER), app 是一个实例 express 。 METHOD 是一个 HTTP请求方法 ,小写。 PATH 是服务器上的路径。 HANDLER 是路由匹配时执行的功能。 2.请求前后台数据接受处理 app这里是一个继承过来的实例express对象 app.get(路径,(req,res)=>{})处理get请求; app.post(路径,(req,res=>{}))处理post请求; post请求的时候接受数据的时候通过 req.body进行接受; get 请求的时候接受数据的时候通过 req.query进行接受; 1、res.json([body]) 发送一个json的响应。这个方法和将一个对象或者一个数组作为参数传递给res.send()方法的效果相同。不过,你可以使用这个方法来转换其他的值到json,例如null,undefined。(虽然这些都是技术上无效的JSON)。 res.json(null); res.json({user:'tobi'}); res.status(500).json(

express的路由(Route)功能

£可爱£侵袭症+ 提交于 2020-03-11 16:23:38
之前: 子模块:var router = express.router(); 使用router.get,router.post设置子路由,主模块引入子模块,并添加到中间件中app.use('/getConfig') ============上篇随笔中有写到 看到其他博客中,这叫做: 路由拆分(设置二级路由)获取动态数据 修改: 子模块:var app = express(); 使用app.use,app.get/post;主模块引入子模块,并添加到主模块的app实例的中间件中app.use('/getConfig') 知识点: 1、中间件:访问到最终目标之前做的事情,可以使用app.use,参考 功能):   1.可以进行权限判断   2.可以对res和req的属性进行扩充   3中间键放在要执行的路径上面   4中间键默认情况下都匹配,可以指定匹配什么开头 使用):在匹配到路由返回数据之前,如果想做一些处理,可以使用中间件 express内部有个map,对于每一种请求方法(get,post...)都有映射,每个都映射到一个 路由对象的数组。 //var app = express(); app.get('/',callback);//callback是一个函数 //map的get属性就会push进一个Route,即使多次对同一个路径进行app.get。当然可以给app