首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用 Emacs 收听 elfeed 中播客

Elfeed[1] 是 Emacs 中一个非常好用 RSS 客户端,之前笔者也写过相关文章[2]进行介绍,强烈建议读者尝试一下跨平台 RSS 客户端。...对于播客,主要分发形式就是基于 RSS,所以用 elfeed 来听是在自然不过事情,只需要一个支持命令行启动音乐播放器即可,常见有:vlc[3]、mpv[4],而且它们都支持直接播放网络流,这样我们就省去了下载音频文件步骤...entry"))) (provide 'elcast) https://github.com/jiacai2050/blog-snippets/blob/main/elcast.el 由于笔者一直使用是...vlc,而且它支持 socks 代理(mpv 只支持 http 代理[6]),因此这里给出使用 vlc 时相关配置: (use-package elcast :load-path...elcast-player-params '("--socks" "127.0.0.1:1080" "--verbose" "2" "--no-color"))) 以后,在 *elfeed-entry* 中浏览某个播客时,可以直接使用

18810
您找到你想要的搜索结果了吗?
是的
没有找到

VueJs中customRef函数使用

前言 ref是Vue官方提供componsition API,将一个非响应式数据转变为响应式数据函数,至于底层怎么实现数据收集与响应式 使用者无需去关注,相当于就是精装电脑,然而有时候,针对一些复杂特殊需求...,我们需要自己造轮子,自己手动原生去实现内部结构 实现基础功能同时,还要进行额外拓展,那么这时候就需要自定义ref了,它就相当于是组装式电脑,内部结构需要自己去组装,实现 而非直接从商城里购买...,用一些现成零部件组装一个类似精装电脑,甚至还可以进行拓展,在实现一个定制化复杂功能需求时 这个自定义ref就很有用 示例-延迟展示 想要在input中实现一个数据实时收集与实时展示,需要使用v-model...()方法中返回值前进行调用,追踪一下数据改变,通知vue最终数据变化,而trigger()函数则应该在set()函数末尾调用 通知vue去重新解析模板,更新页面数据 最后就是实现等待多长时间,稍后显示...,使用一个定时器去实现,解决频繁误触发问题,常规解决办法,先清除定时器,然后在开启定时器 总结 自定义ref(customRef())函数是一个非常有用东西,相当于是对ref一个功能拓展,自己手动去实现

98230

令人惊叹前端路由原理解析和实现方式

下面分别使用 hash 和 history 两种实现方式回答上面的两个核心问题。...原生JS版前端路由实现 基于上节讨论两种实现方式,分别实现 hash 版本和 history 版本路由,示例使用原生 HTML/JS 实现,不依赖任何框架。...()   // 拦截  标签点击事件默认行为, 点击时使用 pushState 修改 URL并更新手动 UI,从而实现点击链接更新 URL 和 UI 效果。   ...();         }}       />     )}    ); Vue 版本前端路由实现 基于 hash 实现 运行效果: 使用方式和 vue-router...类似(vue-router 通过插件机制注入路由,但是这样隐藏了实现细节,为了保持代码直观,这里没有使用 Vue 插件封装):                     <router-link

1.6K30

VueJsshallowRef与shallowReactive使用比较

01 shallowRef()函数 如果传入基本数据类型,那么shallowRef与ref作用基本没有什么区别,也就是浅层ref内部值将会原样存储和暴露,并不会被深层递归地转为响应式 但如果是对象的话...,那么就存在区别了,shallowRef不处理对象类型数据 其实,它就是只处理基本数据类型响应式,不进行对象响应式处理 性能优化,应用场景:如果有一个对象数据,后续功能不会修改该对象中属性,而是生对象来替换...,也就是只处理第一层对象数据,在往下嵌套数据,操作数据是不起作用 只考虑对象第一层数据响应式,在第一层嵌套下数据不考虑 与reactive()不同,没有深层及转换,一个浅层响应式对象里只有根级别的属性是响应式...,属性值会被原样存储和暴露,这意味着值为ref属性不会被自动解构 性能优化:具体应用场景: 如果有一个对象数据,数据结构比较深,复杂,但变化时只需要外层属性变化,那么就可以使用shallowReactive...与shallowRef在某些特殊应用场景下,是可以提升性能,前者针对对象,用于浅层作用响应式数据处理,而后者只处理基本数据类型响应式,不进行对象响应式处理

1.1K30

vue深度作用选择器

rel="noopener">vue-router <a href="https://vuex.<em>vuejs</em>.org" target="_blank" rel="noopener...如果我们在外面的页面上引用这个组件,可以看到css选择器被转换了 如果我们在外面页面上想改子组件里元素<em>的</em>样式 <em>使用</em>全局style标签(就是<em>不带</em>scoped属性<em>的</em>标签,会作用于所有页面)还好,但如果我们只想作用于当前页面或组件...,<em>使用</em>了scoped属性 这时候可以看到我们除了根节点class生效,其他<em>的</em>都没有生效 如果我们想要让它生效,则可以<em>使用</em> >>> 操作符 有些像 Sass 之类<em>的</em>预处理器无法正确解析 >>>。...这种情况下你可以<em>使用</em> /deep/ 操作符取而代之——这是一个 >>> <em>的</em>别名,同样可以正常工作 例如: 当然大家注意到我这里还有个<em>使用</em>v-html渲染<em>的</em>标签 其中<em>的</em>富文本是一个带class<em>的</em>标签,我们在外面<em>使用</em>对应<em>的</em>...class选择器失效了,此处我们也可以<em>使用</em>>>>操作符去让v-html渲染<em>的</em>标签里<em>的</em>元素样式得到准确<em>的</em>变更 这是vue-loader官方文档中学到<em>的</em>内容,我们在<em>使用</em>vue-cli创建项目时默认就安装了它

81010

vue-router 基本使用和路由守卫

客户端路由有两种实现方式:基于hash 和基于html5 history api. vue-router路由也是基于上面的内容来实现 在vue中实现路由还是相对简单。...1, 页面实现(html模版中) 在vue-router中, 我们看到它定义了两个标签 和来对应点击和显示部分。就是定义页面中点击部分,定义显示部分,就是点击后,区配内容显示在什么地方。...因为在组件中是可以显示不同部分,就是上面提到“你名字”。其实,当整个vue-router 注入到根实例后,在组件内部,可以通过this.$route来获取到 router 实例。..., 在router-link 中to属性就可以使用对象了 //和下面等价 User123 // 当使用对象作为路由时候,to前面要加一个冒号,表示绑定 User 编程式导航:这主要应用到按钮点击上...$router可以获取到router, 所以在组件中使用 this.

3K20

Vue-Router, 路由独享守卫使用 beforeRouteLeave

一些需求都可以通过阅读文档来解决,简单说下 组件内守卫 使用时 next() 方法使用问题 官方文档 https://router.vuejs.org/zh/guide/advanced/navigation-guards.html...a 页面 b 页面 当从a页面 进入 b页面时, b页面做了一些操作, 在b页面判断离开时, //使用组件内守卫,对离开页面事件做一些操作, beforeRouteLeave(to, from, next...next({replace: true,redirect: '/a'}); //目标路由 重定向 }else { next() } } 为什么不直接用 next(’/a’) 从打印出...to.path 可以看到 当前路由离开进入下一个路由 已经 是 【/a】 如果这时我们 用next('/a') 则会陷入 栈溢出 无限循环尴尬, 所以采用next({replace: true,redirect...: '/a'}); // 对目标路由进行重定向方式在跳转到目标路由 当然 如果要跳转路由不是 to.path 中 path 路径 是可以直接 使用next(‘/n’)使用beforeRouteLeave

5.6K40

vueJs中toRaw与markRaw函数使用比较

这是一个可以用临时读取而不引起代理访问/跟踪开销,或是写入而不触发更改特殊方法,在官方文档里,是不建议保存对原始对象持久引用 使用场景:用于读取响应式对象普通对象,对这个普通对象所有操作,不会引起页面的更新...,如果没有把整个对象对外暴露出去,模板中使用新增变量是不生效(针对setup函数形式) 02 markRaw()函数 接收一个原始数据,标记一个对象,使它永远不会再成为响应式对象,也就是数据在逻辑中即使修改变化了.../只读转换,并在状态关系谱中嵌入原始,非代理对象 如果把一个嵌套,没有标记原始对象设置成一个响应式对象,然后再次访问它,你获取到是代理版本,这可能会导致对象身份风险 即执行一个依赖于对象身份操作...,但却同时使用了同一对象原始版本和代理版本 const foo = markRaw({ nested: {} }) const bar = reactive({ // 尽管 `foo` 被标记为了原始对象...,将一个响应式数据变为非响应式数据 而toRaw只针对响应式对象类型数据起作用,如果涉及到将一个响应式数据转变为非响应式数据,只用于纯数据渲染,不引起页面的更新,就可以使用toRaw或markRaw

1.2K10

vueJs中readonly与shallowReadonly函数使用比较

01 readonly()函数 让一个响应式数据变为只读,接收一个响应式数据,经过readonly加工处理一下,那么新赋值数据都不允许修改 接受一个对象 (不论是响应式还是普通) 或是一个 ref...,返回一个原值只读代理 页面没有更新有两种情况 [1]....02 shallowReadonly()函数 接收一个响应式数据,经过shallowreadonly处理,变成一个只读,只考虑对象第一层数据,不可以修改,但是第一层嵌套里深层数据却支持修改 让一个响应式数据变为只读能力...+ 总结 readonly与shallowReadonly都是让响应式数据只具备读能力,后者是浅层次只读,也就是只对数据对象第一层起作用,深层次嵌套,当时用shallowReadonl()处理时...,深层次数据支持被修改 在不希望数据被修改,或当数据是从别的地方取过来,不希望影响源数据时,使用readonly()或shallowReadonly()就很有用 至于数据能不能修改是由写代码开发者决定

88420

墨瞳漫画h5一期 vuejs总结

前言 博主也是vuejs萌新,公司仅我一个前端,收到做h5需求后,马上想到要用下vuejs,于是说服领导,开始慢慢钻研,现在记录一下踩到坑。...这些坑主要是在一些组件使用上,其它只要好好看官方文档就好了,vue,vue-router, vuex文档相当重要。...欢迎体验提bug 墨瞳漫画 m.cm233.com vue-router router这里踩坑主要是组件重用。...第二个坑就是关于缓存页面浏览位置纪录,router是通过html5 historypushState来纪录当前滚动位置,切换路由时候,把当前位置push进去,用户后退时,会触发onpopstate...某些浏览器本身也设置了一些奇怪位置滚动,vue-router滚动就失效了,所以需要延迟执行一下 window.addEventListener("popstate",function(e){

1.1K10

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券