首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用单个声明修改同时使用服务器端和客户端的库?

问如何使用单个声明修改同时使用服务器端和客户端的库?
EN

Stack Overflow用户
提问于 2014-10-04 11:12:42
回答 1查看 55关注 0票数 0

我使用Moment.js同时使用客户端和服务器端来格式化日期。

我想修改Moment.js格式的某些方面,我希望这些修改可以使用单个声明同时应用于服务器端和客户端。

在app.js中,在需要外部.js文件(该文件修改矩对象)之前,我需要时间,但是Node.js一直抱怨在外部.js文件中访问该文件时没有定义该时刻。

我解决这件事的方式就像一个邪恶的黑客:

app.js

代码语言:javascript
复制
global.moment = require('moment');
var scripts = require(__dirname + '/public/scripts.js');

index.html

代码语言:javascript
复制
<script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.8.3/moment.min.js">
<script src="/scripts.js">

scripts.js

代码语言:javascript
复制
var moment = (function() {
  try {
    return global.moment;
  } catch(e) {}

  try {
    return window.moment;
  } catch(e) {}
})();

moment.modifySomeProp(prop, {});
EN

回答 1

Stack Overflow用户

发布于 2014-10-04 12:06:55

您可以创建一个返回修改后的moment.js的新模块。您仍然需要在html中包含moment.js,但是不需要在节点中这样做,所以只需在app.js中使用require(__dirname + '/public/modifiedmoment.js')

我稍微修改了这里中的代码,以创建模块。它将用修改后的window.moment代替,并在节点的要求中返回修改后的矩。

代码语言:javascript
复制
(function(root, factory) {
    if (typeof define === 'function' && define.amd) {
        // AMD. Register as an anonymous module.
        define(['moment'], factory);
    } else if (typeof exports === 'object') {
        // Node. Does not work with strict CommonJS, but
        // only CommonJS-like environments that support module.exports,
        // like Node.
        module.exports = factory(require('moment'));
    } else {
        // Browser globals (root is window)
        root.moment = factory(root.moment);
    }
}(this, function(moment) {
    moment.modifySomeProp(prop, {});
    return moment;
}));
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26192241

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档