Element(以前稱為 Vector 和 Riot)是使用 Matrix JS SDK 建置的 Matrix Web 用戶端。
Element 對不同環境提供多層支援:
支援
問題被積極分類,回歸阻礙了發布
定義:
桌面作業系統上 Chrome、Firefox 和 Edge 的最新 2 個主要版本
Safari 的最後 2 個版本
桌面作業系統上最新版本的官方 Element Desktop 應用程式
桌面作業系統是指作業系統供應商積極支援並接收安全性更新的桌面裝置的 macOS、Windows 和 Linux 版本
盡力
問題已接受,回歸不會阻止發布
更廣泛的 Element 產品(包括 Element Call 和 Enterprise Server Suite)仍然沒有正式支援這些瀏覽器。
element web 專案及其貢獻者應保持客戶端正常運行,並在其他同級功能(例如 Element Call)可能無法運作的情況下優雅地降級。
定義:
Firefox ESR 和 Chrome/Edge Extended Stable 的最新主要版本
社區支持
問題已接受,回歸不會阻止發布
歡迎社區捐款來支持這些問題
定義:
適用於 Android、iOS 和 iPadOS 上目前穩定版 Chrome、Firefox 和 Safari 的行動網絡
不支援
定義:僅影響不支援的環境的問題已關閉
其他一切
這些等級的支援期限應持續到上述指定的版本,加上 1 個應用程式發布週期(2 週)。對於 Firefox ESR,這一點得到了進一步擴展,以使其登陸 Debian Stable。
要在 Android 或 iOS 裝置上存取 Element,我們目前推薦本機應用程式 element-android 和 element-ios。
測試 Element 最簡單的方法是使用 https://app.element.io 上的託管副本。對於那些喜歡危險生活的人來說, develop
分支會持續部署到 https://develop.element.io。
若要託管您自己的 Element 實例,請參閱安裝 Element Web。
要將 Element 安裝為桌面應用程序,請參閱下方的作為桌面應用程式運行。
我們不建議從與 Matrix 家庭伺服器相同的網域執行 Element。原因是,如果有人導致 Element 從 Matrix API 載入和呈現惡意使用者產生的內容,然後由於共享相同的網域。
我們已經採取了一些粗略的緩解措施來嘗試防止這種情況,但一開始就這樣做仍然不是一個好的做法。有關更多詳細信息,請參閱#1977。
除非您有特殊要求,否則您需要在託管 Element Web 時將以下內容新增至 Web 伺服器設定:
X-Frame-Options: SAMEORIGIN
標頭,用於防止 Element Web 被框架並防止點擊劫持。
frame-ancestors 'self'
指令新增至Content-Security-Policy
標頭中,作為X-Frame-Options
的現代替代品(儘管兩者都應該包含在內,因為並非所有瀏覽器都支援它,請參閱此)。
X-Content-Type-Options: nosniff
標頭,用於停用 MIME 嗅探。
X-XSS-Protection: 1; mode=block;
標頭,用於舊版瀏覽器中的基本 XSS 保護。
如果您使用 nginx,這將類似於以下內容:
add_header X-Frame-Options SAMEORIGIN; add_header X-Content-Type-Options nosniff; add_header X-XSS-Protection "1; mode=block"; add_header Content-Security-Policy "frame-ancestors 'self'";
對於 Apache,設定如下所示:
Header set X-Frame-Options SAMEORIGIN Header set X-Content-Type-Options nosniff Header set X-XSS-Protection "1; mode=block" Header set Content-Security-Policy "frame-ancestors 'self'"
注意:如果您已經在其他地方設定了Content-Security-Policy
標頭,則應該修改它以包含frame-ancestors
指令,而不是新增最後一行。
Element 是一個使用現代 ES6 建立的模組化 Web 應用程序,並使用 Node.js 建立系統。確保您安裝了最新的 LTS 版本的 Node.js。
建議使用yarn
而不是npm
。如果您還沒有 Yarn 安裝指南,請參閱它。
安裝或更新node.js
,以便您的node
至少是目前建議的LTS。
如果尚未存在,請安裝yarn
。
克隆儲存庫: git clone https://github.com/element-hq/element-web.git
。
切換到 element-web 目錄: cd element-web
。
安裝先決條件: yarn install
。
如果您使用的是develop
分支,那麼建議設定適當的開發環境(請參閱下方的設定開發環境)。或者,您可以使用 https://develop.element.io - 開發分支的持續整合版本。
透過將config.sample.json
複製到config.json
並修改它來配置應用程式。有關詳細信息,請參閱配置文件。
yarn dist
建置要部署的 tarball。解壓縮此檔案將提供一個特定於版本的目錄,其中包含 Web 伺服器上所需的所有檔案。
請注意,Windows 不支援yarn dist
,因此Windows 使用者可以執行yarn build
,這會將所有必要的檔案建置到webapp
目錄中。如果不使用 dist 腳本,Element 的版本將不會出現在「設定」中。然後,您可以將webapp
目錄掛載到 Web 伺服器上以實際提供應用程序,該應用程式完全是靜態內容。
Element 也可以作為桌面應用程式運行,封裝在 Electron 中。您可以從 https://element.io/get-started 下載預先建置版本,或者,如果您願意,也可以自行建置。
要自行構建,請按照 https://github.com/element-hq/element-desktop 上的說明進行操作。
非常感謝@aviraldg 在 Electron 整合所做的初步工作。
配置文件顯示如何根據需要覆蓋桌面應用程式的預設值。
Element 支援多種設定來配置預設伺服器、行為、主題等。
Element 的某些功能可以透過設定的Labs
部分中的標誌來啟用。其中一些功能在 labs.md 中進行了描述。
當/如果您從自己的網站伺服器提供 Element 時,Element 要求不快取以下 URL:
/config.*.json /i18n /home /sites /index.html
我們也建議您透過將網頁伺服器設定為傳回Cache-Control: no-cache
for /
,強制瀏覽器在頁面載入時重新驗證 Element 的任何快取副本。這可確保瀏覽器在部署後的下一個頁面載入時取得新版本的 Element。請注意,這已在我們的 Dockerfile 的 nginx 配置中為您配置。
在嘗試在 Element 上進行開發之前,您必須閱讀matrix-react-sdk
的開發人員指南,該指南還定義了 Element 的設計、架構和風格。
請閱讀選擇問題頁面,以獲取有關從哪裡開始的一些指導。在開始開發某個功能之前,最好確保您的計劃與我們對 Element 的願景保持一致。在開始之前,請與 #element-dev:matrix.org 中的團隊聊天,以便我們確保它是我們願意合併的內容。
您還應該熟悉程式碼庫中存在的馴服和不太馴服的龍(陷阱)的“Here be Dragons”指南。
Element 的想法是成為底層matrix-react-sdk
之上的相對輕量級的客製化「皮膚」。 matrix-react-sdk
提供了較高和較低層級的 React 元件,可用於使用 React 建立 Matrix 通訊應用程式。
請注意,Element 旨在無需訪問公共互聯網即可正確運行。因此,請不要依賴外部 CDN 或伺服器託管的資源(JS 庫、CSS、映像、字體),而是請將所有依賴項打包到 Element 本身。
Element 中的大部分功能實際上都在matrix-js-sdk
模組中。可以以一種可以輕鬆追蹤 git 中的develop
分支並進行本地更改的方式進行設置,而無需每次都手動重建。
首先克隆並建構matrix-js-sdk
:
git 克隆 https://github.com/matrix-org/matrix-js-sdk.gitpushd matrix-js-sdk 紗線連結 紗線安裝popd
克隆存儲庫並切換到element-web
目錄:
git 克隆 https://github.com/element-hq/element-web.gitcd element-web
透過將config.sample.json
複製到config.json
並修改它來配置應用程式。有關詳細信息,請參閱配置文件。
最後,建置並啟動 Element 本身:
紗線連結矩陣-js-sdk 紗線安裝 紗線開始
等待幾秒鐘以完成初始建置;你應該會看到類似的東西:
[element-js] <s> [webpack.Progress] 100% [element-js] [element-js] ℹ 「wdm」: 1840 modules [element-js] ℹ 「wdm」: Compiled successfully.
請記住,該命令不會終止,因為它運行 Web 伺服器並在來源文件更改時重建來源文件。此開發伺服器也會停用緩存,因此請勿在生產中使用它。
在瀏覽器中開啟 http://127.0.0.1:8080/ 以查看新建的 Element。
注意:Linux 上的建置腳本預設使用 inotify 來監視目錄的變更。如果 inotify 限制太低,您的建置將默默失敗或出現Error: EMFILE: too many open files
。為了避免這些問題,我們建議監視限制至少為128M
,實例限制為512
左右。
您可能對問題 #15750 和 #15774 感興趣以了解更多詳細資訊。
若要設定新的 inotify 監視和實例限制,請執行:
sudo sysctl fs.inotify.max_user_watches=131072 sudo sysctl fs.inotify.max_user_instances=512 sudo sysctl -p
如果您願意,可以透過執行以下命令使新限制永久生效:
echo fs.inotify.max_user_watches=131072 | sudo tee -a /etc/sysctl.conf echo fs.inotify.max_user_instances=512 | sudo tee -a /etc/sysctl.conf sudo sysctl -p
當您對matrix-js-sdk
進行變更時,Webpack 應該會自動取得並建置它們。
如果這些步驟中的任何一個出現file table overflow
錯誤,則您可能使用的 Mac 上的最大開啟檔案數限制非常低。運行ulimit -Sn 1024
並重試。在建立 Element 之前,您需要在開啟的每個新終端中執行此操作。
在tests
目錄下有很多應用程式層級的測試;它們被設計為與 Jest 和 JSDOM 一起運行。運行它們
yarn test
有關如何運行端到端測試的信息,請參閱matrix-react-sdk。
若要新增翻譯,請前往翻譯文件。
有關開發人員指南,請參閱翻譯開發文件。
社群成員和 Web 應用程式團隊按照分類流程對問題進行分類。
我們使用問題標籤對所有傳入的問題進行排序。