12 Kasım 2009 Perşembe

Python'da Javascript Kodu Çalıştırmak

0

pyv8, Google tarafından geliştirilen ve Google Chrome'da da kullanılan V8 Javascript motoru için yazılmış bir çeşit wrapper. Bu sayede Python programları içerisinde gömülü olarak Javascript kodu çalıştırabiliyoruz. pyv8 V8 API'sini kullanarak çalıştırdığı Javascript kod parçacıklarının sonucu olarak dönen Javascript nesneleri ile Python nesneleri arasında bir köprü kurma görevini yerine getiriyor. Ayrıca Python'da oluşturduğunuz bazı özel sınıfları Javascript'e aktarıp orada kullanmanıza da olanak sağlayabiliyor.

>>> import PyV8
>>> ctxt = PyV8.JSContext()          # bir javascript ortamı oluşturduk
>>> ctxt.enter()                     
>>> ctxt.eval("1+2")                 # javascript kodunu string argümanıyla çalıştırıyoruz
3                                    # dönen cevap bir python integerı
>>> class Global(PyV8.JSClass):      # javascript ile uyumlu bir sınıf
...   def hello(self):               # bir javascript metodu
...     print "Hello World"          
...

>>> ctxt2 = PyV8.JSContext(Global()) # yeni javascript ortamımıza bu sınıfı dahil ettik
>>> ctxt2.enter()                    
>>> ctxt2.eval("hello()")            # artık bu sınıfın metoduna javascript içinde erişebiliriz
Hello World                          # dönen cevap bir python nesnesi

Kütüphane kurulumu ve çalışması için Python haricinde programlara ihtiyaç duyduğu için kaynak dosyadan kurulumu bazı bağımlılıklar gerektiriyor. Bununla ilgili bir belge mevcut: http://code.google.com/p/pyv8/wiki/HowToBuild. Windows kullanıyorsanız çalıştırılabilir kurulum dosyaları ile tek adımda kurulabiliyor.

Javascript kodu yazarken kullandığımız onclick, XMLHttpRequest, window.open, document.url, DOM elementleri gibi özellikler Javascript'in özellikleri değildirler ve bunlar Javascript motorları tarafından sağlanmaz. Bu özellikleri tarayıcılar eklentiler ile sağlarlar. pyv8 ile bu değişkenleri kullanmaya çalıştığınız zaman tanımlı olmadıklarını belirten bir hata alırsınız.