首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >前端开发工作流

前端开发工作流
EN

Stack Overflow用户
提问于 2014-08-07 07:40:13
回答 1查看 118关注 0票数 1

我很好奇是否有人在使用与我类似的方法,或者是否有人有一个想法或建议来帮助改进工作流程。据我所知,这是一种有点原创的方法。

所以基本上,我使用NodeJS来开发我的客户端代码。我使用Grunt+watch自动将我的所有项目源代码连接并缩小到一个.min文件中,该文件将写入到公共/js文件夹中。但是,为了进行测试,我使用了Jasmine-node,因此我需要一个索引文件(仅用于此目的),它需要所有的项目源文件。但是,因为我希望在Node和浏览器中运行相同的代码,所以我将所有内容都添加到全局项目名称空间中,例如:

代码语言:javascript
复制
myApp.framework.someClass

在myapp.js文件中,我然后导出到节点(如果存在模块+导出)。这允许将我的所有对象公开到节点,而不必将module.exports内容添加到每个源文件中,相反,我可以简单地这样做:

代码语言:javascript
复制
(function() { myApp.framework.someClass = function() {...} })();

在每个文件中,或者甚至简单地:

代码语言:javascript
复制
myApp.framework.someClass = function() {...}

这对于客户端来说工作得非常好,因为所有东西都已经在内存中了,但是缺点是,在Node中,有时尝试访问myApp命名空间中的另一个类会失败,因为我没有使用像RequireJS这样的东西来管理依赖项。

我的想法是也许可以像在标准节点应用程序中一样向文件中添加请求,但是在构建过程中,将任何特定于节点的内容剥离。

您的想法/建议请提出来!

EN

回答 1

Stack Overflow用户

发布于 2014-08-07 08:12:07

我见过这样的技巧被用来使JS代码在Node和浏览器环境中使用。这来自于异步库:

代码语言:javascript
复制
// Node.js
if (typeof module !== 'undefined' && module.exports) {
    module.exports = async;
}
// AMD / RequireJS
else if (typeof define !== 'undefined' && define.amd) {
    define([], function () {
        return async;
    });
}
// included directly via <script> tag
else {
    root.async = async;
}

https://github.com/caolan/async/blob/master/lib/async.js

希望这能有所帮助!

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25172035

复制
相关文章

相似问题

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