GithubHelp home page GithubHelp logo

jd-opensource / jdhybrid Goto Github PK

View Code? Open in Web Editor NEW
169.0 10.0 28.0 3.61 MB

针对WebView开发的工具集,包括WebView基础能力、性能优化能力等,后续将逐步开源

License: MIT License

JavaScript 6.96% HTML 43.43% Ruby 0.27% Kotlin 19.56% Objective-C 29.57% C 0.11% CSS 0.11%
hybrid hybrid-apps jsbridge jsbridge-webview webview webviewjavascriptbridge wkwebview

jdhybrid's Introduction

简介

JDHybrid是一个移动端高性能Hybrid容器框架,致力于提升h5加载与渲染性能、WebView容器标准化,项目经过了亿级PV的业务验证, 项目主要包括:
  • jsbridge --- JDBridge
  • 集成各种开源能力的WebView容器 --- JDWebView
  • 离线包加载框架 --- JDCache
  • iOS同层渲染 --- JDWidget(正在路上...)

快速入门指南

使用JSBridge

JSBridge(JDBridge) 包含jssdk部分与客户端部分,使用时js先引入JSSDK(见下文), 并添加js插件供native调用,或通过jssdk api调用native插件,使用方式参考:

使用WebView容器

JDHybrid 提供了支持JDBridge的容器,未来还会支持离线加载能力,可直接使用

使用JDCache

更多使用方式

  • h5 Demo 进入H5/JDBridge/Example下执行 npm install && npm run build , 打开 dist 文件夹内的html即可, 客户端试用下面Demo前也请先安装h5 demo,我们会自动copy产物到Example内
  • iOS Demo 进入iOS/Example文件夹,执行 pod install
  • Android Demo 进入android文件夹,执行./gradlew installDebug

Contributing

我们欢迎您能为JDHybrid做出贡献帮助它变得更好!我们鼓励并重视所有类型的贡献。如果你有任何问题,请随时在我们的讨论区开启一个新的讨论主题。 如果您有webview方面的诉求,也可以提出需求。

License

JDHybrid(包括子项目) 基于MIT协议开源,具体查看 LICENSE 文件了解更多信息.

Contact

邮箱: [email protected]

jdhybrid's People

Contributors

baoyangzhou avatar huangturen avatar kylelyk12 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

jdhybrid's Issues

为什么H5的callback只会传递给App一次,再点按钮就不触发回调了?

function addSyncJsPlugin() {
    showLog('Add JS plugin \'MySyncJsPlugin\', so native can call.')
    JDBridge.registerPlugin('MySyncJsPlugin', function (params) {
        showLog('MySyncJsPlugin invoked by native, params = ' + JSON.stringify(params))
        return 'MySyncJsPlugin returns ' + JSON.stringify(params)
    })
}

function addAsyncJsPlugin() {
    showLog('Add JS plugin \'MyAsyncJsPlugin\', so native can call.')
    JDBridge.registerPlugin('MyAsyncJsPlugin', function (params, callback) {
        showLog('MyAsyncJsPlugin invoked by native, params = ' + JSON.stringify(params))
        callback('MyAsyncJsPlugin returns ' + JSON.stringify(params))
    })
}

iOS JDCache中 formdata上传问题疑问

截屏2023-04-13 14 58 25
在使用JDCache中,post请求上传blob数据,hook后由native处理,这里的url遇到图中这种需要拼接的时候,代码中是webView.URL.absoluteString去除query,然后拼接上params中传过来的url,我们这里实践发现会多出来webView.URL.absoluteString中的path部分,这里为什么不是webView.URL.absoluteString中的域名直接拼接params中传过来的url
请教下,这里是大佬业务特性还是这里有不足

离线包生产环境使用问题

看了代码以后有以下两个疑问:

  1. 在生产环境使用的时候,是以页面维度还是以业务的维度产出离线包?
  2. 前端产出离线包的webpack插件代码后续有开源计划么?

JDNetworkAsyncOperation会和YYCache报线程优先级反转警告

这个在app启动的时候出现警告
Thread Performance Checker: Thread running at User-initiated quality-of-service class waiting on a thread without a QoS class specified. Investigate ways to avoid priority inversions
PID: 26899, TID: 14021030
Backtrace

3 YYCache 0x000000010c50b312 -[YYDiskCache objectForKey:] + 98
4 YYCache 0x000000010c509585 -[YYCache objectForKey:] + 117
5 MyyShopDev 0x0000000108e5239c $s10MyyShopDev12WebViewCacheC6object6forKeySo8NSCoding_pSS_tF + 188
6 MyyShopDev 0x0000000108e524db $s10MyyShopDev12WebViewCacheC6object6forKeySo8NSCoding_pSS_tFTo + 75
7 JDHybrid 0x000000010c0c5320 -[JDURLCache getCachedResponseWithURL:] + 96
8 JDHybrid 0x000000010c0b8248 -[JDNetworkAsyncOperation start] + 728
9 Foundation 0x00007ff800e48744 NSOPERATIONQUEUE_IS_STARTING_AN_OPERATION + 17

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.