问题标签 [commonjs]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - 在 Titanium 应用程序中 CommonJS 比命名空间更好?
Appcelerator 推荐在 Titanium Apps 中使用 CommonJS-modules:https ://wiki.appcelerator.org/display/guides/Mobile+Best+Practices
但是,在他们的文档中,我找不到合理问题的合理答案:为什么?
CommonJS 做了哪些好的命名空间没有做的事情?据我所知,这只是一种包含模块的方式!
编辑: 具体来说,在 Titanium 的上下文中使用 CommonJS 有什么好处?
javascript - 构建 NodeJS 模块 - 变量和方法
我想创建模块来构建我的 NodeJS 应用程序,但我有点迷茫,而且我还没有找到任何(经过数小时的搜索)完全确定的主题。
假设我想创建一个“用户”模块,我可以使用以下代码在我的代码中创建新用户:
理想情况下,我需要在我的代码顶部使用我的模块,例如:
这很好用。问题是,我应该如何构建用户模块?以下是最好的方法吗?
我正在为我的各种模块变量编写 getter 和 setter,允许我隐藏我不想从其他代码意外访问的东西。但是,我以前这样做过:
这也有效,但有一个警告;我还没有找到从闭包中访问用户属性的方法。如果我的理解是正确的,那么对于第二个实现,我不能。这意味着如果我需要将一个函数作为回调传递给 db 库来编辑用户的属性,我不能。那看起来像:
据我了解,该代码不起作用,因为“this”关键字在闭包的范围内,而不是用户。即使将代码放置在 User 函数中:
它行不通。
我想我的问题是,这个问题的最佳解决方案是什么?是我在第一个代码块中介绍的方法吗?这看起来相当麻烦和混乱,并且容易发生可变碰撞。我很害怕。
提前致谢!
javascript - CommonJS模块太大时Titanium文件错误?
在我的 Titanium 应用程序中,当我包含的 CommonJS 模块定义了超过一定数量的方法时,我在构建应用程序时收到文件错误,这很奇怪。可能是因为它占用了太多内存?
有什么想法吗?
脚本错误 = 表达式“Ti.UI.createTab”[40] 的结果不是函数。(未知文件)
node.js - “错误:找不到模块‘少’”Node.js 模块加载首选项/顺序/缓存?
情况是这样的……所以我创建了一个 Node.js 模块,它充当一些 Node.js 模板引擎Shift.js的接口。它包含在另一个 Node.js 模块Design.io 中(它指定了 Design.io 的 package.jsondependencies
块)。Design.io 监视文件以进行更改。
然后你构建一个应用程序和require('design.io')
. 例如,您还可以在项目中安装 Less 和 Stylus。
这样,当您保存.less
或.styl
文件时,会调用一系列方法:
require("design.io")
收到文件系统事件的通知。Design.io 然后调用require('shift').render(string, extension, callback)
. Shift.js 然后调用require(moduleFor(extension)) # require("less")
. 字符串被编译。
在我的应用程序(当前工作目录)中,我安装了 less 和手写笔:
我遇到的问题是,在从 Shift.js 模块中调用的第 3 步中,我收到如下错误:
我的问题是,为什么会这样?我认为只要将它们安装在某个地方,您就可以动态地从模块中获取库……我错过了什么?
目标是像 Shift.js 这样的库不必在package.json
……中定义每一个依赖项。对于“模板引擎接口”库,这将需要太多应用程序可能永远不会使用的依赖项。
感谢您的帮助,希望这有点清楚。
javascript - Node.JS - 在模块中使用原型
因此,我在节点中编写了一大堆特定于供应商的文件,它们都具有类似的控制器模式,因此我将它们剪切并放入一个通用文件中是有意义的。
你可以在这里看到我的通用控制器文件:https ://gist.github.com/081a04073656bf28f46b
现在,当我在多个模块中使用它们时,每个连续加载的模块都会覆盖第一个。这是因为该文件只需要一次并在加载时动态传递给每个模块(例如,这允许我添加额外的模块,并且这些模块能够添加自己的路由)。您可以在此处查看示例模块:https ://gist.github.com/2382bf93298e0fc58599
你可以在第 53 行看到这里我已经意识到我们每次都需要创建一个单独的实例,所以我尝试通过将 standardControllers 对象复制到一个新对象中来创建一个新实例,然后初始化新对象。这对代码的影响为零,并且代码的行为方式完全相同。
有什么想法吗?我对这个有点困惑!
javascript - 请推荐一个使用 CommonJS 的钛项目结构
我正在启动一个新的 Titanium 应用程序,并希望使用最佳实践并从一开始就避免内存泄漏。我是 CommonJS 以及 Titanium 平台的新手。
不幸的是,似乎所有关于钛的示例应用程序都围绕Ti.include("/lib/module")
而不是更新的推荐最佳实践。require("/lib/module")
我担心的是使用 CommonJS 可能需要的内存消耗。从Titanium 文档中的 CommonJS 模块中可以看出,模块将被缓存,这是否意味着如果我曾经访问一个模块,所有这些功能都会突然停留在内存中,即使它们超出了范围?
我已经启动了一个具有以下结构的新应用程序
从这里开始,我的主应用程序有一个单一的仪表板样式视图,其结构松散如下:
非常感谢任何有关正确项目结构的指导。
javascript - Commonjs resource path of Titanium mobile
I have a project which have following folder structure
MainView.js is writing in commonjs fashion
Those code perform as expacted in iOS but not the same story in Android. I expected in high resolution device, it will load android/images/res-hdpi/main.png as a image but it keeps saying path not found.
I am using Titanium SDK 1.8.2
javascript - 当它已经被初始化时,我在尝试从伪 javascript 类中修改“this”对象时遇到了很多麻烦
向下滚动到这篇文章的底部以查看解决方法/可能的解决方案。
这可能更容易在源代码中用注释来解释。手头的问题是我无法弄清楚伪类如何协同工作来执行我正在尝试执行的任务(在下面的代码中进行了解释)。
代码分为 3 个文件:lead.js、router.js 和 db.js。
有相当多的代码行,但大部分是注释。
当我运行它时,我的验证器总是报告密码为空,这是有道理的。我最初使用空密码将文档发送到班级(密码是随机生成的,而不是表单字段) - 问题是我不知道如何处理 if (!document) ... 代码块实际设置 this.document 正确。
我希望在评论和代码之间,您可以了解我正在尝试做什么。我已经坚持了一段时间。
编辑
我稍微改变了它的流程以获得解决方案。
在 db.js 中,我导出了连接,而不是直接实例化线索(和未来的模型)。
在 router.js 文件中,我需要 db 和 Lead 文件,然后在 Lead 的构造函数中传递 db 连接和文档。前任。
在lead.js 文件中,它变得像执行this.document = document(与db 相同)一样简单。当我提交新的潜在客户时,我没有从 router.js 发送的值会附加到文档中(创建日期、随机密码等),一切都很好。
这是一种体面的处理方式,还是有更好的重构方式?
javascript - 可以在 CommonJS 中使导出对象成为一个函数吗?
在 CommonJS 模块只需要返回一个函数的情况下,将它直接分配给导出对象是一种好习惯吗?(而不是将其指定为导出对象的唯一属性)
例如(虚log.js
模块):
用法:
javascript - 如何将拆分为三个文件的 WebGL 代码“要求”到一个引导文件中?
我已经编写了一些 WebGL 代码,实际上我正在使用此处找到的示例。无论如何,我决定编写三个单独的伪类,我将在这里只展示其中一个以节省空间,因为我认为其他的与问题无关。
所以我想知道我可以将它们包含(要求)在一个单独的文件中的最佳方式是什么,该文件将引导一切。我读过关于 CommonJS 的文章,但这是在服务器端,我们在这里谈论的是客户端。我真的不想将所有内容都保存在一个文件中,因为我想要做的最终将是一个非常大的应用程序,我真的不希望将所有内容都放在一个地方。提前致谢!