سؤال

أنا أحاول تنفيذ اياكس في Google App Engine, و لذلك أنا أبحث عن اياكس الإطار من شأنها أن تساعد لي.أي شخص لديه أي فكرة ؟

أنا أفكر في Google Web Toolkit, كم هو جيد من حيث خلق اياكس Google App Engine ؟

هل كانت مفيدة؟

المحلول

كما Google Web Toolkit هو فرعية من جافا أنه يعمل بشكل أفضل عندما كنت جافا في الخلفية أيضا.منذ Google App Engine حاليا بايثون فقط أعتقد أنك يجب أن تفعل الكثير من العبث على الخادم و العميل التحدث بشكل جيد مع بعضها البعض.

مسج يبدو أن الأكثر شعبية مكتبة جافا سكريبت الخيار في اياكس العلامة في DjangoSnippets.com.

تحرير: أعلاه هو صحيح فقط من تطبيقات Google App Engine مكتوبة في بيثون.مثل محرك جوجل التطبيق الآن يدعم جافا ، GWT الآن يمكن أن يكون خيار جيد بالنسبة كتابة اياكس الأمامية. جوجل حتى يكون البرنامج التعليمي يظهر لك كيفية القيام بذلك.

نصائح أخرى

طريقة لطيفة استخدام AJAX المكتبة للاستفادة من جوجل اياكس المكتبات خدمة API.هذا هو قليلا أسرع وأنظف من تحميل شبيبة ووضعه في /static/ المجلد لا يأكل في قرص الحصة.

في جافا سكريبت الخاصة بك كنت قد وضعت للتو على سبيل المثال:

google.load("jquery", "1.3.2");

و/أو

google.load(google.load("dojo", "1.3.0");

في مكان ما في رأس الخاصة بك يمكنك وضع شيء من هذا القبيل:

<script src="http://www.google.com/jsapi?key=your-key-here"></script>

و هذا كل ما كنت بحاجة إلى استخدام API جوجل المكتبات.

هنا هو كيف لقد نفذت اياكس على محرك جوجل التطبيق ، ولكن الفكرة يمكن تعميمها على منصات أخرى.

لدينا معالج البرنامج النصي طلبات اياكس الذي يستجيب -في الغالب - مع سلمان الردود.هيكل يبدو شيئا من هذا القبيل (هذا مقتطف من معيار جي معالج البرنامج النصي):

def Get(self, user):
    self.handleRequest()

def Post(self, user):
    self.handleRequest()


def handleRequest(self):        
    '''
    A dictionary that maps an operation name to a command.
    aka: a dispatcher map.
    '''
    operationMap = {'getfriends':               [GetFriendsCommand],
                    'requestfriend':            [RequestFriendCommand, [self.request.get('id')]],
                    'confirmfriend':            [ConfirmFriendCommand, [self.request.get('id')]],
                    'ignorefriendrequest':      [IgnoreFriendRequestCommand, [self.request.get('id')]],
                    'deletefriend':             [DeleteFriendCommand, [self.request.get('id')]]}

    # Delegate the request to the matching command class here.

أوامر بسيطة تنفيذ الأوامر نمط:

class Command():
    """ A simple command pattern.
    """
    _valid = False
    def validate(self):
        """ Validates input. Sanitize user input here.
        """
        self._valid = True

    def _do_execute(self):
        """ Executes the command. 
            Override this in subclasses.
        """
        pass

    @property
    def valid(self):
        return self._valid

    def execute(self):
        """ Override _do_execute rather than this.
        """ 
        try:
            self.validate()
        except:
            raise
        return self._do_execute()

    # Make it easy to invoke commands:
    # So command() is equivalent to command.execute()
    __call__ = execute

على جانب العميل ، اياكس مندوب.Prototype.js يجعل هذا من السهل الكتابة و فهم.هنا مقتطف:

/** 
 * Ajax API
 *
 * You should create a new instance for every call.
 */
var AjaxAPI = Class.create({
    /* Service URL */
    url: HOME_PATH+"ajax/",

    /* Function to call on results */
    resultCallback: null,

    /* Function to call on faults. Implementation not shown */
    faultCallback: null,

    /* Constructor/Initializer */
    initialize: function(resultCallback, faultCallback){
        this.resultCallback = resultCallback;
        this.faultCallback = faultCallback;
    },

    requestFriend: function(friendId){
        return new Ajax.Request(this.url + '?op=requestFriend', 
        {method: 'post',
         parameters: {'id': friendId},
         onComplete: this.resultCallback
        });     
    },

    getFriends: function(){
        return new Ajax.Request(this.url + '?op=getfriends', 
        {method: 'get',
         onComplete: this.resultCallback
        });    
    }

});

استدعاء مندوب كنت تفعل شيئا مثل:

new AjaxApi(resultHandlerFunction, faultHandlerFunction).getFriends()

آمل أن يساعد هذا!

ليس هناك من سبب لماذا يجب أن لا تستخدم جي و Google Web Toolkit (GWT) معا.يمكنك كتابة كود الخلفية في بيثون و الواجهة البرمجية في جافا (وربما بعض جافا سكريبت) ، ثم جمعت إلى جافا سكريبت.عند استخدام آخر اياكس الإطار سيكون لديك أيضا هذا الفرق بين الخادم و العميل اللغة.

GWT من الميزات التي تجعل البعيد الاحتجاج كود جافا على الخادم أسهل, ولكن هذه هي اختياري تماما.يمكنك فقط استخدام XML أو JSON واجهات, تماما مثل مع اياكس الأطر.

GWT 1.5 كما يأتي مع جافا سكريبت تراكب أنواع هذا الأساس يسمح لك لعلاج قطعة من البيانات JSON مثل كائن جافا عند وضع تعليمات برمجية من جانب العميل.يمكنك قراءة المزيد عن هذا هنا.

تحديث:

الآن أن جوجل قد أضافت دعم جافا Google App Engine, يمكنك تطوير كل من الخلفية والواجهة البرمجية في جافا على جوجل كومة - إذا أردت.وهناك لطيفة الكسوف المساعد من جوجل يجعل من السهل جدا تطوير ونشر التطبيقات التي تستخدم جي, GWT أو كليهما.

أنصح بالبحث في النقي جافا سكريبت إطار (ربما مسج) للحصول على تعليمات برمجية من جانب العميل و الكتابة سلمان الخدمات في بيثون - يبدو أن أسهل / أفضل طريقة للذهاب.

Google Web Toolkit يتيح لك كتابة واجهة المستخدم في جافا و ترجمة ذلك إلى جافا سكريبت.كما ديف يقول ، قد يكون خيارا أفضل من حيث الخلفية في جافا ، كما أنها لطيفة RPC السنانير هذه الحالة.

قد ترغب في إلقاء نظرة على منامة (http://pyjs.org/) ، الذي هو "GWT الثعبان".

حاول أيضا GQuery على GWT.هذا هو كود جافا:

public void onModuleLoad() { 
    $("div").css("color", "red").click(new Function() { 
        public void f(Element e) { 
            Window.alert("Hello"); 
            $(e).as(Effects).fadeOut(); 
        } 
    }); 
} 

يجري كود جافا مما أدى إلى مكلفة إلى حد ما وقت التحويل البرمجي (Java->جافا سكريبت) تحسينات و أسهل إعادة بيع ديون.

لطيفة, لم يكن ؟

مسج مكتبة رائعة ، ولكن أيضا التحقق من نموذج الإطار جافا سكريبت.فإنه يتحول حقا جافا سكريبت من كونه في بعض الأحيان محرجا اللغة إلى جميلة وأنيقة اللغة.

إذا كنت تريد أن تكون قادرة على استدعاء الأسلوب المكالمات من جافا سكريبت بيثون ، JSON-RPC يعمل بشكل جيد مع محرك جوجل التطبيق.انظر جوجل المادة،"باستخدام اياكس لتمكين العميل طلبات RPC"للحصول على التفاصيل.

أنا حاليا باستخدام مسج بي جي إن التطبيق يعمل بشكل جميل بالنسبة لي.لدي مخطط (الرسوم البيانية جوجل) أن ديناميكي يستخدم اياكس دعوة إلى الاستيلاء على سلسلة JSON.يبدو حقا أن تعمل بشكل جيد بالنسبة لي.

جوجل قد أعلنت مؤخرا عن نسخة جافا من Google App Engine.يوفر هذا الإصدار أيضا الكسوف البرنامج المساعد الذي يجعل النامية GAE التطبيقات مع GWT أسهل.

لرؤية التفاصيل هنا: http://code.google.com/appengine/docs/java/overview.html

وبطبيعة الحال ، فإن ذلك يتطلب منك إعادة كتابة التطبيق الخاص بك في جافا بدلا من الثعبان ، ولكن كشخص عملت مع GWT ، اسمحوا لي أن أقول لكم, مزايا استخدام IDE الحديث على اياكس codebase هل يستحق ذلك تماما.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top