Giter VIP home page Giter VIP logo

blog's People

Contributors

xd-tayde avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

blog's Issues

关于Native向H5发送数据的一点疑问

《Hybrid App技术解析 -- 实战篇》里说:

Native 完成功能后,直接调用 Bridge.postMessage(handler, data),将 执行结果 和 之前 nativeCall 传过来的 标识 回传给 H5;

postMessage函数的关键代码是:

// 这里将data和handler分别从e变量中抽离出来了
const { handler, data} = e;
...
// 仅传入data
fireEvent(evName,data)

第二步是H5创建并触发名为evName的事件,也就是fireEvent

// 核心代码
function fireEvent(evName,data){
    ...
    if(data && eventItem){
        // 这里挂载在eventItem.data上的只有data,而没有handler
        eventItem.data = data
    }
    ...
    if(eventItem){
        win.dispatchEvent(eventItem)
    }
}

最后,我的理解是触发了“(二) H5 --> Native”这一节讲的nativeCall函数中使用的addEvent()方法:

function nativeCall(...){
    ...
    addEvent(handlerKey.e, e => {
        // 这里的handler是???
        const { data, handler } = e.data
        ...
    })
}

简化下中间过程,就发现Native发送的数据/事件与 H5得到的数据/句柄的关系就是:

{ dataH5,handlerH5 } === dataNative
{ dataNative,handlerNative } === eventNative
// 如果下面这个我所理解的相等关系成立的话,那么是否存在`handler`数据冗余的情况?
handlerH5 === handlerNative 

js端如何定义NativeCall

博主你好,我看到你文章中说明了native端如何去调用js的NativeCall,但是在js中如何去声明这个NativeCall呢?

Hybrid App 小建议

方便的话提供一个Mini版-Hybrid App开发环境, 这样比较好的学习(自己动手中, 已实现Swift通信)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.