За и против с Jaxer

Вы должны заметить, что APPLICATION_ROOT для этой цели НЕ.

Все, что вам нужно сделать, это написать промежуточное программное обеспечение для внесения следующих изменений:

  1. измените PATH_INFO, чтобы обработать префикс url.
  2. изменить SCRIPT_NAME, чтобы сгенерировать префиксный URL.

Как это:

class PrefixMiddleware(object):

    def __init__(self, app, prefix=''):
        self.app = app
        self.prefix = prefix

    def __call__(self, environ, start_response):

        if environ['PATH_INFO'].startswith(self.prefix):
            environ['PATH_INFO'] = environ['PATH_INFO'][len(self.prefix):]
            environ['SCRIPT_NAME'] = self.prefix
            return self.app(environ, start_response)
        else:
            start_response('404', [('Content-Type', 'text/plain')])
            return ["This url does not belong to the app.".encode()]

Оберните свое приложение с помощью промежуточного программного обеспечения, например:

from flask import Flask, url_for

app = Flask(__name__)
app.debug = True
app.wsgi_app = PrefixMiddleware(app.wsgi_app, prefix='/foo')


@app.route('/bar')
def bar():
    return "The URL for this page is {}".format(url_for('bar'))


if __name__ == '__main__':
    app.run('0.0.0.0', 9010)

Посетите http://localhost:9010/foo/bar,

Вы получите правильный результат: The URL for this page is /foo/bar

И не забудьте установить домен cookie, если вам нужно.

Это решение задано gist Larivact. APPLICATION_ROOT не для этой работы, хотя похоже, что это так. Это действительно запутанно.

8
задан 7 revs, 3 users 69% 15 October 2018 в 12:59
поделиться

3 ответа

Я действительно сталкивался с этим набором сравнительных тестов производительности.

Выглядит, как будто Jaxer работает лучше, чем направляющие, но не, а также php...

1
ответ дан 5 December 2019 в 13:02
поделиться

Я не использовал Jaxer очень долго, но здесь являюсь некоторыми вещами, которые я нашел:

Профессионалы

  • Запишите frontend и бэкенд в том же коде. Особенно хороший для записи логики проверки.
  • "Бесшовная" коммуникация Ajax назад к серверу - это точно так же, как вызывает функцию JS.
  • Способность использовать платформы JavaScript как jQuery для управления DOM.
  • Способность генерировать или управлять изображениями с помощью Холста API.
  • Вы добираетесь, чтобы записать Вашему серверу JavaScript с помощью whizzy новые функции JavaScript 1.8 как отдельно оплачиваемые предметы Массива и методы считывания/методы set.

Недостатки

  • Я нашел, что их API был нестабилен (они переходили к 1,0, когда я пробовал его так, чтобы вид имевшего смысла), и документация сбивала с толку, пропавшие без вести, или не соответствовала измененной функциональности. Я также нашел, что было очень трудно отладить мой серверный код Jaxer, и когда я вошел в проблему, сообщения об ошибках не были очень полезны.
  • Вы не получаете реальный MVC или даже MVP (стиль ASP.NET) разделение между Вашей презентацией и Вашей логикой.
  • Я лично не мог получить E4X (xml в JavaScript) работа, которая, как предполагалось, была большим преимуществом.
  • Нет большого количества платформы, созданной вокруг этого для того, чтобы создать целое приложение. Вы запускаете с некоторых довольно основных стандартных блоков.
  • Это действительно не обеспечивает справки в Вашем представлении, поэтому забудьте всю шаблонную обработку или допускающие повторное использование компоненты, которые Вы могли бы использовать в другом месте. Не то, чтобы Вы не можете копировать это, но это более трудно, чем наличие его из поля.

В целом, я думаю, что Jaxer имеет большую часть обещания как постпроцессор перед другой сетью framewok. Было бы замечательно использовать Jaxer для разделения на уровни всего элегантного материала Ajax сверху существующего сайта. Это сделало бы намного легче сделать динамический сайт с проверкой / логика управления страницей совместно использованный сервером и клиентом. Я не думаю, что хотел бы записать приложение с помощью только Jaxer. Кроме того, это молодо (и незрело) - мне будет интересно видеть, где это заканчивается.

12
ответ дан 5 December 2019 в 13:02
поделиться

@BRH: Большое понимание. Я повторил бы всех "Профессионалов" и "Недостатки" 2, 4, и 5 и Ваш заключительный обзор. Я отчасти получаю смысл, что они не намеревались переместить любой рынок для восходящих платформ..., но если они могли бы сделать так и сохранить его столь же трудным и понятным, как это, я надеюсь, что они делают! Мне нравится способ, которым они думают!

P.S. Я не знаю, является ли это новым, но существует a <jaxer:include тег, который вводит фрагменты в страницу до выполнения сценария серверной стороны, которое могло бы быть справкой в некоторых сценариях повторного использования кода. Может быть больше, чтобы я обнаружил вдоль тех строк.

0
ответ дан 5 December 2019 в 13:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: