ffos(gecko):gecko下XPCOM组件开发参考文档(合)

本文详细介绍了在Gecko中开发XPCOM组件的方法,包括JavaScript和C++两种实现方式。XPCOM是Gecko的核心技术,允许组件间的互操作。文章涵盖组件的接口定义、实现、注册和调用,为开发者提供实践指导。
摘要由CSDN通过智能技术生成
前面分开写了js 和C++ 的实现,

ffos (gecko):如何在gecko 中编写XPCOM组件(一)--javascript 实现方式

ffos (gecko):如何在gecko 中编写XPCOM组件(二)--C++ 实现方式

xpcom refference links XPCM相关

整理了文档,一起贴上来。

geckoXPCOM组件参考文档

 

版本历史

版本号

作者

日期

备注

V1.0

h

2018.07.06


 

目录

目录 1

摘要 1

1. XPCOM技术 2

1.1 XPCOM是什么 2

1.2 XPCOM 架构 2

2. XPCOM组件开发 3

2.1 javascript实现方式 5

2.2 C++实现方式



摘要

 

XPCOMgecko核心技术本文尝试gecko添加两个简单XPCOM组件展示XPCOM基本开发示例提供一些参考

 

1. XPCOM 技术

1.1 XPCOM是什么

XPCOM 的目标是使软件的不同部分分别开发, 相互独立. 为了是应用的不同组件之间能够互操作, XPCOM 把组件的实现与接口(后面讨论接口)分开. 同时 XPCOM 还提供了加载和操纵这些组件的库和工具以及服务, 以帮助开发人员编写跨平台的代码和组件版本管理; 因此组件可以在不破坏应用或者重新生成应用的同时被替换被更新. 通过使用 XPCOM, 开发人员创建的组件可以在不同的应用中被重用, 或者替换当前应用中的组件以改变应用的功能.

XPCOM 不只提供组件软件开发的支持, 它同时提供一个开发平台的大多数功能的支持:

组件管理

文件抽象

对象消息传递

内存管理

可以 XPCOM 想象成一个 组件开发平台, 它提供了上面的这些特性

Gecko 应用核心技术相当microsoft COM技术又是借鉴广,理解,扩展gecko 本身js实现提供webidl接口的实现文件调用,可以下层进行封装

 

1.2 XPCOM架构

Gecko XPCOM关系可以简单粗暴理解gecko=XPCOM组件

2. XPCOM 组件开发

介绍geckoXPCOM 组件写法框架 

2.1 javascript实现方式

 

涉及到的目录及文件及其作用原理:

2.1.1 js组件编写

 

1.js 组件最终目录结构:

gecko/dom/simplejs/

 

simplejs

├── moz.build

├── nsISimplejs.idl

├── nsIUseComponent.idl

├── Simplejs.js

├── Simplejs.manifest

├── UseComponent.js

└── UseComponent.manifest

 

 

2.组件实现:

(1)nsISimplejs.idl 接口定义文件

 

#include "nsISupports.idl"

[scriptable, uuid(ce32e3ff-36f8-425f-94be-d85b26e634ee)]

interface nsISimpleComponent : nsISupports

{

    attribute string yourName;

    void write();

    void changejs(in string aValue);

};

 

 

(2)Simplejs.jsnsISimplejs.idl的实现文件

 

"use strict";

 

const Cc = Components.classes;

const Ci = Components.interfaces;

const Cu = Components.utils;

const Cr = Components.results;

 

Cu.import("resource://gre/modules/XPCOMUtils.jsm");

Cu.import("resource://gre/modules/Services.jsm");

 

function SimpleComponentImpl() {

    debug("yahaha,constructor SimpleComponentImpl constructor in simplecomponent.js################");

}

 

//dump("yahaha,dump,im SimpleComponentImpl in simplecomponent.js######################### before prototype");

 

SimpleComponentImpl.prototype = {

 

    contractID : "@mozilla.org/simplejs;1",

    classID: Components.ID("{cc587afa-0696-469f-9eff-9dac0dd727fe}"),

    QueryInterface: XPCOMUtils.generateQI([Ci.nsISimpleComponent]),

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值