2016-11-09 2 views
1

Ember 1.7 위에 상당히 큰 앱이 있습니다. 코드의 상당한 부분이 유산이고 우리는 제거하기 위해 리팩토링/리 아키텍처를 원합니다. 목표는 최신 버전의 Ember (이 시점에서 2.9)를 사용하고 Ember 엔진을 활용하므로 나중에 필요할 경우 다른 앱에 앱의 일부를 이식 할 수 있습니다. 이번에는 새로운 기능에 대한 요청이 많지 않으며 기술 업데이트에 투자하는 데 6-8 주가 소요됩니다. 또한이 시간 동안 기존 앱에 몇 가지 기능을 추가해야 할 수도 있습니다. 우리 개발자는 몇 주 동안 다른 작은 프로젝트에서도 작업 할 수 있습니다. Ember 2.x를 사용하는 것이 중요하다고 생각합니다. 2017 년에 마이그레이션을 수행 할 시간이 없을 수도 있습니다. 현재이 옵션은 2 가지가 있습니다 :Ember 1.7에서 Ember 2.9로 마이그레이션

  1. 우리의 머리를 아래로 다이빙하면 마이그레이션과 동시에 리팩토링을하는 최신 엠버로 앱을 다시 빌드하십시오. 새로운 기능이있는 경우 이전 앱에 추가하고 나중에 마이그레이션 할 것입니다.
  2. 리팩터링 (Refactor) 먼저 엠버 1.7 버전에서 리팩토링하고 리팩터링을 완료하면 원치 않는 레거시 코드를 제거하고 마이그레이션합니다. 앱에 더 많은 기능을 추가해야하는 경우 리팩토링 프로세스 중에 추가 할 수 있습니다. 리팩토링을 완료하면 새로운 기능에서 앱을 고정시킵니다.

첫 번째 방법은 리팩토링과 마이그레이션으로 인해 제어가 어려울 수 있습니다. 그러나 일이 잘되면 짧은 시간에 끝날 수 있습니다.

나중에 접근하면 훨씬 안전합니다. 마지막에 시간이 없으면 코드 기반이 향상됩니다. 그리고 시간이있을 때마다 우리는 이주를 위해 다시 올 수 있습니다. 그러나 ember 2.x로 마이그레이션 할 때 다른 리팩터링을해야 할 것이므로 시간이 오래 걸릴 것입니다. 그리고 우리는 마이그레이션을위한 시간을 결코 가질 수 없으며 Ember 1.7에 영원히 붙어 있습니다.

우리는 리팩토링하고 앱의 작은 덩어리를 엠버 엔진 또는 더 작은 엠버 애플 리케이션으로 마이그레이션하는 세 번째 접근법을 찾으려고합니다. 그리고이 작은 엔진/앱을 기존의 대규모 레거시 앱에 삽입하십시오. 그러나 Ember 1.x 앱에서 Ember 2.x를 사용할 수 있다고 언급 한 곳을 찾을 수 없었습니다.

우리의 목표에 도달 할 수 있다는 아이디어, 제안, 팁 힌트는 정말 감사하겠습니다. 한 가지 더, RequireJS를 사용하는 기존 앱. 사실

답변

2

나는 당신이 두 개의 마이그레이션에 대해 생각해야한다고 생각 :

  • 마이그레이션 ember 2.9에,
  • ember-cli

내가 생각하는 가장 중요한 질문에 대한 마이그레이션, 그것은 경우 하나의 짧은 단계에서 ember 1.13으로 이동할 수 있습니다. 이는 개인 API의 사용에 따라 크게 달라집니다. 몇 시간 후에 ember 1.13으로 이동하면 첫 번째 단계가되어야합니다.

약세가없는 1.13 앱을 사용하는 경우 실제로는 2.x으로 바로 이동할 수 있습니다. 따라서 여기서 비추천의 수는 필요한 노력을 평가하는 데 도움이됩니다.


이제는 ember-cli으로 점프합니다. 당신이 모든 단일 파일을 터치해야하기 때문에 이것은 아마도 ember 2.9로 점프 훨씬 더 어려울 것입니다!최대한 빨리이 작업을 수행하는 것이 좋습니다 (1.7 또는 1.13). 그러나 이것이 좋은 생각이라면 당신과 당신의 팀 동료의 지식에 달려 있습니다. 1.x 단계에서 ember-cli에 대한 지식이 있다면 시도해 볼 수 있습니다. 그것이 없다면이 지식을 얻는 것이 어려울 수 있습니다. 왜냐하면이 인터넷은 얼지 않기 때문입니다. 그 이후로 많은 변화가있었습니다.


당신이 리팩토링을위한 좋은 지적이야 모든 중단 된 제거 ember-cli1.13에 응용 프로그램을 얻을 수 있다면. 지나치게 리팩토링하지 마십시오. 2.9으로 이동하여 나중에 리팩토링하십시오. 이러한 여러 단계의 업그레이드가 당신을 위해 할 수없는 경우


, 그러나 나는 당신이 그와 함께 많은 시간을 절약 할 수 있다는 의심 옵션이 ember-islands 같은 것들이 있습니다 1. 추천 할 것입니다.

아마도 나는 최대한 리팩토링과 가능한 많은 코드 재사용으로 2.9에있는 앱을 다시 작성하려고합니다. 나중에 엔진에 대한 리팩토링을 시작하십시오.