User interface 您能用自己的函数安全地扩展Ti或Ti.UI对象吗?
我正在开发一款中型的Appcelerator钛合金应用程序。我想扩展Ti.UI对象,我想知道这是否安全 我想做什么 作为Ti.UI树的一部分,存储大量与UI相关的帮助器函数和对象 一个简单的例子是:User interface 您能用自己的函数安全地扩展Ti或Ti.UI对象吗?,user-interface,include,styles,titanium,require,User Interface,Include,Styles,Titanium,Require,我正在开发一款中型的Appcelerator钛合金应用程序。我想扩展Ti.UI对象,我想知道这是否安全 我想做什么 作为Ti.UI树的一部分,存储大量与UI相关的帮助器函数和对象 一个简单的例子是: Ti.UI.COLORS = { RED: '#213234', BLUE: '#ABDCEF' } 我最担心的是,这可能是不安全的,或者只是不能证明未来 我为什么要这么做 我对Tianium的JSS有过不好的体验,目前我正在CSS.js文件中存储和检索我的文件。这个文件捆绑了一些
Ti.UI.COLORS = {
RED: '#213234',
BLUE: '#ABDCEF'
}
我最担心的是,这可能是不安全的,或者只是不能证明未来
我为什么要这么做
我对Tianium的JSS有过不好的体验,目前我正在CSS.js文件中存储和检索我的文件。这个文件捆绑了一些函数和对象,使样式设置更容易(如上面的颜色示例),并将它们与一个大的样式类列表结合起来,存储为对象。这些类利用了helper函数
像这样:
//Provide helper functions
COLORS = { RED: 'etc' };
IOS_ANDROID = function(iosValue,androidValue){
if (Device.isIOS) {
return iosValue
} else {
return androidValue
};
//Provide the styles as exports object (using commonJS)
exports.styles = {
winHome: {
backgroundColor: COLORS.RED
},
winProducts: {
navBarHidden: IOS_ANDROID(true,false),
}
}
现在,我的应用程序已经发展壮大,这个styles对象的大小变得越来越烦人。我正在尝试将样式拆分为几个.js文件,并使用includes和requires将它们(以及必要的函数)组合起来。所以我现在有了一个“css Home.js”、“css Products.js”等等
这在某种程度上是可行的,但我目前需要在每个css-.js文件中重新包含/要求helper函数。这感觉很尴尬。我试图严格遵守只使用require()而不使用include()的常见JS实践。但是,如果我使用require()添加助手函数,就像这样
var cssHelpers = require('css-helpers.js')
exports.styles = {
winHome: {
backgroundColor: cssHelpers.COLORS.RED,
},
}
…然后我需要在所有助手前面加上这个变量,就像这样
var cssHelpers = require('css-helpers.js')
exports.styles = {
winHome: {
backgroundColor: cssHelpers.COLORS.RED,
},
}
这就是为什么我想在应用程序初始化期间将这些基本内容放入Ti.UI。然后,我将在任何地方提供样式帮助器功能。尝试使用applyproperties方法,如果您必须扩展默认对象,这将是推荐的方法。我找到了一个不涉及修改Ti.UI的体面解决方案。这个线索来自于尝试在Android上运行应用程序,发现它在不同部分之间传递的变量更少。因此,我需要深入挖掘CommonJS原则以及require()和Ti.include()的含义 不必在我的CSS助手前面加上他们父母的名字的诀窍如下:
现在,在包含CSS助手的文件中,您可以使用诸如IOS_ANDROID()之类的助手函数,而无需任何前缀。这是因为CSS helpers中的“this”变量指向调用该函数的上下文。我认为扩展Ti对象的做法不好。如果Ti决定使用您正在使用的东西,您将被用软管冲洗。我认为严格使用CommonJS方法很重要,但我认为有时候include是正确的方法。我会寻找另一种方法,而不是扩展Ti对象。你知道这一切都是为了你吗?也许你应该开始向它迁移?我有一个中型到大型的项目,我能够成功地迁移,我没有回头看!