2

そこで、私が取り組んできたプロジェクトとプロジェクト管理システムを、標準的な複数ページのアプリケーションから単一ページのアプリケーションに変換することにしました。その過程で、私はいくつかの javascript MV*ish フレームワーク (ember、knockout、backbone など) を検討し、backbone.js を使用することにしました。それが最も柔軟なソリューションと思われ、既にアンダースコアを使用しているためです。ユーティリティとテンプレート システムの両方に js を使用します。

これを行う上で最大の懸念事項の 1 つは、PHP モデルとバックボーン モデルの両方で、モデルとビジネス/ドメイン ロジックのコードが重複する可能性があることです。

これは、このようなアーキテクチャを使用する場合に支払う技術的なコストにすぎませんか、この懸念を軽減するためにできることはありますか?

4

2 に答える 2

3

You may want to take a look at a previous question I answered involving Node.js:

Reusing backbone views/routes on the server when using Backbone.js pushstate for seo/bookmarking

What I'm currently doing right now is using Davis.js + Mustache + Java Spring MVC backened (based on my original question: Single page Web App in Java framework or examples?).

If the browser does not support Pushstate then I have the server do the entire rendering of the page using a Java version of Mustache (ie standard Web 1.0). If the browser does support Pushstate then the browser will make an AJAX request for a JSON version of the model. The model is then rendered client side use icanhz (ie javascript mustache).

This works fairly well if a large part of your logic is getting a model an then rendering it based on specific URL. That is your business logic is "based on some URL I'm going to render this". This is how most of the sites on the web work (including this one which is still rather web 1.0). Obviously this would not work for say something like real time chat or HTML5 game.

A python version of this design is mentioned here: http://duganchen.ca/single-page-web-app-architecture-done-right/

I'm sure someone has done a PHP version.

于 2012-04-17T14:37:58.950 に答える
1

サーバーとクライアントで異なる言語を使用している場合、懸念しているこの部分的なロジックの重複を回避する可能性はないと思います。

サーバーとクライアントで同じコードを確実に使用したい場合は、すべてを唯一の共通言語である JavaScript に移行する必要があります。

サーバーとクライアント間の開発を非常に透過的に統合する複数の JS フレームワークがあります: derbymeteor、...

于 2012-04-17T11:18:13.157 に答える