Git Product home page Git Product logo

woowahanjs's People

Contributors

ahastudio avatar gracefulife avatar ibare avatar insanehong avatar item4 avatar jihyounglee avatar jjcho avatar kaaaang avatar sungyublee avatar woowa avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

woowahanjs's Issues

리듀서와 앱 전역 이벤트 문의

안녕하세요.

리듀서에서 공통 응답 헤더에 따라 실패 처리를 해주고 싶은데 방법을 모르겠네요.
예를 들면 아래와 같은 응답의 경우 요청에 자체를 성공을 한 것이지만 앱에서는 실패로 처리를 하여야 하는데요.

{
  "header": {
    "isSuccessful": false,
    "message": "Error"
  },
  "data": null
}

리듀서의 onSuccess()를 정의하여 처리하려 하여도 리듀서의 소스를 보면 단순히 success 함수의 배열을 차례대로 호출만 해주고 있을 뿐 반환 값의 여부를 보아 실패 처리한다든가 하는 것이 불가능해 보여 방법이 있는 것인지 궁금합니다.

작성하는 동안 this.addError()를 쓰면 되겠다는 생각이 드네요..

또 리듀서의 소스를 보면 fail()과 finish()에서 this.removeAction()를 호출해주고 있습니다.
만약 onSuccess()에서 finish()를 호출하지 않는다면 직접 removeAction() 처리를 해주어야 하는 것인지요?
마찬가지로 onFail()에서 removeAction()를 직접 처리해주어야 하는지요?

그리고 앱 전역 이벤트로 error 이벤트가 발생했을 경우 레이어 팝업으로 표시를 해주려고 하는데요.
팝업 뷰를 정의했다고 했을 때 이 뷰를 동적으로 추가해주려면 어떻게 해야 하는지요?
뷰 내부에서는 this.addView()를 통해 가능한 것으로 보이는데요.
앱의 이벤트 핸들러에서는 어떤 방법이 예제나 설명을 뒤져보아도 보이지 않아서 질문 드립니다.
물론 뷰의 기능을 무시하고 직접 jQuery를 이용하여 조작하여도 되겠지만 방법이 있을지요?
설명에는 토스트 등을 보여주는데 사용할 수 있다고 되어 있는데 구체적인 방법을 알려주실 수 있을지요?

VirtualDOM 지원

Woowahan.View.create('foo', {
    virtualDOM: true
});

형태로 Template 기반의 VirtualDOM 기능 지원

미들웨어 아키텍처 구현

앱 내의 뷰, 리듀서 등 프레임웍을 확장할 수 있도록 추가 기능의 미들웨어가 주입될 수 있는 아키텍처 구현

woowahanjs 1 대 버전에서 리스트 데이터를 랜더링 할 경우 깜빡 거리는 현상

1.현상
woowahanjs 1대 버전에서 콜렉션(배열)을 랜더링 하여 리스팅 할때 화면이 비었다가 리스트가 랜더링 되어 나타나는 현상, 배열의 개수가 적을 때는 유심히 보아야 알아 차릴 수 있지만 많아지면 흰색(비어있는)화면이 눈에 선명하게 보인후
데이터 리스트가 랜더링되어 리스팅됨 깜빡 거리는 느낌으로 랜더링됨

2.짐작되는 원인
개발자도구 퍼포먼스 탭에서 살펴본 결과로는 미들웨어를 처리하는 부분에서 로드가 많이 걸리는 것으로 나타났음
(새로 추가한 미들웨어는 없는 상태에서 woowahanjs 1대 버전에서 발생)

npm run demo-server 수행시 오류가 발생합니다.

저장소상에 server/demo.js 파일이 없습니다.

[email protected] demo-server /Users/sehan/Projects/WoowahanJS
node ./server/demo.js

module.js:440
    throw err;
    ^

Error: Cannot find module '/Users/sehan/Projects/WoowahanJS/server/demo.js'
    at Function.Module._resolveFilename (module.js:438:15)
    at Function.Module._load (module.js:386:25)
    at Function.Module.runMain (module.js:575:10)
    at startup (node.js:160:18)
    at node.js:445:3

npm ERR! Darwin 15.5.0
npm ERR! argv "/usr/local/Cellar/node/6.1.0/bin/node" "/usr/local/bin/npm" "run" "demo-server"
npm ERR! node v6.1.0
npm ERR! npm  v3.8.6
npm ERR! code ELIFECYCLE
npm ERR! [email protected] demo-server: `node ./server/demo.js`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the [email protected] demo-server script 'node ./server/demo.js'.
npm ERR! Make sure you have the latest version of node.js and npm installed.
npm ERR! If you do, this is most likely a problem with the woowahanjs package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     node ./server/demo.js
npm ERR! You can get information on how to open an issue for this project with:
npm ERR!     npm bugs woowahanjs
npm ERR! Or if that isn't available, you can get their info via:
npm ERR!     npm owner ls woowahanjs
npm ERR! There is likely additional logging output above.

npm ERR! Please include the following file with any support request:
npm ERR!     /Users/sehan/Projects/WoowahanJS/npm-debug.log

woowahanjs 1 대 버전과 woowahan-action-player 같이 사용하는 경우 성능문제

  1. 현상
    woowahanjs 1대 버전에서 woowahan-action-player를 import 하여 app.use(actionPlayer) 주입을 하는 경우에(직접 페이지에서 action-player를 사용하지 않아도) 페이지의 리스트가 커텐이 내려오듯 스르륵 하고 랜더링 되는 현상 데이터 개수가 많고 적음에 관계없이 현상이 발생함

  2. 짐작되는 원인
    준호님께서 woowahan-action-player가 추가 되고 미들웨어 처리부분과 관련이 있을 거라고 짐작함

Woowahan.View 변수에 대한 naming convention

프로젝트에 설정된 WoowahanJS 소스와 이곳 Git에 정리된 예제들에서 사용한 변수명 naming convention에 의문이 있습니다. (convention이 맞지 않다고 인지함)

Woowahan.View에 대한 인스턴스 변수는 github에 정리된 예제를 보면 다음과 같이 camel case를 사용하는데, WoowahanJS내 코드를 보면 pascal case를 사용하고 있습니다.

const emptyView = Woowahan.View.create('EmptyView');

어떤 convention을 권장하는지 궁금합니다.

라우팅 변경 시 탐지 방법

안녕하세요.

라우팅 변경 전이나 후에 탐지할 수 있는 방법에 대해 마련되어 있지 않은 것 같아서..
router.js의 라우팅 콜백 함수 내에서 app에 route 이벤트를 발생시키도록 해 보면 괜찮을 것 같은데요.
woowahan.js의 Router.design()을 호출하는 부분에 this를 넘겨야 할 것 같긴 하지만요.

이게 필요한 이유가.. 로그인 상태에 따라서 특정 뷰에 접근을 제한하고 싶은 니즈가 있습니다.
이벤트 핸들러에서 라우팅 변경을 허용한다든지 거부할 수 있으면 좋겠고
혹은 promise를 반환하여 promise 결과에 따라 계속 진행한다든지 하면 좋을 것 같은데요.

현재는 레이아웃 뷰의 viewWillUnmount()에서 처리토록 하였는데 이것보단 라우팅 변경을 탐지할 수 있는 수단이 제공되면 좋을 것 같습니다.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.