当前位置: 首页 > news >正文

网站的用户体验/网站关键词排名手机优化软件

网站的用户体验,网站关键词排名手机优化软件,如何做论坛网站,做公众号策划的网站上一篇:Theia——云端和桌面版的IDE 架构概述 本节描述了Theia的整体架构。 Theia被设计为一个可以在本地运行的桌面应用程序,也可以在浏览器和远程服务器之间工作。为了支持这两种工作方式,Theia运行在两个独立的进程中,它们被称…

上一篇:Theia——云端和桌面版的IDE

架构概述

本节描述了Theia的整体架构。
Theia被设计为一个可以在本地运行的桌面应用程序,也可以在浏览器和远程服务器之间工作。为了支持这两种工作方式,Theia运行在两个独立的进程中,它们被称之为前端和后端,相互之间通过WebSockets上的JSON-RPC消息或HTTP上的REST APIs来通信。对于Electron而言,前端和后端都在本地运行,而在远程上下文中,后端运行在远程服务器上。
前端和后端进行都有它们各自的依赖注入(DI)容器(详见下文),以方便开发者进行扩展。

前端

前端部分负责客户端的UI呈现。在浏览器中,它只是简单地在渲染循环中运行。而在Electron中,它运行在Electron窗口中,这是一个包含Electron和Node.js APIs的浏览器窗口。因此,任何前端代码都可以把浏览器而不是Node.js作为一个运行平台。
启动前端进程将首先加载所有扩展包的DI模块,然后获取一个 FrontendApplication的实例并在上面调用 start()

后端

后端进程运行在Node.js上。我们使用express作为HTTP服务器,它可以不使用任何需要浏览器平台的代码(DOM API)。
启动后端应用程序将首先加载所有扩展包的DI模块,然后获取一个 BackendApplication的实例并在上面调用 start(portNumber)
默认情况下后端的express服务器也为前端提供代码。

按平台进行区分

在扩展包的根目录下,包含如下子目录层级,按不同的平台进行区分:
  • common目录下包含的代码不依赖于任何运行时。
  • browser目录下包含的代码需要运行在现代浏览器平台上(DOM API)。
  • electron-browser目录下包含了需要DOM API及Electron渲染进程特定的APIs的前端代码。
  • node目录包含了需要运行在Node.js下的后端代码。
  • node-electron目录包含了Electron特定的后端代码。

参见

  可以查看这篇文章了解有关Theia架构的简要概述:

  利用JS实现多语言IDE——目标和架构(Multi_Language IDE Implemented in JS - Scope and Architecture)

扩展包

Theia由扩展包构成。一个扩展包就是一个npm包,在这个npm包中公开了用于创建DI容器的多个DI模块( ContainerModule)。
通过在应用程序的 package.json中添加npm包的依赖项来使用扩展包。扩展包能够在运行时安装和卸载,这将触发重新编译和重启。
通过DI模块,扩展包能提供从类型到具体实现的绑定,即提供服务和功能。

Services和Contributions

本节我们将描述一个扩展包如何使用另一个扩展包中的服务,以及它们如何给Theia提供功能。

依赖注入(DI)

Theia使用DI框架 Inversify.js来连接不同的组件。
DI在创建时注入组件(作为构造函数的参数),从而将组件从依赖项中彻底解耦出来。DI容器根据你在启动时通过所谓的容器模块提供的配置项来进行创建。
例如, Navigator小部件需要访问 FileSystem用来在树形结构中显示文件夹和文件,但是 FileSystem接口的实现对 Navigator来说并不重要,它可以大胆地假设与 FileSystem接口一致的对象已经准备好并可以使用了。在Theia中, FileSystem的实现仅仅是一个发送JSON-RPC消息到后端的代理,它需要一个特殊的配置和处理程序。Navigator不需要关心这些细节,因为它将获取一个被注入的 FileSystem的实例。
此外,这种结构的解耦和使用,允许扩展包在需要时能提供非常具体的功能实现,例如这里提到的 FileSystem,而不需要接触到 FileSystem接口的任何实现。
DI在Theia中是一个非常重要的部分,因此,我们强烈建议先学习 Inversify.js的基础知识。

Services

Service只是一个提供给其它组件使用的绑定。例如,一个扩展包可以公开 SelectionService,这样其它扩展包就可以获得一个注入的实例并使用它。

Contribution-Points

如果一个扩展包想要提供一个钩子,由其它扩展包来实现其中的功能,那么它应该定义一个 contribution-point。一个 contribution-point就是一个可以被其它扩展包实现的接口。扩展包可以在需要时将它委托给其它部分。
例如, OpenerService定义了一个contribution point,允许其它扩展包注册 OpenHandler。你可以查看 这里的代码。
Theia已经提供了大量的contribution points列表,查看已存在的contribution points的一个好方法是查找 bindContributionProvider的引用。

Contribution Providers

一个contribution provider基本上是contributions的容器,其中的contributions是绑定类型的实例。
这是非常通用的。
要将类型绑定到contribution provider,你可以这样做:
(来自messageing-module.ts)
export const messagingModule = new ContainerModule(bind => {bind<BackendApplicationContribution>(BackendApplicationContribution).to(MessagingContribution);bindContributionProvider(bind, ConnectionHandler)
});
最后一行将一个ContributionProvider绑定到一个包含所有ConnectionHandler绑定实例的对象上。
像这样来使用:
(来自messageing-module.ts)
constructor( @inject(ContributionProvider) @named(ConnectionHandler) protected readonly handlers: ContributionProvider<ConnectionHandler>) {}

  这里我们注入了一个ContributionProvider,它的name值是ConnectionHandler,这个值之前是由bindContributionProvider绑定的。

这使得任何人都可以绑定ConnectionHandler,现在,当messageingModule启动时,所有的ConnectionHandlers都将被初始化。
原文地址: https://theia-ide.org/docs/architecture
http://www.lbrq.cn/news/1390861.html

相关文章:

  • 怎样给自己的店做网站/学it一年的学费大概是多少
  • 比较多人用什么网站做推广/世界球队最新排名
  • 哪家做的濮阳网站建设/石家庄百度快照优化
  • 怎么创建万维网网站/seo网站优化技术
  • 做海报的网站有哪些内容/什么是淘宝seo
  • 姜堰区网站建设/优化排名推广技术网站
  • 报告编号怎么获取/seo实战培训费用
  • 美女做爰免费观看视频网站/手机优化软件
  • 爱剪辑/seo关键词排名报价
  • 广州web网站开发培训班/移动端关键词排名优化
  • 地接做的网站/网奇seo培训官网
  • 钻石网站建设/seo推广优化平台
  • 蓝德网站建设/电话销售如何快速吸引客户
  • wordpress登录搜索/临沂seo整站优化厂家
  • 台州网站外包/设计公司排名
  • 大莲网站建设公司/自己做的网站怎么推广
  • 做彩票网站能挣到钱吗/免费网站的平台
  • 做淘宝客网站教程/百度文库网页版
  • 知名b2b网站/软文撰写案例
  • 中国能建设计公司网站/站长之家产品介绍
  • 全是图片的网站怎么做seo/山西seo优化公司
  • 网站建设对宣传的意义/淘宝关键词搜索量排名
  • 宁波做网站的专业公司/搜狗链接提交入口
  • 高端网站建设设计公司/seo优化方案案例
  • 石家庄+外贸网站建设公司/百度资源分享网页
  • 网站在线qq客服代码/企业内训
  • 电商网站怎么做权限控制/百度交易平台官网
  • 合肥做网站推荐 晨飞网络/企业网站建设推广
  • wordpress 站点身份/百度app关键词优化
  • 广州网站建设电话咨询/南宁seo团队哪家好
  • C#_高性能内存处理:Span<T>, Memory<T>, ArrayPool
  • AI适老服务暖人心:AI适老机顶盒破数字鸿沟、毫米波雷达护独居安全,银发生活新保障
  • 用户登录Token缓存Redis实践:提升SpringBoot应用性能
  • vue-admin-template权限管理
  • 大数据毕业设计选题推荐-基于大数据的鲍鱼多重生理特征数据可视化分析系统-Spark-Hadoop-Bigdata
  • 从零开始理解 K 均值聚类:原理、实现与应用