2012-07-05 2 views
4

짧은 버전 Node.js를 : 노드와, 아약스/소켓을 사용하여 하나의 HTML 파일 로딩 페이지 별 데이터를 제공하는 완전히 수행웹 사이트/앱 템플릿 디자인을

템플릿 생성을, 나는 성능의 어떤 종류를 기대해야합니까? 디자인 현명한 좋은 또는 나쁜?

롱 버전

는 더 나은 노드를 코딩하는 학습의 과정에 있어요. 나는 오랫동안 자바 스크립트 팬이었고 현재 node.js의 좋은/나쁜 습관을 파악하려고 노력 중입니다

저는 템플릿 작성에 대해 생각하고 있습니다. 제가 제시하는 것을 어떻게 분리 할 것인지 고심하고 있습니다. 내가 무엇을 저장하고 있는지. MVC 기사를 많이 읽었으므로 지저분한 코드가 없어도 뷰 로직을 분리하고 싶습니다.

내 질문은 : Index, About, Contact, Portfolio :

이의 내가 웹 사이트가 있다고 가정 해 봅시다, 그것은 여러 개의 파일은 '화면'사용자가 볼을 대표 포함,의는 사용자가 볼 수 있어야 기본적인 예에서 가정 해 봅시다.

이제 동적으로로드하기 위해이 페이지가 필요합니다. 즉, 매번이 파일 각각에 대해 템플릿을 업데이트하고 싶지는 않지만 모두 비슷하게 보입니다.

노드가 비동기 작업을 기반으로하기 때문에 모든 노드에 대해 동일한 .html 페이지를 제공하는 것이 얼마나 좋고/나쁘지 않은지, 내가 사용중인 페이지를 기반으로 서버의 모든 데이터를로드해야합니다. AJAX/웹 소켓 사용?

(순진, 이름 = '보기'와 모든 섹션을 통해 루프 ID 또는 이와 유사한하여 컨텐츠 가져 오기)

이, 나는 완전히 페이지의 비동기 로딩을 제공하고, 것입니다 느낌에서 사이트 레이아웃을 분리 나머지 사이트. 이것은 나에게 매우 마주하고, 차단도없고, 모든 것이 비동기적임을 느낍니다. 주제와 관련하여 숙련 된 개발자의 의견을 찾고 있습니다.

또한 node.js를 사용하여 사이트를 구축하는 것과 관련된 모든 정보를 보내 주시면 감사하겠습니다. PHP 배경에서 왔고 디자인 할 때 webmatrix와 비슷한 것을 피하고 싶습니다.

+0

[gor.js 프로젝트] (http://gorjs.org/)를 조사해야한다고 생각합니다. 노드 – MilkyWayJoe

+0

에서 Ember.js (MVC)를 사용합니다. Railway.js와 다른 많은 MVC 프레임 워크를 보았습니다. 나는 주로 기존의 프레임 워크가 아닌 노드 디자인 자체에 관한 제안을 찾고있다. 나는 누군가 다른 사람이 쓴 라이브러리를 사용하기 전에 mvc 패턴을 잘 이해하고 싶다. 감사합니다. –

+0

gmail과 비슷한 윤곽을 그리는 몇 가지 함정 : SEO가 가장 큰 콘텐츠입니다.이 콘텐츠는 거미가 색인을 생성하기가 어려울 것입니다. 사용자의 이메일과 같이 벽에 쌓인 콘텐츠에 더 적합합니다. 또한 네비게이션 사용자를 보존하는 것이 가능하지만 명시 적으로 생각해야합니다 - 북 마킹은 어떻게 작동합니까? 뒤로 버튼은 어때? – Julian

답변

2

"단일 페이지 사이트"이런 종류의와 함정의 몇 :

SEO :이 내용은 인덱스에 거미 어려울 것이다. 사용자의 이메일과 같이 벽에 쌓인 콘텐츠에 더 적합합니다.

탐색 : 브라우저 동작을 유지하는 것이 가능하지만 명시 적으로 생각해야합니다 - 북마크는 어떻게 작동합니까? 뒤로 버튼은 어때?

전통적 방식으로 페이지를 전달하는 것이 더 나을 것입니다 (백엔드 노드에서 템플릿을 렌더링 할 수없는 이유는 없습니다). 그런 다음 클라이언트 코드와 캐시 시스템을 최적화하여 두 번째 페이지가 빠르게로드되도록하십시오. .css 또는 .j를 다시 가져올 필요가 없습니다.

+0

SEO는 분명히 고려해야 할 부분입니다. 이 방법은 웹 앱에는 매우 유용하지만 콘텐츠 기반 사이트에는 적합하지 않습니다. 진입 점이 무엇이든 관계없이 새로운 기록 api를 사용하여 탐색을 유지할 수 있습니다. 앱은 필요한 자원을로드하고 렌더링 할 수 있습니다. 그러나 쉽지는 않다는 점에 동의합니다. 응용 프로그램의 설계/아키텍처 중에 이러한 모든 사항을 고려해야합니다. – SMathew

+0

답변 주셔서 감사합니다. 저는 SEO에 대해서도 생각조차하지 않았습니다. –

1

간단한 개념은 몇 가지 레이아웃 템플릿과 일부 부분 템플릿을 사용한다는 것입니다. 이러한 템플릿을 JS 파일처럼로드합니다 (컴파일 될 때). 컴파일 된 템플릿을 어딘가에 전역 객체로 설정할 수 있습니다 .. App.templates.portfolio = JST [ "templates/portfolio"]. 응용 프로그램에 대해이 작업을 한 번 수행하십시오. 이러한 템플릿은 브라우저의 localStorage, 리버스 프록시 등 어디에서나 캐시 할 수 있습니다.

사용자가 "포트폴리오"를 클릭하면 서버가 JSON을 다시 보내고 브라우저에서 반환 된 데이터를 사용하여 "포트폴리오"템플릿을 컴파일합니다. 서버.

https://github.com/sstephenson/eco/ 은이 목적에 매우 적합합니다. 똑같이 좋거나 더 좋은 많은 사람들이 있습니다. 그것은 모두 개인적인 취향입니다. 옥이 제일 좋아합니다.

대부분의 MVC 프레임 워크에는이 중 하나가 포함됩니다.

간단한 페이지 기반 사이트가있는 경우 노드가 최상의 옵션이 아닐 수 있습니다. 나는 당신이 이미 이것을 알고있을 것이라고 확신합니다.

관련 문제