Meteor에서 CoffeeScript 파일을 클래스 단위로 분할
4420 단어 MeteorCoffeeScript
CoffeeScript를 클래스 단위로 분할
Meteor는 전체 스택의 PaaS이며 클라이언트와 서버 모두 JavaScript를 사용할 수 있는 간편한 프로그래밍 환경입니다. 소규모의 앱이라도 이것 기능을 추가해 가는 동안에 코드량이 늘어나기 때문에 컴팩트하게 쓰기 위해서도 CoffeeScript 를 사용하고 싶은 것입니다. Coffee 사용한다면 클래스 단위로 파일 분할하여 전망을 좋아하고 싶습니다.
Meteor 에서는, 클라이언트와 서버의 코드보다 외측의 스코프에 클래스의 인스턴스를 생성하면(자) 파일을 넘어 참조할 수 있는 것 같습니다. 파일 결합하여 JavaScript로 컴파일하기 때문입니다.
이것을 이용해, 분할한 파일에 클래스 정의와 인스턴스화의 코드를 써 클래스의 초기 메소드를 메인 파일로부터 부르면 OK였습니다. 클래스 정의가 필요하지 않은 객체 등은 한 곳에 정리할 수도 있습니다.
덧붙여 「클래스 단위」라고 쓰고 있습니다만, 라이프 사이클의 짧은 클래스나 어떠한 클래스에 집약되는 클래스는, 팩토리나 집계 루트의 클래스 파일안에서 정의해, 그러한 팩토리나 집약 클래스내에서 생성하도록(듯이) 하면 메인의 클래스로부터는 은폐할 수 있고, 다른 클래스 파일로부터는 단순한 오브젝트 취급으로 할 수 있습니다.
파일을 분할하면 메인 파일에서 클래스의 메서드를 호출해야합니다. Context 계열의 클래스라면
HogeContext.coffee
class HogeContext
setUp: ->
@status = new HogeStatus ({
: # createContext
})
:
@hogeContext = new HogeContext
와 같이, 초기 구축에 어울리는 메소드 정의를 할 수 있고, 메인으로부터 불리는 것은 자연입니다만, 보통의 클래스는 조금 일부러 부르는 메소드를 정의하는 것이 미묘합니다. 하늘의 초기화 메소드에서도 만들어 불러 두면 좋을 것입니다.
Fuga.coffee
class Fuga
initialize: ->
: #nop
@fuga = new Fuga
메인의 파일로부터는, 각 클래스의 초기화 메소드를 적절한 순서로 호출합니다.
Main.coffee
if Meteor.isClient
Meteor.startup ->
HogeContext.setUp()
Fuga.initialize()
if Meteor.isServer
Meteor.startup ->
:
파일 분할의 단점
파일 분할의 단점으로
전자는 예를 들어
TicketStatus =
NEW : 0
ASSIGNED : 1
CLOSED : 2
와 같이 정의해 Ticket 객체의 속성으로 설정하거나 해 사용합니다만, 여러가지 파일로부터 참조하고 싶은 경우는, 글로벌한 인스턴스로서 취급할 수 밖에 없습니다.
후자는 예를 들어
HogeFactory.coffee
class HogeFactory
@createHoge: ->
:
hoge
hoge = HogeFactory.createHoge()
와 같이 사용할 수 없게 된다고 하는 것입니다만, Factory 의 인스턴스를 생성해 메소드의 정의로부터 @
를 제외하는 것만이므로 그다지 유감이 아닙니다.음, 이것들은 전망이 나쁜 것에 비하면 사소한 문제라고 말할 수 있을 것입니다.
Reference
이 문제에 관하여(Meteor에서 CoffeeScript 파일을 클래스 단위로 분할), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kondoumh/items/91fb25da0116a3da3159텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)