HOME 首页
SERVICE 服务产品
XINMEITI 新媒体代运营
CASE 服务案例
NEWS 热点资讯
ABOUT 关于我们
CONTACT 联系我们
创意岭
让品牌有温度、有情感
专注品牌策划15年

    响应式开发的原理(响应式开发的原理有哪些)

    发布时间:2023-04-26 05:46:28     稿源: 创意岭    阅读: 548        

    大家好!今天让创意岭的小编来大家介绍下关于响应式开发的原理的问题,以下是小编对此问题的归纳整理,让我们一起来看看吧。qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    创意岭作为行业内优秀企业,服务客户遍布全国,相关业务请拨打175-8598-2043,或微信:1454722008qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    本文目录:qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    响应式开发的原理(响应式开发的原理有哪些)

    一、vue第八节qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    Vuex是vue官方的一款状态管理工具,什么是状态呢?我们在前端开发中有一个概念:数据驱动,页面中任意的显示不同,都应该有一条数据来控制,而这条数据又叫做state,状态。qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    在vue中。组件间进行数据传递、通信很频繁,而父子组件和非父子组件的通信功能也比较完善,但是,唯一困难的就是多组件间的数据共享,这个问题由vuex来处理qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    vue提供的一个全局的状态管理工具,主要处理项目中多组件间状态共享qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    因为在组件中可以通过this. store.state来使用state中管理的数据qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    但是我们发现,这样使用的话,当state的数据更改的时候,vue组件并不会重新渲染qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    也就是说,如果想要在组件中响应式的使用的时候,我们需要通过计算属性(computed)来使用qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    这样的写法很无趣,而且如果使用的状态较多会产生冗余的感觉,所以vuex提供了mapState辅助函数,帮助我们在组件中获取并使用vuex的store中保存的状态qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    所以我们可以这样写:qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    但是如果组件中已经有了num这个数据了,而state中的数据名字也叫num就会照成冲突,这个时候我们可以在组件使用state的时候,给状态起个别名:qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    但是,有的时候我们在组件中还有自己的业务逻辑需要用到计算属性:qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    有的时候,我们需要根据state中的某一个状态派生出一个新的状态,例如,我们state中有一个num,在某些组件中需要用到是num的二倍的一个状态,我们就可以通过getters来创建qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    创建了之后,在组件中通过this.$store.getters.doubleNum来获取里面的数据qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    当然vuex也提供了mapGetters辅助函数来帮助我们在组件中使用getters里的状态,且,使用的方法和mapState一模一样qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    我们不能直接在组件中更改state:this.$store.state.num=2,而是需要使用mutations来更改,mutations也是一个纯对象,里面包含很多更改state 的方法,这些方法的形参接收到state,在函数体里更改,这时,组件用到的数据也会更改,实现响应式。qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    但是我们也不能直接调用mutations 的方法,需要使用this.$store.commit来调用,第一个参数为调用的方法名,第二げ参数为传递参数qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    vuex提供了mapMutations方法来帮助我们在组件中调用mutations 的方法,使用方法和mapState、mapGetters一样qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    Action 类似于 mutation,不同在于:qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    Action 提交的是 mutation,而不是直接变更状态。qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    Action 可以包含任意异步操作。qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    也就是说,如果有这样的需求:在一个异步处理之后,更改状态,我们在组件中应该先调用actions,来进行异步动作,然后由actions调用mutation来更改数据qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    如上,actions的方法中可以进行异步的动作,且形参会接收store,从中取出commit方法用以调用mutations的方法qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    在组件中通过this.$store.dispatch方法调用actions的方法qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    当然也可以使用mapMutations来辅助使用qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    组件使用数据且通过异步动作更改数据的一系列事情:qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    1.生成store,设置stateqAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    2.在根实例中注入storeqAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    3.组件通过计算属性或者mapState来使用状态qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    4.用户产生操作,调用actions的方法,然后进行异步动作qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    5.异步动作之后,通过commit调用mutations的方法qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    6.mutations方法被调用后,更改stateqAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    7.state中的数据更新之后,计算属性重新执行来更改在页面中使用的状态qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    8.组件状态被更改...创建新的虚拟dom......qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    9.组件的模板更新之后重新渲染在dom中qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    vuex的使用:qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    目前市场上有两种使用vuex的情况,qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    第一种:将需要共享、需要管理的状态放入vuex中管理,也就是说在必要时使用qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    第二种:将所有的数据都交由vuex管理,由vuex来承担更多的责任,组件变得更轻量级,视图层更轻qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    在实现回到顶部功能的时候,我们写了一个backTop组件,接下来需要通过监听window.scroll事件来控制这个组件显示隐藏qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    写了一个v-back-top指令,就是将回到顶部功能做成一个指令,哪个组件或者dom需要使用到回到顶部,就加上这个指令就可以,设置不同的参数来控制在不同的情况下触发qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    组件库就是通用组件的集合qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    pc:element-ui iviewqAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    mobile: mint-uiqAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    当我们在使用一些插件的时候,经常需要在dom更新完成后进行必要操作,但是在vue中提供的api只有updated钩子函数,而在这个函数里,任意数据的变化导致的dom更新完成都会触发,所以很可能会造成无关数据的影响,而使用监听的话只能监听到数据的变化,此时dom还没有更新,我们只能强行使用setTimeout来处理qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    这里推荐大家使用nextTick全局方法:qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    在下次 DOM 更新循环结束之后执行延迟回调。在修改数据之后立即使用这个方法,获取更新后的 DOM。qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    v-for='n in 10' n会打印1-10qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    通用:beforeCreate/created/beforeMount/mounted/beforeUpdate/updated/beforeDestroy/destroyedqAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    路由守卫:beforeRouteEnter/beforeRouteUpdate (2.2 新增)/beforeRouteLeaveqAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    v-if是真正的条件渲染,会确保在切换中条件块内的事件监听、子组件都会适当的被销毁和重建qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    v-show总是将节点渲染在dom中,只是基于css:display来控制节点的显示和隐藏qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    v-if有更高的切换开始,v-show有更高的初始渲染开销qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    v-if是惰性的,初始条件为假,就不会渲染qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    axios请求的时候不会带上cookie,不会影响带宽,可以通过withCredentials:true来设置qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    对axios 的请求头进行设置:qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    axios.defaults.headers = {'Content-Type':'...'}qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    vue2.0不在更新维护vue-resource,官方推荐使用axiosqAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    6.为了让组件可以组合,我们需要一种方式来混合父组件的内容与子组件自己的模板。这个过程被称为内容分发 (即 Angular 用户熟知的“transclusion”)。Vue.js 实现了一个内容分发 API,参照了当前 Web Components 规范草案,使用特殊的 <slot> 元素作为原始内容的插槽。qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    全局:Vue.component(name,Vue.extend({}))qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    局部:{ components:{name:Vue.extend({})} }qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    假设我们有一个数据为num,还希望拥有一个数据为doublenum,而且希望doublenum的值永远都是num的二倍qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    方法:qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    prop是单向绑定的,父组件属性变化,传递给子组件,但是,子组件数据变化,不能直接传递给父组件,也就是数据的流行是从父组件流向子组件的,为了防止子组件修改父组件的数据(会让应用的数据流变的更难开发、更新、维护)qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    使用了vuex工具的时候,store中数据在组件中使用的过程也是单向数据流,state->vue component->actions->mutations->state->vue componentqAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    当数据改变之后,vue会创建新的虚拟dom来和原来的虚拟dom做对比,在创建新的虚拟的dom的时候,会根据key来查找在原来的虚拟dom中有没有某个部分,如果原来的有,这次的也需要,就会实现复用,而且在做diff对比的时候,如果有key会加快对比的查找速度,提高性能qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    尽量循环的时候不要将key设置为数组的索引,因为当删除某一个元素的时候,就会导致删除位置下面的所有元素的key值都与上一次虚拟dom的key值不同,导致复用失败,这个时候我们最好使用关键的唯一的,例如id这样的数据作为keyqAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    如果数据变化只是值的变化而不是条数和位置的变化,可以使用索引作为keyqAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    Vue.use会查找插件对象里的install方法去执行,并且给install方法里传入Vue对象qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    很多情况下,一个应用会有PC和移动端两个版本,而这两个版本因为差别大,内容多,所以不能用响应式开发但是单独开发,而域名只有一个,用户进入域后直接返回对应设备的应用,做法主要有两种: qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    二、Android真的推荐用MVI模式?MVI和MVVM有什么区别?qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    android自己卷自己,自己造一个MVI架构模式吗? qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    MVI架构模式是国内android开发者最近一两年造出来的吗? qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    看了很多MVI的资料,发现都提到cycle.js框架。android的mvi架构就是启发于cycle.js框架。 qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    我们再看看Cycle.js框架是什么时候开始的,又是什么时候开始使用MVI模式的。 qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    Cycle.js框架 第一个预发版本 qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    https://github.com/cyclejs/cyclejs/releases?page=6 qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    再结合官方文档来看,Cycle.js框架就是为了MVI架构模式而生的。 qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    虽然不知道,Cycle.js框架是不是首个MVI模式框架。 qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    但是从很多资料可以推测,MVI架构模式就是Cycle.js框架推广开来的。 qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    而且早在2014年就已经在前端开发中用得飞起了。 qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    想想2014年,咱们在干嘛?android在用什么架构模式。 qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    正所谓,天下武功出少林啊。 qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    我们android的很多技术,在前端早就用“烂了”。 qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    我们知道MVP和MVVM的爹都是MVC。MVI的爹也是MVC。 qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    MVC的Controller是命令是编程组件,不能直接实现响应式编程思想。 qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    响应式编程范式(Reactive programming): qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    安卓官方的compose框架、微信小程序、Flutter、React、鸿蒙UI的开发框架,都是使用响应式开发框架。 qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    这里就不拓展开来讲了,上面提到的任何一个开发框架,你只要会一个基本就能理解响应式编程范式。 qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    如果一个都不会也没关系,现在不理解响应式编程也没关系,等你学会MVI就理解了,这种只有实际使用过才能深刻理解。 qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    学不会也没关系,不要焦虑(尤其那些工作不久的小伙伴,学不会属于正常现象~) qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    MVI,咱第一遍学不会,就等2年,再学一遍~ qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    2年后也没学会,那就再等2年~ 一定要有耐心~ qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    如果还是学不会,那也没关系,因为MVI早晚也会过时~ 等过时了就不用学了~ qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    哈哈哈~ 别笑,正经Android可不会开玩笑的。 qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    就像rxjava,当年有多少人死活学不会,android开发现在谁还学Rxjava?哈哈哈~ qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    用一张图来总结这次升级的核心思想: qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    新版架构指南在旧版的基础上,做了如下调整和建议: qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    1. 将LiveData组件改成了StateFlowqAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    对协程的使用更友好。并且更能体现面向数据流开发的思想。qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    实际上,依然使用LiveData也没毛病。qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    2. ViewModel传递给View的数据限制为View的UIStateqAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    ViewModel从Model层获取数据后,转换为UIState数据,通过StateFlow流向View层。qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    UIState的数据面向界面组件而定义的,是能直接控制View组件如何显示的数据。qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    所以我们也可以称UIState为界面的状态或者View的状态。qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    如下:qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    3. 单数据流还是多数据流的选择qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    官方指南并没有强制我们使用单流。qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    同一个界面应该使用单个StateFlow还是多个StateFlow,需要我们自己判断。qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    我们应该根据UIStates数据们之间关联程度来决定多流还是单流。qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    单流优缺点都十分明显:qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    优点: 数据集中管控,会提高代码的可读性和修改的便利性。qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    缺点: 当数据非常多且复杂时,会影响效率。因为我们没有diff功能,View层不能只更新有变化的数据,只会根据UIState刷新当前界面。qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    https://developer.android.com/jetpack/guide/ui-layer#additional-considerationsqAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    我们再看下官方新版架构图: qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    当然不仅仅MVVM可以改造成响应式开发范式,MVP也是可以的。 qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    不信你看 这篇blog qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    https://www.raywenderlich.com/817602-mvi-architecture-for-android-tutorial-getting-started qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    1. 理解MVC架构模式的思想【MVC是其他架构模式之爹,他的思想是MVP、MVVM、MVI的基础,学会它是关键步骤~】。 qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    3. 学习kotlin的StateFlow组件,的使用:Sequence->Flow->StateFlow。 qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    4. 学习ViewModel组件的使用(虽然不用ViewModel也能实现MVI架构,但是ViewModel还是值得学习)。 qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    5. 理解DRY(Don't Repeat Yourself)原则。 qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    6. 理解MVVM(因为官方的MVI模式是基于MVVM的基础改造的~)。 qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    7. 学习官方架构指南。 qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    8. 实战。 qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    在这里就分享一份由大佬亲自收录整理的 学习PDF+架构视频+面试文档+源码笔记 高级架构技术进阶脑图、Android开发面试专题资料,高级进阶架构资料 qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    这些都是我现在闲暇时还会反复翻阅的精品资料。里面对近几年的大厂面试高频知识点都有详细的讲解。相信可以有效地帮助大家掌握知识、理解原理,帮助大家在未来取得一份不错的答卷。qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    当然,你也可以拿去查漏补缺,提升自身的竞争力。qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    真心希望可以帮助到大家,Android路漫漫,共勉!qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    如果你有需要的话,只需 私信我【进阶】即可获取 qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    三、响应式开发技术应用机房考还是出试卷qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    响应式开发技术应用机房考。根据查询相关资料信息,响应式布局是在屏幕尺寸发生变化时,APP的页面、组件按照规则进行动态自适应,实现一套代码兼容多尺寸终端设备,在机房考。 qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    四、如何快速开发html5响应式网页qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    步骤1 创建空白的HTML 5模版 qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    首先,我们创建一个空白的模版,代码很简单,如下所示:qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    复制代码qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    步骤2 增加HTML 5新标签 HTML 5中新增加了不少标签,如:qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    article, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, sectionqAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    在页面模版中,我们需要确保每个区域都能正确地对齐,因此需要使用HEADER、 NAVIGATION、 CONTENT、 SIDEBAR和Footer这些标签。代码如下所示:qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    复制代码qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    读者可能留意到这里使用的div id=”wrapper”,这个是稍候用来做meida query的时候调整全局CSS样式调整用的 步骤3 往HTML 5标签中增加代码 qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    1)首先往标题中增加如下代码:qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

     Simple HTML5 Template qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    复制代码qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    2)往导航标签中添加如下代码,这样很方便地构件了一个简单的页面分类导航:qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    Home About Parent Page ChildqAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    One Child Two with child Child One Child qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    Two Child Three Child Three qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    Contact qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    复制代码qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    3)使用标签来描述每一个要展示的内容实体,比如要展示的是多篇文章列表,其中的每一篇文章的具体内容就可以使用标签了。如下代码所示:qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    This is a title for post qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    Richard KS 20th March 2013 Tutorials HTML5, CSS3 qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    and Responsive 10 Comments Lorem qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    Ipsum is simply dummy text of the printing and typesetting industry. qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    Lorem Ipsum has been the industry's standard dummy text ever since the qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    1500s qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    复制代码qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    4)添加标签 HTML5提供的元素标签用来表示当前页面或文章的附属信息部分,可以包含与当前页面或主要内容相关的引用、侧边栏、广告、nav元素组,以及其他类似的有别与主要内容的部分。qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    根据目前的规范,元素有两种使用方法:qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    被包含在中作为主要内容的附属信息部分,其中的内容可以是与当前文章有关的引用、词汇列表等。qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    在之外使用,作为页面或站点全局的附属信息部分;最典型的形式是侧边栏(sidebar),其中的内容可以是友情链接、附属导航或广告单元等。 qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    代码如下:qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    Categories Category 1 Category 2 qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    Parent Category Child One Child Two qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    Grandchild One Grandchild Two Grandchild Three qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    Child Three Category 3 qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    Text Lorem Ipsum is simply dummyqAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    text of the printing and typesetting industry. qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    复制代码qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    5)加上最后的标签,代码为:qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    Copyright@ 2013 HTML5.com Privacy Policy - About UsqAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    复制代码qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    步骤4 增加CSS样式 qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    首先创建一个空白的样式,如下:qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    [/code] 然后在http://necolas.github.com/normalize.css/中下载这个css,然后将其内容复制到该空白的文件中代码如下: [code]body {qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    font-family: arial, sans-serif;qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    font-size: 100%; /* best for all browser using em */qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    padding:0;qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    margin:0;qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    }qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    *, html { line-height: 1.6em; }qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    article img { width:auto; max-width:100%; height:auto; }qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    .sidebar a, article a, header a, footer a { color: #C30; }qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    header a { text-decoration: none; }qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    #wrapper {qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    font-size: 0.8em; /* 13px from 100% global font-size */qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    max-width: 960px; /* standard 1024px wide */qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    margin: 0 auto;qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    }qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    /* css for */qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    header { padding: 1em 0; margin: 0px; float: left; width: 100%;qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    }qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    header hgroup { width: 100%; font-weight:normal; }qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    /* css for */qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    navqAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    { display: block; margin: 0 0 2em; padding: 0px; qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    float: left; width: 100%; background-color: #181919;qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    }qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    nav ul ul {display: none;}qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    nav ul li:hover > ul {display: block;}qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    navqAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    ul { padding: 0; list-style: none; position: qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    relative; display: inline-table; z-index: 9999; qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    margin: 0px; float: left; width: 100%;qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    }qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    nav ul:after {content: ""; clear: both; display: block;}qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    nav ul li {float: left;}qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    nav ul li:hover a {color: #fff;}qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    navqAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    ul li a { display: block; padding: 1em; font-size:qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    1.125em; color: #ccc; text-decoration: none; qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    margin: 0px; background-color: #000; border-right: 1px qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    solid #333;qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    }qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    nav ul li:last-of-type a {border-right: 1px solid transparent !important;}qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    navqAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    ul ul { background: #5f6975; border-radius: 0px; qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    padding: 0; position: absolute; top: 100%; width: qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    auto; float: none;qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    }qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    nav ul li:hover { background: #5f6975; color: #FFF;qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    }qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    nav ul ul li a:hover { background-color: #4b545f;qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    }qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    nav ul ul li {qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    float: none;qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    border-bottom: 1px solid #444240;qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    position: relative;qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    }qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    nav ul ul li a {qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    padding: 0.5em 1em;qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    font-size: 1em;qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    width:10em;qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    color: #fff;qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    }qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    nav ul ul ul {qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    position: absolute; left: 100%; top:0;qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    }qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    /* css for */qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    section.content { width: 70%; float:left; }qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    .content article { width:100%; float:left; padding: 0 0 1em; margin: 0 0 1em; border-bottom: 1px solid #ddd; }qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    article .entry { clear:both; padding: 0 0 1em; }qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    h1.post-title { font-size: 1.8em; margin:0; padding:0;}qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    .entry.post-meta { color: #888; }qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    .entry.post-meta span { padding: 0 1em 0 0; }qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    .entry.post-content { font-size: 1.125em; margin:0; padding:0;}qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    /* css for */qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    aside.sidebar { width: 25%; float:right; }qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    aside.sidebar ul { width:100%; margin: 0px; padding: 0px; float: left; list-style: none;qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    }qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    aside.sidebarqAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    ul li { width:100%; margin: 0px 0px 2em; padding: qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    0px; float: left; list-style: none;qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    }qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    aside.sidebar ul li ul li { margin: 0px 0px 0.2em; padding: 0px;qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    }qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    aside.sidebarqAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    ul li ul li ul li { margin: 0px; padding: 0px 0px 0px qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    1em; width: 90%; font-size: 0.9em;qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    }qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    aside.sidebarqAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    ul li h4.widget-title { width:100%; margin: 0px; qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    padding: 0px; float: left; font-size: 1.45em;qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    }qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    /* css for */qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    footer { width: 98%; float:left; padding: 1%; background-color: white; margin-top: 2em;qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    }qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    footer .footer-left { width: 45%; float:left; text-align:left; }qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    footer .footer-right { width: 45%; float:right; text-align:right; }qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    复制代码qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    步骤5 为移动应用使用@media query查询 为了进行响应式设计,最佳的方案是使用@media query去进行查询,在上面的CSS代码中添加如下代码:qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    /* ipad 768px */qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    @media only screen and (min-width:470px) and (max-width:770px){qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    body { background-color: red; } #wrapper { width:96%; font-size: 0.6875em; }qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    section.content, aside.sidebar { width:100%; }qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    }qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    /* iphone 468px */qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    @media only screen and (min-width:270px) and (max-width:470px){qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    body { background-color: yellow; } #wrapper { width:96%; font-size: 0.6875em; }qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    section.content, aside.sidebar { width:100%; }qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    }qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    复制代码qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    步骤6 增加jquery,modernizer和html5shiv到标签中 这里推荐使用Modernizr 和html5shiv,它们都是一个能在多种浏览器中通过运行各种脚本兼容运行支持大部分HTML 5标签的插件。我们将它们和jQuery库放在标签前,代码如下:qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    0qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    复制代码 qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司

    以上就是关于响应式开发的原理相关问题的回答。希望能帮到你,如有更多相关问题,您也可以联系我们的客服进行咨询,客服也会为您讲解更多精彩的知识和内容。qAS创意岭 - 安心托付、值得信赖的品牌设计、营销策划公司


    推荐阅读:

    响应式网页设计和自适应网页区别(响应式网页设计和自适应网页区别是什么)

    什么是响应式网页

    广西企业响应式网站建设价位(响应式企业网站模板)

    视频号怎么导出链接(视频号怎么导出链接图片)

    世界上十大排名足球门将(世界上十大排名足球门将有哪些)