使用Moment.js制作原生ELM模块

use*_*604 5 javascript native momentjs elm

我已经和Elm玩了几天了,我想建立一个Moment.JS的端口,因为我看到我想要的东西缺少库,而且Moment只有我需要的一切.

问题是我总是面临同样的错误.我的Native文件夹中有Moment.JS(名为MomentJS.js),另一个名为Moment.js的文件(我的包装器).问题是,当我在Moment.js中调用时刻时,我得到一个错误,表示该时刻未定义.

在Moment.js之前和/或之后,我也尝试在我的elm文件中导入MomentJS.js.我还尝试将整个JS复制到Moment.js并在其末尾添加我的包装器.这些都没有奏效.你知道我该怎么办?我一直在互联网上寻找类似的回购,但我从来没有见过一个模块有一个包装器和另一个JS文件只是为本机库.

这是我的Moment.js代码:

var _user$project$Native_Moment = (function() {

    var moment = require('moment');


    var format = function ( format, date ) {
        return moment().format();
    }

    return {
        format: format
    };

})();
Run Code Online (Sandbox Code Playgroud)

和我的Moment.elm代码:

module Moment exposing (format)

{-| A module desc

@docs format

-}

import Native.MomentJS
import Native.Moment

{-| Call the default `Moment.js` format method
-}
format : String -> String -> String
format fm dt = Native.Moment.format fm dt
Run Code Online (Sandbox Code Playgroud)

我尝试的最后一件事是从npm下载Moment,将其文件夹从node_modules文件夹复制到我的Native文件夹moment = require('moment')但是我得到了TypeError: fun(...) is not a function.

有什么建议?

Jos*_*ens 5

经过一番挖掘,你想做的事情完全可能是的!:)但是,它不会是一个简单的复制粘贴.看看你在这里发布的来源,它需要将每个函数映射到本机榆树函数,我建议从这个转换开始.

首先,获取一个简单的hello world本机示例工作,请参见此处

其次,从moment.js逐个添加一些更简单的函数,我建议从moment\src\lib\format\format.js开始

最后,我知道这不是你想听到的,但如果你真的想在榆树中写javascript,也许榆树不是你想要的?我真的无法想象转换类似于Moment.js的整个库比创建自己的受Moment.js启发的Elm库更简单

无论哪种方式,祝你好运!无论如何看起来像一个有趣的挑战:)