alloy와 기존 코드를 함께 쓰는법?

alloy를 좀 배워서 써보려고 하고 있습니다. mvc로 나눠져있어 참 좋은데요, 기존에 혼용되어 있는 예제 예를들면 이런 코드 를 alloy 프로젝트에서 함께 쓰고 싶은데, 어디다 넣어야 할 지 감이 오지 않습니다. 불가능하진 않을 텐데요. 경험있으신 분들의 조언을 구합니다. 감사합니다.

최피디 올림

Ti.inlcude, require 모두 사용이 가능하기 때문에 다양한 방법으로 기존 코드를 사용가능합니다.
최피디님이 첨부한 그런 코드의 경우 저라면 크게 두가지 방법으로 사용할 것 같습니다.

alloy controller로 만들어서 사용하는 방법

window만 존재하는 viewcontroller(rec.js)를 만듭니다. 해당 xml(rec.js)에는 window만 존재하게 합니다. rec.tss에 window 생성시 사용한 스타일만 gist에서 복사합니다. rec.js에서 아래와 같이 구현합니다.

var win = $.getView();
// const value grabbed from
// http://developer.android.com/reference/android/provider/MediaStore.Audio.Media.html#RECORD_SOUND_ACTION
var RECORD_SOUND_ACTION = "android.provider.MediaStore.RECORD_SOUND";
var soundUri = null; // Will be set as a result of recording action.

var recordButton = Titanium.UI.createButton({
top: 10, left: 10, right: 10, height: 35, title: “Record Audio”
});
var labelResultCaption = Titanium.UI.createLabel({
top: 50, left: 10, right:

//중략

//win.open(); //이부분 주석처리하고 나중에 controller에서 getView().open() 형태로 필요할때 오픈.

이렇게 하면 사용은 아래와 같겠죠

var recController = Alloy.createController('rec');
recController.getView().open()

commonjs 형태로 사용

혹시나 쓰려고 하는 코드가 commonjs 형태로 만들어진 모듈이라면 그냥 기존 방법 대로 require해서 사용합니다.^^ 최피디님이 링크건 코드같은 경우를 require형태로 쓰고 싶다면.. 아래와 같이 쓸수 있습니다.

function WindowProxy(){
    var win  = Ti.UI.create..... 소스 전부..
    // win.open() 주석처리
    return win;
}

module.exports = WindowProxy;

사용할 때는

var RecWindow = require('rec');
var recWin = new RecWindow();
recWin.open();

두방법의 차이

viewproxy가 return되는냐 아니냐의 차인데 그건 제가 commonjs모듈 구현해오던 스타일이 웬만하면 viewporxy를 그냥 리턴해서 썼었기에 그런거고 결국 둘다commonjs 모듈로 큰 차이는 없습니다. 그래도 어느 방법이 좋을까 물으신다면 alloy형태로 구현에 한표!
alloy로 해두면 나중에 시간날때 alloy의 사용법에 따라 view와 style을 분리하더라도 그 controller를 사용하는 쪽 소스는 수정하지 않아도 된다는 점이 좋겠죠. alloy가 아무래도 유지보수면에서는 편하다보니 기왕 손대는거 alloy 껍데기를 싸두고 쓰는것이 나중을 위해 좋을 것 같습니다.

주의!! 위 코드는 직접 돌려보지 않고 그냥 작성했습니다. 오타나 syntax에러가 있을 수 있으니 그런 부분 있으면 알려주세요.ㅋㅋ