В настоящее время я работаю над преобразованием огромной CMS из варианта 1 в вариант 3, и все идет хорошо. Мы выбрали визуализацию на стороне сервера, потому что SEO очень важен для нас, и мы хотим, чтобы сайты работали на мобильных телефонах.
Я использую node.js для серверной части клиента и несколько модулей, чтобы помочь мне. Я немного рано в этом процессе, но основа заложена, и это вопрос просмотра данных, чтобы все было правильно. Вот что я использую:
Это ядро стека. Некоторые другие модули, которые я нашел полезными:
Нет, я не использую coffeescript.
Этот вариант работает очень хорошо для меня. Модели на внутреннем сервере не существуют, потому что данные, которые мы получаем от API, хорошо структурированы, и я передаю их дословно внешнему интерфейсу. Единственное исключение - наша модель макета, где я добавляю один атрибут, который делает рендеринг умнее и легче. Я не использовал для этого никакой библиотеки модных моделей, просто функцию, которая добавляет то, что мне нужно при инициализации, и возвращает себя.
(извините за странные ссылки, я слишком много n00b для переполнения стека, чтобы позволить мне публиковать так много)
Хммм ... Я не разработчик iPhone, но ....
Не могли бы вы попробовать создать NSURLRequest с URL-адресом, который вы хотите загрузить? Затем вы можете установить соединение с помощью NSURLConnection.
NSURLConnection имеет метод делегата
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
, который будет передавать ответ от сервера. Обратите внимание, что если вы устанавливаете соединение через HTTP, ответ на самом деле будет иметь класс NSHTTPURLResponse. NSHTTPURLResponse может использоваться для получения статуса с помощью следующего метода экземпляра
- (NSInteger)statusCode
. NSURLConnection имеет другой метод делегата
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
, который можно использовать для получения данных из URL-соединения. Затем вы можете вручную загрузить данные в свой UIWebView, используя:
- (void)loadData:(NSData *)data MIMEType:(NSString *)MIMEType textEncodingName:(NSString *)encodingName baseURL:(NSURL *)baseURL
Это похоже на тонну работы, но это можно сделать. Надеюсь, кто-нибудь другой предложит более простой способ, хотя я его не вижу.
К сожалению, в настоящее время кажется, что лучшим доступным вариантом является использование -stringByEvaluatingJavaScriptFromString: для запуска небольшого скрипта, который запрашивает у документа его код состояния.
А как насчет реализации webViewDidFinishLoad:
в вашем UIWebViewDelegate
и использования запроса
свойства UIWebView для доступа к интересующим вас заголовкам? Примерно так (непроверено):
- (void)webViewDidFinishLoad:(UIWebView *)webView {
NSString* theStatus = [[webView request] valueForHTTPHeaderField:@"Status"];
}