2012-04-20 5 views
0

저는 현재 다양한 응용 프로그램에서 사용할 수있는 응용 프로그램 프레임 워크를 구축하고 있습니다. 이 프레임 워크는 PHP로 작성되었으며 RESTful API를 가지고있다. 프레임 워크에서 jQuery와 내 API를 결합하여 단일 페이지 응용 프로그램을 사용할 수있게하고 싶습니다.backbone.js가없는 SPA

backbone.js를 살펴 보았습니다. 문제는 내가 갖고있는 것과 다른 일부는 본질적으로 js에서 비즈니스 로직을 복제한다는 것입니다. 이것은 코드베이스의 크기를 효과적으로 두 배로 할뿐만 아니라 일종의 보안 위험을 나타냅니다. js에서 비즈니스 로직을 복제하면 악의적 인 사용자의 작업을 훨씬 쉽게 만들어주는 백 엔드가 어떻게 보이는지 전 세계에 알릴 수 있습니다.

그건 분명히 프론트 엔드/js 전문가는 아니지만 나는 정말 심각하게 백본을 보았다. 내 생각에 본질적으로 동일한 것을 수행하는 동적 js 함수를 정의하는 좋은 방법이 있어야합니다. 내가 찾고있는 것은 올바른 방향의 요점이며, 그것이 내가 얼마나 잘못되었는지 말해주고 있습니다.

답변

0

JSON을 통해 모델을 업데이트하기 위해 REST를 사용하는 경우 실제로 애플리케이션에 두 배의 코드가 없습니다. 그것은 정말로 당신이 클라이언트에서 얼마나 많은 일을하고 얼마나 많은 서버에서하고 싶은가에 달려 있습니다. 기본 폼 유효성 검사를 원한다면 클라이언트와 서버에 작성해야합니다.

클라이언트에서 비즈니스 로직을 복제하는 것이 중요하지 않은 것처럼 보입니다. 유효하지 않은 데이터를 제출하면 결국 비즈니스 규칙이 악의적 인 사용자에게 노출됩니다. javascript를 축소하면이를 막을 수있는 길은 멀지 만 대부분의 경우 서버의 클라이언트 및 비즈니스 규칙에 대한 간단한 검증 만 수행하면됩니다. 이것은 내가 (? 희망이) 매우 모든 아약스 호출이 검증 보안에 게시하다고 생각 SEO 친화적 인, SPA 프레임 워크는

├── ajax //~ function calls, posted data must be on the same server 
├── html //~ webroot 
│   ├── css 
│   ├── fonts 
│   ├── images 
│   ├── js //~ js files, including jquery,init,functions,admin,etc. 
│   └── uploads 
    |_ index.php,.htaccess 
├── includes //~ config,functions,router,index.html-the template 

: 내가 만들고 내 SPA의에 대한 다음과 같은 구조를 사용하고

+0

비즈니스 논리에 관해서는 백엔드와 내가 할 수있는 모든 수업을 준비했습니다. 말하자면, backbone.js는 프론트 엔드에서 같은 클래스를 다시 정의해야합니다. 지금까지 프론트 엔드에서 수행하고 싶은 작업 인 경우 js를 통해 동적으로 제어되는 단일 페이지 응용 프로그램이 필요합니다. 이는 양식 유효성 검사보다 훨씬 복잡합니다. 단순히 잘못된 데이터를 제출하면 내 논리가 노출되지 않고 오류 만 반환합니다. –

+0

클라이언트 모델에서 validate 함수를 통해 서비스를 다시 호출하여 서버에서 유효성 검사를 수행 할 수 있습니다. 일반적으로 validate 함수는 모델의 유효성을 검사하는 데 사용되지만 더 많이 사용할 수도 있습니다. 클라이언트 유효성 검사를 원할 경우, 유효성 검사를 수행하기 위해 서버로가는 경우에도 클라이언트에서 유효성을 검사해야합니다. 자체 프레임 워크를 롤링해도 변경되지는 않으며 프로젝트를 수행해야하는 추가 개발자에게는 복잡성이 추가됩니다. –

+0

나는 당신이하려고하는 것이 오해했다고 생각합니다. backbone.js를 사용하지 않고 단일 페이지 응용 프로그램을 구현하는 방법을 찾으려고합니다. 이렇게하려면 js에서 백엔드 코드를 복제해야하기 때문입니다. 솔직히, 나는 당신이 이전에 언급 한 내용에 대해 당신이 무엇을 말하고 있는지조차 확신하지 못한다. –

0

원래 서버 내가 뭔가 뻔뻔스럽게 뭔가를하고있는 경우 누군가가 이것을보고 약간의 통찰력을 가지기를 바랍니다.

관련 문제