学习Vue源码3

暴露出Vue src/core/instance/index.js 首先定义了名为Vue的函数 123456789function Vue (options) { // 使用函数调用Vue()来调用Vue时给出错误警告 if (process.env.NODE_ENV !== 'produ...

学习Vue源码2

全局api挂载 src/core/global-api/index.js在Vue上挂载Vue的配置文件、工具、属性,初始化各种全局方法: Vue.util 各种工具函数 Vue.set/delete Vue.nextTick Vue.options initUse(Vue) 挂载Vue.use方法 i...

学习Vue源码1-目录结构与入口文件

学习Vue源码,我拷贝的一份源码在这里,版本为2.6.8,里面有我做的各种注释。(注:暂不考虑SSR部分的代码) 文件结构123456789|--- core |--- components 组件 |--- global-api 需要全局挂载的js都在这个文件夹,在src/core/global-api/in...

使用Less时calc无法正确编译的问题

问题编写Less时使用calc:1width: calc(100% - 30px); 会被编译成:1width: calc(100%); 解决方法写为如下形式可解决:1width: calc(~"100% - 30px"); 如写入变量:123456@a: 30px;width: calc(~...

Vue2数据改变,View却不更新的问题

使用Vue2开发的时候偶尔会遇到,明明data已经更新,View层却没有刷新的问题。 这种情况一般常见于嵌套层级过于复杂的Object中,data确实已经修改,但是由于Vue底层机制,无法监听到data变动,从而不能正确的修改View。 解决方案有以下几种: 使用 Vue.set 或 this.$Set 使用...

笛卡尔积算法

常用在商品SKU上,用于展示每种属性的组合,如: ‘红黄蓝’与‘大小’,可组合为红大、红小、黄大、黄小、蓝大、蓝小。1234567891011121314151617181920function calcDescartes(array) { // 长度小于2 return if (array.le...

微信网页版的消息接受机制

今天无意间使用了一下网页版微信,出于前端的本能就打开了Network,想看一下微信消息接收的实现,想象中的Websocket并没有出现,自己尝试用手机给网页微信发送几条消息,发现网页微信的实现比想象中的要简单很多。 大致原理(长轮询): 1.微信网页端动态创建script,src为’https://webpush...

Vue递归组件

使用Vue开发树状组件的时候需要使用到递归组件,即在模板中调用自己。 要使用递归组件,该组件必须有name属性。 示例:12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152...

Nuxt中的路由权限判断

上个项目小试了下使用Nuxt做多语言官网,这次要做一个多语言商城项目,功能不算复杂,算是一个简化版的商城,涉及到了路由权鉴,这里记录一下。 Nuxt权限拦截分为两种情况,一个是直接请求页面的服务端层面拦截,另一个是在浏览器路由跳转的客户端拦截,这里需要对着两种情况做处理。由于服务端没有window对象,拿不到lo...

本地调试Google-Sign-In

最近要开发的项目需要做谷歌登录的功能 谷歌第三方登录 在阅读文档的时候注意到,要先配置 OAuth client,其中有一项是配置重定向URL且不能是IP。 看到这里就产生了本地开发如何调试获取用户信息的疑惑。 解决方法:使用SwitchHosts工具(可以直接在github搜索,下载对应版本),通过修改本地...