轻量级移动端开发框架CapacitorJS

2025-09-10  本文已影响0人  青色沙丘
移动端应用开发框架众多如uniapp、uniapp-X、React Native、Flutter、CapacitorJS。今天根据开发的定制化app讲一讲CapacitorJS这个框架吧。

Ionic团队
Capacitor 是一个由Ionic团队精心打造的强大 开源 工具,旨在让开发者通过JavaScript、HTML和CSS构建既可以在iOS、Android平台上原生运行,也能部署于Web的跨平台Progressive Web Apps(PWA)

CapacitorJS

没有中文版,可以用在线翻译。地址是:Capacitor - Cross-platform Native Runtime for Web Apps | Capacitor Documentation

性能与用户体验

生态与社区支持

长期维护与扩展性

总结与建议

最赞的是后台写插件的写法,开发过java的一定不会陌生,注解方式自定义功能插件,@ActivityCallback是onActivityResult的回调Activity时的数据交换 ,这种自定义插件方式多么简单明了啊,还有两种被动通知传的方式

package android.plugin.test;

import com.getcapacitor.JSObject;
import com.getcapacitor.Plugin;
import com.getcapacitor.PluginCall;
import com.getcapacitor.PluginMethod;
import com.getcapacitor.annotation.CapacitorPlugin;

@CapacitorPlugin(name = "Echo")
public class EchoPlugin extends Plugin {

    @PluginMethod()
    public void echo(PluginCall call) {
        String value = call.getString("value");
        this.getContext();
        this.getActivity();
        JSObject ret = new JSObject();
        ret.put("value", value);
        //继承BridgeActivity的主MainActivity定义全局变量就可以任意位置发送和调用了。
        this.getBridge().triggerWindowJSEvent("testMessage",ret.toString());
        //只有插件种发送,必须使用组件的addListener来监听
        notifyListeners("testMessage",ret);
        call.resolve(ret);
    }

  // Activity的onActivityResult 回调
    @ActivityCallback
    public void processPickedImage(PluginCall call, ActivityResult result) {
        Intent data = result.getData();
        if (data == null) {
       //继承BridgeActivity的主MainActivity定义全局变量就可以任意位置发送和调用了。
        this.getBridge().triggerWindowJSEvent("testMessage",ret.toString());
        //只有插件种发送,必须使用组件的addListener来监听
            call.reject("No image picked");
            return;
        }

    }
}

页面调用方式也很简单,不过它的inic UI库没有使用过但效果还是不错的。

import { registerPlugin } from '@capacitor/core';

const sdk = registerPlugin('Echo');

 sdk.echo({
  value:'test'
}).then(res=>{
    console.info(res.value)
})

sdk.addListener('testMessage', (event) => {
    
});

window.addEventListener('testMessage', (event) => {
        console.info('接收广播')
 });

上一篇 下一篇

猜你喜欢

热点阅读