是否有可能需要從nodejs中服務器端的其他簡單JavaScript文件中的fay-compiled模塊?那會很好。也許在編譯器中有一些選項可以生成commonjs兼容的模塊?要求來自nodejs的fay代碼
4
A
回答
1
這可能是一個糟糕的主意,因爲這取決於相當多的費伊的特殊性生成的代碼。
注意以下幾點:
- 無論編譯的模塊的名稱,仙女實例到變量
main
。 - 在node.js下,
require
的返回值是模塊的modules.export
(最初與export
的對象相同 - 但它不一定保持那種方式)。 - 變量可以在使用
var
聲明範圍之前使用。引用的變量是相同的。它關心的不是源代碼排序,而是運行時發生的一切。 - 默認情況下(即沒有0)可以實例化對象並執行
main
。
值得注意的是,這意味着我們可以內main
,修改module.exports
或exports
出口的仙女代碼。當然,我們必須使用ffi,但這是一件相當簡單的事情;下面,沒有--library
編譯(其中,是的,是輕度違反直覺的,並且確實能讓人相信的假設,這是一個討厭的黑客,不會吧)的工作在一定程度上:
import FFI
main :: Fay()
main = ffi "module.exports = main"
時require
「從節點d,返回的對象是值得的
{ 'Main$main':
{ forced: true,
value: { value: [Circular] } },
_: [Function: Fay$$_],
'$': [Function: Fay$$$],
'$fayToJs': [Function: Fay$$fayToJs],
'$jsToFay': [Function: Fay$$jsToFay] }
隨着仙女的內部表示的工作知識的效果,則有可能(儘管也許太多精力)寫一個JavaScript包裝爲所有thunk-強迫等。
(我們可以做更多的 - 其實,用多一點FFI的工作,我們可以寫所有綁定爲FFI代碼這將是溫和的愚蠢,雖然。)
1
可以使用JavaScript中的fay代碼,但目前它有點冗長,您需要使用完全限定名稱並手動強制調用函數。
var m = new Main();
document.body.innerHTML = "The 10th fibonacci number is : " + m._(m.Main$fibN(9));
現在一切都在Main內部,因此我們希望將每個模塊的編譯分開,以便每個模塊都可以單獨輸出。 (那麼我們也可以遷移到haskell-packages)
然後,我們需要輸出一個包裝器,它可以爲每個模塊強制和類型轉換,所以當你從JavaScript調用時不需要手動轉換。
相關問題
- 1. 連接舊版Haskell代碼和Fay代碼
- 2. 要求的NodeJS ECONNREFUSED
- 3. 後的NodeJS要求
- 4. 來自NodeJs的請求到PHP
- 5. 來自代碼
- 6. Fay:包含另一個Fay文件?
- 7. nodejs正則表達式 - 需要幫助來理解代碼
- 8. 使用來自Google代碼的代碼
- 9. Acumatica - 來自代碼
- 10. 新要求( '下劃線')與要求( '下劃線')的NodeJS [Webstorm 7自動完成]
- 11. 來自C++的BST代碼
- 12. 來自java代碼的wsdl
- 13. 來自TBB的書代碼
- 14. 來自javascript的Java代碼
- 15. 來自C#的csc.exe代碼
- 16. 來自DB的javascript代碼
- 17. 代碼合同:要求未經證實的來源!= null
- 18. 來自PHP循環內的JQuery代碼的AJAX請求
- 19. 來自MarkLogic管道中的XQuery代碼的HTTP請求
- 20. 來自Servlet的Auth(摘要)請求
- 21. 來自代碼的iPhone應用用戶評論請求
- 22. PHP會話和AJAX請求(來自注入的JS代碼)
- 23. 來自PHP代碼的自動文檔
- 24. 來自Nodejs的通話
- 25. 解碼來自Django請求的值
- 26. 自動添加不需要的字符在nodejs放置請求
- 27. 來自圖紙代碼
- 28. 代碼來自Visio繪圖
- 29. 與來自託管代碼
- 30. Multistore,來自代碼/本地/
聰明:) 編寫一個包裝是一些工作,但它不應該太難用新的代碼生成器。通過一個標誌,編譯器可以爲每個Fay模塊生成嚴格的模塊,以適當地進行強制和代碼轉換。 –