我已經使用nodejs創建了庫,並且webpack用於捆綁它,因此可以在客戶端使用它。如何創建在客戶端和服務器端(同構)工作的JavaScript庫?
但是,如果我嘗試使用捆綁文件到我的節點應用程序,它不起作用。 那麼,我該如何創建可以在客戶端和服務器端工作的同構庫?
我已經使用nodejs創建了庫,並且webpack用於捆綁它,因此可以在客戶端使用它。如何創建在客戶端和服務器端(同構)工作的JavaScript庫?
但是,如果我嘗試使用捆綁文件到我的節點應用程序,它不起作用。 那麼,我該如何創建可以在客戶端和服務器端工作的同構庫?
使用React通過facebook支持同構組件創建,您可以在客戶端和服務器端使用。
它的JSX概念可以解決這個問題。
React with Node for Isomorphic
同構的Javascript優點:
更好的整體用戶體驗
搜索引擎可轉位
個代碼更容易維護
免費漸進增強
這不是服務器或客戶端的問題,即使用模塊加載系統的問題。
正如你可能已經知道的人在那裏使用CommonJS的(該節點使用),AMD(這在客戶端用於編寫模塊化的JavaScript)和或腳本標籤(在客戶端)加載的javascript模塊。所以你應該以某種方式準備你的庫,以便能夠與這些模塊加載系統中的任何一個一起使用。其結果是有UMD(û niversal 中號 odule d efinition)模式,使您模塊所有這些模塊系統兼容(見UMD templates,人們用它來實現這種模式)。
構建和捆綁工具(像的WebPack,browserify,...)有設施捆綁你的模塊作爲UMD,因此它與所有的模塊加載系統兼容:
的WebPack:
套裝libraryTarget
和library
輸出配置:
webpack.config。JS
module.exports = {
entry: './myModule.js',
output: {
filename: './dist/myModule.js',
// export to AMD, CommonJS, or window
libraryTarget: 'umd',
// set window global to this name
library: 'myModule'
}
};
Browserify:
使用--standalone
(-s
)選項:
browserify main.js -s myModule -o myModule.js
只要不使用的東西,不與雙方合作,或(至少)模仿他們的工作,如果你真的需要他們。 – Arnial