2017-02-01 85 views
1

我已經使用nodejs創建了庫,並且webpack用於捆綁它,因此可以在客戶端使用它。如何創建在客戶端和服務器端(同構)工作的JavaScript庫?

但是,如果我嘗試使用捆綁文件到我的節點應用程序,它不起作用。 那麼,我該如何創建可以在客戶端和服務器端工作的同構庫?

+0

只要不使用的東西,不與雙方合作,或(至少)模仿他們的工作,如果你真的需要他們。 – Arnial

回答

0

使用React通過facebook支持同構組件創建,您可以在客戶端和服務器端使用。

它的JSX概念可以解決這個問題。

Git Hub Isomorphic Example

React with Node for Isomorphic

同構的Javascript優點:

  • 更好的整體用戶體驗

  • 搜索引擎可轉位

  • 個代碼更容易維護

  • 免費漸進增強

0

這不是服務器或客戶端的問題,即使用模塊加載系統的問題。

正如你可能已經知道的人在那裏使用CommonJS的(該節點使用),AMD(這在客戶端用於編寫模塊化的JavaScript)和或腳本標籤(在客戶端)加載的javascript模塊。所以你應該以某種方式準備你的庫,以便能夠與這些模塊加載系統中的任何一個一起使用。其結果是有UMDû niversal 中號 odule d efinition)模式,使您模塊所有這些模塊系統兼容(見UMD templates,人們用它來實現這種模式)。

構建和捆綁工具(像的WebPack,browserify,...)有設施捆綁你的模塊作爲UMD,因此它與所有的模塊加載系統兼容:

的WebPack

套裝libraryTargetlibrary輸出配置:

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 
相關問題