首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

基于 qiankun 的微前端最佳实践(图文并茂) - 应用间通信篇

MicroAppStateActions 实例,我们在需要通信的组件中使用该实例,并注册 观察者 函数,我们这里以登录功能为例,实现如下: // micro-app-main/src/pages/login...({ token }); } } 在上面的代码中,我们在 Vue 组件 的 mounted 生命周期钩子函数注册了一个 观察者 函数,然后定义了一个 login 方法,最后将 login 方法绑定在下图的按钮中...micro-app 从上图中我们可以看出: 第一次点击:原 token 值 undefined, token 值我们最新设置的值; 第二次点击时:原 token 的值是我们上一次设置的值, token...我们在入口文件 main.js 的 render 函数中注入,代码实现如下: // micro-app-vue/src/main.js //... /** * 渲染函数 * 主应用生命周期钩子中运行...我们需要在入口文件处注入 shared,代码实现如下: // micro-app-vue/src/main.js //... /** * 渲染函数 * 主应用生命周期钩子中运行/子应用单独启动时运行

5.1K21

一次完整的源码阅读过程

// 将vuex实例挂载到全局Vue的$store上 ├── store.js // 核心文件,定义了Store类 └── util.js...查看工具函数 首先我个人觉得肯定是要看一下 util.js ,这里面存放的是源码中频繁用到的工具函数,所以我觉得要最先了解一下每个函数的作用是什么 /** * Get the first item that..._wrappedGetters = Object.create(null) // 收集所有模块包装的的getters(包括全局的和命名空间内的,但不允许重复定义) this....:」 register(path, rawModule, runtime):注册的模块,并根据模块的嵌套关系,将模块添加作为对应模块的子模块 path:表示模块嵌套关系。...$store.getters 然后判断是否存在命名空间,即 namespace 是否,若为,则不做任何处理 ; 否则调用 getModuleByNamespace 方法获取到 namespace

2.8K10

上帝视角看Vue源码整体架构+相关源码问答

三答问:created 钩子函数前完成了什么?答:created 钩子函数是在 Vue 壳构建完成,开始初始化实例的响应式数据和方法。...(parsePath 返回的函数) * 2、更新旧值值 * 3、执行实例化 watcher 时传递的第三个参数,比如用户 watcher 的回调函数 */run () { if (this.active...: /src/core/index.js入口// 初始化全局配置和 APIexport function initGlobalAPI (Vue: GlobalAPI) { // 全局配置 config...) // Vue.extend 全局 API:扩展一些公共配置或方法 initExtend(Vue) // Vue.component/directive/filter 全局 API:创造组件实例注册方法...2.暴露一些工具方法,如日志、选项扩展、选项合并、设置对象响应式3.暴露全局初始化方法,如 Vue.set、Vue.delete、Vue.nextTick、Vue.observable4.暴露组件配置注册方法

1.7K10

从未看过源码,到底该如何入手?分享一次完整的源码阅读过程

// 将vuex实例挂载到全局Vue的$store上 ├── store.js // 核心文件,定义了Store类 └── util.js...查看工具函数 首先我个人觉得肯定是要看一下 util.js ,这里面存放的是源码中频繁用到的工具函数,所以我觉得要最先了解一下每个函数的作用是什么 /** * Get the first item that..._wrappedGetters = Object.create(null) // 收集所有模块包装的的getters(包括全局的和命名空间内的,但不允许重复定义) this....: register(path, rawModule, runtime):注册的模块,并根据模块的嵌套关系,将模块添加作为对应模块的子模块 path:表示模块嵌套关系。...$store.getters 然后判断是否存在命名空间,即 namespace 是否,若为,则不做任何处理 ; 否则调用 getModuleByNamespace 方法获取到 namespace

1.7K40

从未看过源码,到底该如何入手?分享一次完整的源码阅读过程

// 将vuex实例挂载到全局Vue的$store上 ├── store.js // 核心文件,定义了Store类 └── util.js...查看工具函数 首先我个人觉得肯定是要看一下 util.js ,这里面存放的是源码中频繁用到的工具函数,所以我觉得要最先了解一下每个函数的作用是什么 /** * Get the first item that..._wrappedGetters = Object.create(null) // 收集所有模块包装的的getters(包括全局的和命名空间内的,但不允许重复定义) this....:」 register(path, rawModule, runtime):注册的模块,并根据模块的嵌套关系,将模块添加作为对应模块的子模块 path:表示模块嵌套关系。...$store.getters 然后判断是否存在命名空间,即 namespace 是否,若为,则不做任何处理 ; 否则调用 getModuleByNamespace 方法获取到 namespace

1.9K10

从未看过源码,到底该如何入手?分享一次完整的源码阅读过程

// 将vuex实例挂载到全局Vue的$store上 ├── store.js // 核心文件,定义了Store类 └── util.js...查看工具函数 首先我个人觉得肯定是要看一下 util.js ,这里面存放的是源码中频繁用到的工具函数,所以我觉得要最先了解一下每个函数的作用是什么 /** * Get the first item that..._wrappedGetters = Object.create(null) // 收集所有模块包装的的getters(包括全局的和命名空间内的,但不允许重复定义) this....: register(path, rawModule, runtime):注册的模块,并根据模块的嵌套关系,将模块添加作为对应模块的子模块 path:表示模块嵌套关系。...$store.getters 然后判断是否存在命名空间,即namespace是否,若为,则不做任何处理 ; 否则调用getModuleByNamespace方法获取到namespace对应的模块

1.4K20

qiankun 实战(二)

跳转主应用 hellotwo 页面 window.history.pushState({}, '', '/hellotwo'); 跳转子应用时遇到的问题 主应用跳转子应用页面,如果控制台提示 app-errors.js...> 主应用与子应用之间互相通信 主应用向子应用传值 主应用使用 qiankun 内置函数 initGlobalState,设置全局变量,通过 setGlobalState 向子应用传递 lang 参数的...props 参数,通过 onGlobalStateChange 函数监听主应用传递过来的值 export async function mount(props) { // 使用 Vue 原型属性...,子应用更新主应用数据触发 console.log(state) }) }, 子应用使用 setGlobalState 更新全局状态数据 // parentStore `mount`...代码实例 运行时,先运行主应用,再运行子应用,主应用默认 8080 端口,子应用默认 8081,主应用中注册的子应用地址 http://localhost:8081 主应用 子应用

1.1K11

Vue—前端框架

-- 通过key全局属性操作,渲染过的分支会建立key对应的缓存,提高下一次渲染速度 --> <!...data声明变量,为了保证复用子组件的数据互不影响,使用函数包裹每个被调用的组件的变量名 4、在根组件中使用子组件名为标签调用子组件,若子组件是局部组件,则需要在根组件中注册过才能调用 -->...-- 1、全局组件也是子组件,必须在根组件之下才能调用 2、所有的跟组件都可以使用全部组件子组件,不需要注册,而局部组件需要注册 3、除此之外,全局组件与局部组件没有差别 -...$emit('自定义的事件名', *args),主动触发,args是回传给回调函数的,可以是子组件的变量,可以是常量 4、事件的回调函数:'回调函数名'(*args){},args子组件内触发该自定义事件...// 安装cookie的命令 // npm install vue-cookie --save // 项目配置全局vue-cookie import VueCookie from 'vue-cookie

7.7K30

最新版教学Vue.js渐进式JavaScript框架

vue.js拥有更小的体积,压缩vue.js就只有33k;vue.js拥有更高的运行效率,vue.js是基于虚拟dom的,虚拟dom是一种可以预先通过JavaScript进行各种计算,把最终的dom...安装 vue.js的安装方式有很多种,第一种:直接使用script标签的方式去引入,vue会被注册一个全局变量。 在开发环境下不要使用压缩版本,否则会失去所有常见错误相关的警告!...文档结构: 运行效果: 数据与方法 每个vue应用都是通过用vue函数创建一个vue实例开始的: 虽然vue没有完全遵守mvvm模型,但是vue的设计也受到了它的启发,所以我们在开发中会经常使用...组件基础 全局注册 局部注册 组件是可复用的vue实例。因为组件是可复用的vue实例,所以他们与New Vue接收相同的选项。 组件注册 组件props属性传值。...组件注册,在注册一个组件的时候,我们需要给它一个名字,比如在全局注册的时候我们需要按照如下代码: 组件名的大小写,定义组件名的方式可以有两种: 使用短横线分隔命名定义一个组件 使用首字母大写命名定义一个组件

4.2K20

跟着来,你也可以手写VueRouter

混入分为全局混入和组件混入,我们直接使用构造函数 Vue.mixin 这种是全局混入,它接收一个对象参数,在这个对象参数里,我们可以写任何 Vue 组件里的东西,然后我们写的这堆东西会被混入(也可以理解合并...install 里我们给此方法添加了一个 installed 属性,当此属性存在且为 true 且 _Vue 已被赋值构造函数 Vue 时 return,代表已经注册过该插件,无需重复注册。..._router,也在 Vue 原型上添加了 // 全局注册组件router-view Vue.component('RouterView', {}); // 全局注册组件router-link Vue.component...('RouterLink', {}); 这块暂时比较简单,使用 Vue.component 全局注册了两个组件,配置对象都直接。..._hasHookEvent 会被置 true,当使用 callHook 调用生命周期函数时,由于 _hasHookEvent true,会直接执行 emit('hook:xxx'),所以注册的生命周期函数就会执行

1.5K40

Vue】day03-VueCli(脚手架)

4.综合案例-小兔仙首页 拆分模块-局部注册 结构样式完善 拆分组件 – 全局注册 二、Vue生命周期 思考:什么时候可以发送初始化渲染请求?...,对输入的内容做非判断,发送请求 请求成功,对文本框内容进行清空 重新渲染列表 3.删除功能 注册点击事件,获取当前行的id 根据id发送删除请求 需要重新渲染 4...B组件使用吗 局部注册组件的步骤是什么 使用组件时 应该按照什么命名法 十一、普通组件的注册使用-全局注册 1.特点: 全局注册的组件,在项目的任何组件中都能使用 2.步骤 创建.vue...语法 Vue.component('组件名', 组件对象) 例: // 导入需要全局注册的组件 import HmButton from '....已准备好) 拆分封装通用小组件 (局部或全局注册) 将来 → 通过 js 动态渲染,实现功能

20730
领券